NTTグループの安心オンラインストア  NTT-X Store 全品送料無料


Puppy Linux で日本語ファイル名が扱えるファイルサーバ運用2010/11/14 20:31

Puppy v431jp qs3 で、NTFS-HDDをSambaサーバ運用した際の備忘録

 ・2000年頃のかなり古いPCでも軽量・機敏な動作をするPuppy Linux
 ・日本語ファイル名でも読み書きアクセス可。

【まとめ】
○ホスト名の変更(LAN内でPuppyを複数PC立ち上げる場合のみ)
 Samba参照時のPCのホスト名(nodename)を変更する。
 # uname -n ←現在の参照されるPC名確認
  puppypc ←DefaultのPC名

 # vi /etc/hostname
  puppysambaserver ←修正
  ~~~~~~~~~~~~~~~~~~~
 # vi /etc/hosts ←これも同様に修正
  127.0.0.1 localhost puppysambaserver ←修正
               ~~~~~~~~~~~~~~~~~~
 # uname -n ←現在の参照される修正したPC名確認
                    (PCを再起動後に有効)

○ファイアウォールのポート開け
 ┌設計方針───────────────────┐
 │udp
 │ 137(netbios-ns)
 │ 138(netbios-dgm)
 │tcp
 │ 139(netbios-ssn)
 ├───────────────────────┤
 │ (901もあけてswatで管理)
 │ <参考> swat起動 http://192.168.24.31:901/
 │  SWATは使用せずですんだので未導入
 └───────────────────────┘

 スタート⇒セットアップ⇒ファイアウォールウィザードで、デフォルト(全て
のポートを閉じる)を選びOK、
 以降すべてOK押してファイアウォール環境設定ファイルの作成*1・恒久的なサ
ービス開始環境*2を作成する。
       *1: /etc/rc.d/rc.firewall スクリプトファイルの自動作成
       *1: /etc/rc.d/rc.local ファイルの自動修正

 次に、
 スタート⇒セットアップ⇒ファイアウォールウィザードで、カスタムを選びOK
 other(リストにない他のポート)で、*マーク(Spaceキー押す)付けてOK押し、

   ポートのオープンで
       139/tcp 137/udp 138/udp

   ポート設定 139/tcpで
       Specifyを選択し、
       192.168.24.0/24

   ポート設定 137/udpで
       Specifyを選択し、
       192.168.24.0/24

   ポート設定 138/udpで
       Specifyを選択し、
       192.168.24.0/24

   インターネット接続の共有で、
       <NO>
              参考<yes>の場合
              内部インターフェースのリストで、
               eth0

              ダイアルアップの情報で、
               <No>

   信頼できるネットワークについてで、
       192.168.24.0/24

   システム設定のテストで、
       <YES>

   ファイアウォールのインストールで、
       <YES>

   Press ENTER key to quit: ENTERキー押す
   「/etc/rc.d/rc.firewall start」 ←メッセージ表示


○[root]のパスワードxxxxを設定(passwdコマンド)

○[samba-3.0.26.pet]をインストール。petパッケージマネージャからOn-Line
で入手可能。

○設定済みの[smb.conf]ファイルを[/etc/opt/samba/smb.conf]へ上書きCopy

○smbpasswd -a root で共用フォルダへアクセスするユーザー名rootとパスワ
ードxxxxを設定

○ntfsのHDDマウントとsamba起動のスクリプト[start-samba]を[/root/Startup]
フォルダへCopy
 Xを起動しない場合は、スクリプト[start-samba]をCUI端末から手動で起動する。
 ┌───────────[start-samba] ───────────────┐
 │#!/bin/sh
 │# mkdir /mnt/sda1
 │mkdir /mnt/sda2
 │# mount -t ntfs -o iocharset=utf8,umask=0222 /dev/sda1 /mnt/sda1
 │mount -t ntfs -o iocharset=utf8,umask=0222 /dev/sda2 /mnt/sda2
 │# ln -s /mnt/sda1 /root
 │# ln -s /mnt/sda2 /root
 │killall smbd
 │killall nmbd
 │/opt/samba/sbin/smbd -D -s /etc/smb.conf &
 │/opt/samba/sbin/nmbd -D &
 └─────────────────────────────────┘

○PCを再起動させてSambaサーバを運用する。
 ps -axu | grep smbd でsmbdプロセスが2つ動いていること。
 ps -axu | grep nmbd でnmbdプロセスが1つ動いていること。
 もっとたくさん動いている場合は、killall smbd, killall nmbd で全ての
sambaプロセスを殺し、再度smbd,nmbdを手動で起動。

○BOOTメニューを、Xを起動しないCUIベースの起動をデフォルトにしておくと
 Keybord,Mouse,Displayを接続しないで運用できるようになり、CPU負荷も激
 軽減できる。
 この際、他PCからCUIでサーバメンテできるように[SSH]サーバ機能を導入して
 おく。⇒ openssh-5.1p1.pet
 か、
 GUIでサーバメンテできるように[x11vnc_server]サーバ機能を導入しておく。
 ⇒ x11vnc_server-0.9.4B.pet


【まとめ】End---------------------------













┏━━━━━━━━━━━━━━━┓
┃Sambaファイルサーバ機能の導入 ┃
┗━━━━━━━━━━━━━━━┛

・passwdコマンドでアカウント[root]のパスワード設定。Defaultは設定なし。

・sambaパッケージインストール

 メニュー⇒セットアップ⇒PETgetパッケージマネージャを起動し、
 samba-3.0.26.pet をインストール。

・[/etc/opt/samba/smb.conf]ファイルの編集
 --------------------------------------------------------------------
 [global]
 workgroup = MSHOME●
server string = puppysambaserver●

#【ホスト単位の外部からの防御】#
hosts allow = 127.0.0.1 192.168.24.0/24●
hosts deny = 0.0.0.0/0●
#【インタフェースの外部からの防御】#
interfaces = eth* lo●
bind interfaces only = yes●


 #【日本語ファイル名がWindowsから見えないことがある対処】#
unix charset = UTF-8●
dos charset = CP932●
display charset = UTF-8●

log file = /var/log.%m
max log size = 50

security = user

dns proxy = no

##
## Printing
##
; load printers = yes ←コメントアウト●

[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S

;[printers] ←コメントアウト●
;comment = All Printers ←コメントアウト●
 ; (  ←コメントアウト●
 ; 省略 ←コメントアウト●
 ;  ) ←コメントアウト●
;printable yes ←コメントアウト●

[share]●
comment = share contents●
path = /mnt/sda2●
writable = yes●
public = yes●
share modes = yes●
force user = root●

 ---------------------------------------------------------------------
保存して終了


・smbpasswd -a [username] で共用フォルダへアクセスするユーザー名とパス
 ワードを設定

# smbpasswd -a root を実行する。

・Linux PCのファイアウォールのポート開け

 ・設計方針
  udp
   137(netbios-ns)
   138(netbios-dgm)
  tcp
   139(netbios-ssn)

   (901もあけてswatで管理)
   <参考> swat起動 http://192.168.24.31:901/
    SWATは使用せずですんだ。

 ・スタート⇒セットアップ⇒ファイアウォールウィザードで、カスタムを選びOK
  other(リストにない他のポート)で、*マーク(Spaceキー押す)付けてOK押し、

  ポートのオープンで
   139/tcp 137/udp 138/udp

  ポート設定 139/tcpで
Specifyを選択し、
   192.168.24.0/24

  ポート設定 137/udpで
Specifyを選択し、
   192.168.24.0/24

  ポート設定 138/udpで
Specifyを選択し、
   192.168.24.0/24

  インターネット接続の共有で、
<NO>

信頼できるネットワークについてで、
   192.168.24.0/24

システム設定のテストで、
<YES>

ファイアウォールのインストールで、
<YES>

Press ENTER key to quit: ENTER押す
「/etc/rc.d/rc.firewall start」 ←メッセージ表示


 ・開いたポートとデーモンの確認
  シェルを開き次のように入力します:

   nmap localhost

  ここで開かれているポートが見られます。
  もしホームネットワークのない自宅でパピーを使っているのなら、すべての
  ポートを閉じておいて下さい。
  サービス X11 は、グラフィカルな出力に必要なので開けておいて下さい。

  次のコマンドですべての稼動しているデーモンが表示されます:

   netstat -anp --ip

  これで稼動中のデーモンが見られます。
  もし自宅でパピーを動かしているなら(X11以外の)デーモンは動かしては
  いけません。

  Shields Up!( https://www.grc.com/x/ne.dll?bh0bkyd2 ) と言うウェブ
  サイトでファイアウォールのテストができます。
  ページをロードして「Proceed」ボタンをクリックして下さい。



+------
|
|  ◆外部ネットワークのルータで、上記ポートをアクセスを拒否しておくこと!
|  ◆また、次の防御策をとるのがベター
|
|  【ホスト単位の防御】
|    多くの場合、インストールされた Samba は外部ネットワークからの脅威に
|   さらされている。Sambaのデフォルトでは任意のホストからの接続が許可され
|   る。これはインターネットに直結されているホスト上で脆弱性のある Sambaを
|   実行していた場合、脆弱性が顕在化してしまっているということに他ならない。
|   この問題に対処する最も簡単な対処策は、Samba の設定ファイルである
|   smb.conf 中に「hosts allow」と「hosts deny」オプションを設定することで、
|   サーバに対する接続を特定の範囲のホストに限定してしまうことである。
|   一例を以下に示す:
|
|     hosts allow = 127.0.0.1 192.168.2.0/24 192.168.3.0/24
|     hosts deny = 0.0.0.0/0
|
|   上記では、SMB 接続を「localhost(自身)」と 192.168.2 と 192.168.3 という
|   二つの内部ネットワークのみに限定している。それ以外のホストからの接続は
|   クライアントがパケットを送出した瞬間に拒否される。
|   拒否される場合、「not listening on called name」というエラーが返却される。
|
|  【インタフェースの防御】
|    Samba のデフォルトでは、システム上に存在する任意のネットワークからの
|   接続が許可される。これは ISDN 網や PPP を経由してインターネットに接続し
|   ている場合、Samba はこれらの回線を経由した接続を許可してしまうということ
|   である。これは望ましいことではないだろう。
|   この挙動は、以下のようなオプションを設定することで変更することが可能である:
|
|     interfaces = eth* lo
|     bind interfaces only = yes
|
|   上記の設定により、Samba は eth0、eth1 のように「eth」ではじまる名称のイン
|   タフェースと「lo」というループバックインタフェースからの接続のみを
|   待機(listen)するようになる。この名称については、利用している OS に応じて
|   適切なものを指定する必要がある。上記の例では Linux で一般的なイーサネット
|   アダプタを例示している。
|
|   上記の設定を行っている際に、誰かが「ppp0」という PPP インタフェース経由で
|   ホストに SMB 接続を行おうとした際には、TCP コネクション拒否の応答が返却
|   される。この場合 Samba のコードは全く動作せず、OS がそのインタフェース経由
|   での接続はどのプロセスに対しても許可されていないという応答を行う。
|
|  【ファイアウォールの利用】
|    多くの場合、外部のネットワークへの公開が望ましくないサービスへのアクセス
|   を拒否するためにファイアウォールが利用されている。可能な限り、前述した対処
|   策と併用することで、万一ファイアウォールが無効になった場合でも防御を行える
|   ようにしておくことを推奨はするが、ファイアウォールの利用は妥当な対処策であ
|   る。ファイアウォールの設定を行う際には、どの TCP および UDP のポートを遮断
|   する必要があるかを知っておく必要がある。Samba は以下のポートを使用している。
|
|      UDP/137  - nmbd が使用
|      UDP/138  - nmbd が使用
|      TCP/139  - smbd が使用
|      TCP/445  - smbd が使用
|
|   最後の445ポートについて、古いファイアウォールの設定では考慮されていない
|   場合が多いため注意すること。
|   このポートは最近用いられているプロトコルでのみ利用されている。
|
|
+---<参考>----------------------------------------------------------------
| ------以下コマンドでも良い?----- 未確認
|  /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.1.0/24 -p udp --dport 137:138 -j ACCEPT
|  /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp --dport 139 -j ACCEPT
| --------------------------------
|  CentOSをファイルサーバに
|  LAN内にファイルサーバが一台くらい無いと不便なので、CentサーバにSambaを入れて
|  ファイルサーバにする。
|  設定は、SWATを使ったので簡単だ。もちろん、901番ポートを開けるのを忘れずに・。
|  で、設定完了後、Sambaを起動(smbdとnmbd)するが、Windowsから見えない(アク
|  セスできない)。
|  ファイアウォールだと思い、TCPの139番と445番を開ける。・・・でも見えない。
|  色々調べた結果、開けなきゃならないポートは、
|  ・TCP 137番
|  ・UDP 137番
|  ・UDP 138番
|  ・TCP 139番
|  ・TCP 445番
|  ・UDP 445番
|  だった。・・・で、iptablesで設定して完了。
|  問題なくWindowsからアクセスできるようになった。
+--------------------------------------------------------------------------


・PC起動時、NW共有するHDDを自動マウントさせ、共有トップフォルダのhome(/root)へ
 自動Symbolikし、Sambaデーモンを自動起動(未設定)
┌─Linux 起動時に行うには /etc/fstab に記述───────┐
│[/etc/fstab]に以下を追加
│ /dev/sda1 /mnt/sda1 ntfs iocharset=utf8,umask=222 1 0
│ /dev/sda2 /mnt/sda2 ntfs iocharset=utf8,umask=222 1 0
└────────────────────────────┘

[/root/Startup/start-samba](新規作成し実行権を付けておく)に以下を記述
X起動時に毎回実行されるので注意。
#!/bin/sh
# mkdir /mnt/sda1
mkdir /mnt/sda2
# mount -t ntfs -o iocharset=utf8,umask=0222 /dev/sda1 /mnt/sda1
mount -t ntfs -o iocharset=utf8,umask=0222 /dev/sda2 /mnt/sda2
# ln -s /mnt/sda1 /root
# ln -s /mnt/sda2 /root
killall smbd
killall nmbd
/opt/samba/sbin/smbd -D -s /etc/smb.conf &
/opt/samba/sbin/nmbd -D &



・ホスト名の変更

 Samba参照時のPCのホスト名(nodename)を変更する。
  # uname -n ←現在の参照されるPC名確認
puppypc ←DefaultのPC名

  # vi /etc/hostname
puppysambaserver ←修正
~~~~~~~~~~~~~~~~
  # vi /etc/hosts ←これも同様に修正
127.0.0.1 localhost puppysambaserver ←修正
~~~~~~~~~~~~~~~~
  # uname -n ←現在の参照される修正したPC名確認(PCを再起動後に有効)


・Sambaデーモンの手動起動方法<参考>
# /opt/samba/sbin/smbd -D (または smbd -D -s /etc/smb.conf)
# /opt/samba/sbin/nmbd -D

+-----未設定-----------------------------------------
| ・PC起動時のプログラム自動実行登録
|
| [/root/.xinitrc] ←はX起動時に毎回実行される
| /opt/samba/sbin/smbd -D -s /etc/smb.conf &
| /opt/samba/sbin/nmbd -D &
| の2行を、最終の exec jwm ウィンドマネージャ
|             起動の手前に追記
|
| ([/etc/rc.d/rc.local]ファイルに起動プログラムを記述する。)
|     ↑IP取得TimingによってGUIモードへ行かずCUIモードでBoot停止する場合あり。
| sleep 10
| /opt/samba/sbin/smbd -D -s /etc/smb.conf &
| /opt/samba/sbin/nmbd -D &
+----------------------------------------------------

PCを再起動させる。

-----------------------------------------------------
smb.conf を変更したら。Sambaデーモンを再起動。
 # /opt/samba/sbin/smbd restart
sweet-stock

















茶の環