新トップページへ | Tip

sambaの設定

LstUpdate : 12/08/11

sambaを使い、ファイルサーバを構築します。
以下の環境で、sambaをセットアップしたときの情報を元に書いてます。

CentOS6.2(64bit)
sambaのバージョン : 3.5.10-125.el6

sambaはいろんなことができますが、ここでは、以下の方針でいきます。

・認証はローカル認証(security = user)のみ
・ファイルサーバー上のパーミッションは、グループで管理(登録するユーザーは全員おんなじグループに入る)

・・・というのが、私の自宅のローカルなファイルサーバーの設定です・・・w


もくじ

(1) インストール
(2) ログインユーザーの登録
(3) 設定ファイルを編集
(4) アクセスしてみる


(1) インストール

以下のコマンドでインストール

yum install samba

これだけでOK。

(2) ログインユーザーの登録

sambaはいろいろな認証方式に対応しています。
ここでは、最も単純(?)で、1台のサーバーだけで完結するローカル認証(この呼び名でいいのかは不明w)を扱います。

ログインユーザを登録します。登録するユーザーは、Linux上にアカウントがないとだめ。なので、アカウントを作るところからやります。
以下のコマンドでalctailというユーザーをLinux上に作成し、sambaにパスワードを登録しています(なので、sambaでパスワードを求められたら)。

・ファイルサーバーアクセス用のグループを作成

groupadd alctail_group

・Linux上のアカウントを作成

useradd alctail

・alctailをalctail_groupに所属させる(これは、「(3) 設定ファイルを編集」でやるファイルのパーミッション上の理由。ほかの運用方法ならこんなことする必要はない)

usermod -G alctail_group alctail

・上記で作成したユーザーのsamba上のパスワードの登録

pdbedit -a -u alctail
上記コマンドを実行すると、パスワードを尋ねられますので、入力します。

(3) 設定ファイルを編集

sambaの設定ファイルを編集します。編集するファイルは以下のものです。

/etc/samba/smb.conf

既存のsmb.confファイルはやたらめったら長いですが、コメントが大半です。子面倒なので、全部削除して、書き直すでもよいかと。

設定例:

[global]
        dos charset = CP932
        display charset = UTF-8
        workgroup = ALCTAIL_GROUP
        server string = miranda file server(samba %v)
        log file = /var/log/samba/log.%m
        max log size = 50
        unix extensions = No
        load printers = No
        disable spoolss = Yes
        hosts allow = 127., 192.168.11.

[FileServer]
        comment = miranda file server
        path = /files/fileserver
        guest ok = no
        writable = yes
        printable = no
        valid users = @alctail_group
        force group = alctail_group
        create mask = 0660
        directory mask = 0770

[global]の項目について。

windowsからアクセスする場合、「dos charset」と「display charset」の設定を上記にしないと文字化けするらしい。
「workgroup」には、好きな文字列を。ファイルサーバーにアクセスするwindows機のWORKGROUPはここに書いたものを設定する(必須ではないです)。
「hosts allow」を設定することで、接続元のIPアドレスを制限できます。制限不要の場合、コメントアウトすればよいかと。
ほかはデフォルトでよいかと思います。プリンター関連の設定はすべてOFFにしています(プリンターは使わないので)

[FileServer]の項目について

このFileServerと書いてある文字列は任意です。好きな名前にしてしまってよいです(クライアントがアクセスするとき、この名前でアクセスすることになる)。
pathのところで、ファイルサーバーとして公開するディレクトリのパスを指定します(ここでは「/files/fileserver」としている)。
alctail_groupに属する人しかアクセス出来ない。
ファイルの読み書きには認証が必要。
作成したファイルのパーミッションは常に0660、ディレクトリは0770になる。
というような設定です。

このあたりは、マニュアルをみながら、決めていくとよいと思います。

設定ファイルが書き終わったら「testparm」というコマンドでsmb.confの内容があっているかの確認ができます。
以下が例です(testparmコマンドを打ってから、一度enterキーを押下する必要があります。「Press enter to see a dump of your service definitions」のあたりでいったん出力が止まる)。

[root@miranda samba]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[FileServer]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        dos charset = CP932
        display charset = UTF-8
        workgroup = ALCTAIL_GROUP
        server string = miranda file server(samba %v)
        log file = /var/log/samba/log.%m
        max log size = 50
        unix extensions = No
        load printers = No
        disable spoolss = Yes
        hosts allow = 127., 192.168.11.

[FileServer]
        comment = miranda file server
        path = /files/fileserver
        valid users = @alctail_group
        force group = alctail_group
        read only = No
        create mask = 0660
        directory mask = 0770

設定ファイルがOKになったら、「service smb start」などとして、sambaのサービスを起動します。

(4) アクセスしてみる

windows機からの場合はエクスプローラから「\\<sambaを動かしているサーバのIPアドレス>\<smb.confで設定した[FileServer]の値>」でアクセスすると、IDとパスワードを求められます。入力してやると、アクセスできるはず。
Linux機からの場合は、一番簡単だと思われるのはファイルサーバーのディレクトリをマウントする方法。以下のコマンドで可能。

mount -t cifs -o username=alctail //192.168.11.33/FileServer /mnt

このコマンドで以下のようなエラーが出る場合、cifs-utilsをインストールすればOKみたい。「yum install cifs-utils」でインストールしてから再実行。

[root@chiki ~]# mount -t cifs -o username=alctail //192.168.11.33/FileServer /mnt
mount: block device //192.168.11.33/FileServer is write-protected, mounting read-only
mount: cannot mount block device //192.168.11.33/FileServer read-only