Samba設定

CentOS5.2設定 - 常水商会::よしなしごと より分家
φ(..)メモメモ...

Samba

  • バージョン:Version 3.0.28-1.el5_2.1
  • 設定ファイル群:/etc/samba/
    • lmhosts
    • passdb.tdb
    • secrets.tdb
    • smb.conf:Samba設定ファイル
    • smbusers
  • べからず集2008 ※以下引用
  • 設定(smb.conf)
    • SWATのwizardを使ってざっくりと設定
    • スタンドアロン、DCに参加しない、DCにならない
    • プリンタ共有は使わない
    • ユーザーごとのHOMEディレクトリを使用
    • ゲストOKの共有ディレクトリを設定(hosts.allow設定)

こんな感じ

[global]
	workgroup = XXX
	server string = Samba %v
	passdb backend = tdbsam
	username map = /etc/samba/smbusers
	ldap ssl = no

[homes]
	comment = Home Directories
	valid users = %S
	read only = No
	browseable = No

[public]
	comment = Public Directories
	path = /home/public/
	read only = No
	guest ok = Yes
	hosts allow = 127.0.0.1, 192.168., xxx.yy., xxx.yz.
ゴミ箱を追加する(Samba3.0 以上)

smb.confのglobalセクションに以下のオプションを追加する(引用元

[global]
(省略)
    vfs objects = recycle
(省略)

更にゴミ箱のオプションを設定するために、smb.confの共有ディレクトリセクション(homeやpublic等)に以下のオプションを追加する(引用元

(省略)
    recycle:repository = .Trash/%u
    recycle:keeptree = yes
    recycle:versions = yes
    recycle:touch = yes
    recycle:maxsize = 0
    recycle:exclude = *.tmp *.temp *.o *.obj ~$* *.~??
    recycle:exclude_dir = /tmp|/cache
(省略)

上記で指定できるオプション内容は以下の通り

オプション 内容
recycle:repository 削除されたファイルの移動先ディレクトリ
recycle:keeptree ディレクトリ構造を維持してごみ箱に移動するか否か
recycle:versions 同名のファイルがごみ箱にある場合、別名(「Copy #x of ファイル名」)で保存するか否か
recycle:touch ファイルがごみ箱に移されたときに、ファイルのアクセス日を変更するか否か
recycle:maxsize ごみ箱に移動するファイルの上限をbyte数で指定
recycle:exclude ごみ箱に移動せず即座に削除するファイルを指定
recycle:exclude_dir 指定したディレクトリからファイルが削除された場合、ごみ箱に移動せず即座に削除
recycle:noversions recycle:versionsの反対。両方のオプションを設定すると、こちらが優先される

以上で以下のような挙動になることを確認

  • Windows側からファイルを削除すると、.Trashディレクトリにファイルが異動する
  • ユーザーHOMEの.Trashには、削除されたファイルを直接移動する
  • 共有ディレクトリ(複数ユーザーがアクセスできるディレクトリ)の.Trashには、ユーザー名のディレクトリを作成してファイルを移動する => (ユーザー名)/(削除されたファイル)

共有ディレクトリのゴミ箱のアクセス権限問題に対する対処法(暫定)

共有ディレクトリの.Trashディレクトリは事前に作成した上でパーミッションを777に変更しておく

  • .Trashディレクトリが存在しないと、最初にファイルを削除したユーザーの読み書き権限でディレクトリを作成し、アクセス権限の問題で別のユーザーのファイルが.Trashに移動出来ないため
  • 766, 744では.Trashに移動できないことを確認
リモートのWindows共有ディレクトリをマウントする方法
remote Windows machine winbox
share name on winbox getme
username sushi
password yummy
mount point /mnt/mymount
  • CentOSには smbmount コマンドが存在しない
  • あらかじめマウントポジションを作成しておく
  • 場所はどこでもいい。/mnt/ 以下に作るのが一般的
# mkdir /mnt/mymount/
  • 手動でmountする方法
# mount -t cifs -o user=sushi,password=yummy //winbox/getme/ /mnt/mymount/
  • boot時に自動的にmountする方法には大分して二通りある
    • /etc/fstabにマウント情報を記述する(後述)
    • /etc/auto.masterにマウント情報を記述する(後述)
boot時にリモートのWindows共有ディレクトリを自動的にmountする方法(引用元


  1. 基本的な方法

    • /etc/fstabにusernameとpasswordを直接記述

    //winbox/getme /mnt/mymount cifs user,uid=500,rw,suid,username=sushi,password=yummy 0 0
    

  2. よい方法


    • usernameとpasswordを適当なテキストファイルに記述(例:/root/secret.txt)
    • username=sushi
      password=yummy
      

    • fstabのusernameとpasswordの代わりにcredentials=/root/secret.txtのオプションをつけて記述
    • //winbox/getme /mnt/mymount cifs user,uid=500,rw,noauto,suid,credentials=/root/secret.txt 0 0
      

  3. もっとよい方法


    • マウント元のWindows共有のリンクが切れた場合にネットワークを停止(go down)させる

    • /etc/auto.mymount を作成

    • /etc/auto.master に以下の記述を追加
    • /mymount /etc/auto.mymount
      

    • /etc/auto.mymount に以下の記述を追加
    • //winbox -fstype=cifs,rw,noperm,user=sushi,pass=yummy ://winbox/getme
      

  4. もう一つのもっとよい方法

    • (基本的には上記と一緒なので省略)

SWAT
  • モジュール名:samba-swat
  • 設定ファイル:/etc/xinetd.d/swat
    • disable=yes
    • サービスxinetdの再起動:# service xinetd restart
    • http://127.0.0.1:901/ => localhostは名前解決してくれない
    • パラメータのヘルプが英語だけど網羅していてわかりやすい
    • パラメータのコメントやデフォルト値の箇所をすべて削除するのでオリジナルをバックアップしておいたほうがよい。