!!!sambaの設定 !!バグ? 基本的にはGUIから設定して問題ない。 CentOS 5.2 の samba設定GUIツールが死んでいるようだ。 ユーザーを登録しても、画面に表示されない。 コマンドからの設定は問題無し。 !!アクセスや動作が遅い http://ftp3.samba.gr.jp/ml/article/samba-jp/msg14926.html WinXP から共有にアクセスする際に、WebDAVによるアクセスを試しているらしい。 なので、ポート 80/tcp を閉じているとタイムアウト待ちになることがある。 80/tcp を開ける(apache等のサービスは不要)と反応が早くなる。 !!ユーザーの管理(追加、表示、削除) ユーザーの追加 pdbedit -a ユーザー名 ユーザーの表示 pdbedit -Lv ユーザーの削除 pdbedit -x -u ユーザー名 !!グローバル設定 /etc/samba/smb.conf http://d.hatena.ne.jp/korokorokoron/20100608/1275969242 http://linux2.g.hatena.ne.jp/pneumaster/ 共有先にシンボリックリンクがある場合、以下の設定をしないとリンク先が開けない [global] wide links = yes unix extensions = no !日付に関する設定 https://thinkit.co.jp/article/790/1?page=0%2C1 #タイムスタンプの精度を変更しない dos filetime resoluntion = no #ファイルの日付変更を書込権限のあるユーザに許可する dos filetimes = yes #ディレクトリの作成日をフェイクしない #fake directory create times = yes !実行権限に関する設定 http://www.dt8.jp/cgi-bin/adiary/adiary.cgi/0493 デフォルトの設定は、Windowsのアーカイブ属性を所有者の実行権限とマッピングしている。 期待せずに実行権限が付いたり、外れたりするのでこの機能を無効にする。 map archive = no !!共有の追加 /etc/samba/smb.conf dos filetimes = Yes dos filetime resolution = Yes とすると、ファイルの更新日付を維持してコピーする 例 [user@private] path = /home/user/samba/private writeable = yes browseable = no create mask = 0600 valid users = username directory mask = 0700 [user@share] path = /home/user/samba/share writeable = yes browseable = no create mask = 0660 directory mask = 0770 ホームのパスを変更する例 [homes] path = /mnt/homes/%S valid users = %S 略 ユーザ毎のディレクトリ(ホームっぽい) [userdir] path = /mnt/userdir/%U valid users = %U 略 !!ホームディレクトリを共有しない場合 ホームディレクトリを共有し無くない場合は [homes]セクションをコメントアウトする。 ;[homes]  ; comment = %U's Home Directory  ; browseable = no  ; writable = yes  ; create mask = 0644  ; directory mask = 0755 !!プリンタを共有に表示しない http://fedorasrv.com/samba.shtml [global] を編集する。 # If you want to automatically load your printer list rather # than setting them up individually then you'll need this ; load printers = yes ← 行頭に;を追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合 load printers = no ← 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合 disable spoolss = yes ← 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合 !!シンボリックリンクのアクセスが拒否される場合 http://xoops.fens.net/modules/wiki/?Linux%2FMemo%2FSamba%2Fsymlink%20%E3%81%8C%E3%81%9F%E3%81%A9%E3%82%8C%E3%81%AA%E3%81%84 :follow symlinks:共有エリア内へのシンボリックリンクを辿るかどうか :wide links:共有エリア外へのシンボリックリンクを辿るかどうか。 unix extensions = Yes の場合は動作しないので注意。 :unix extensions:Samba が HP社によって定義された CIFS の UNIX拡張を利用するかどうかを制御する。 これらの拡張は、UNIX クライアントから UNIX サーバに対して接続する際に有用な CIFS を有効にし、 シンボリックリンクやハードリンクなどを利用可能にする。現在の Windows クライアントでは 有効になっていない。 もし、共有エリア外へのシンボリックリンクを辿る場合は follow symlinks = Yes wide links = Yes #Samba-3.4.6/Samba-3.3.11 以降 unix extensions = No とする必要がある。 !!アクセス権限のないファイルやディレクトリを隠す sambaの隠すには大きく2つある。 *見えないだけでアクセス可能。(パスを打ち込んだりすることでアクセス可能) *見えないしアクセスも不能 !「.」で始まるファイルを隠す(アクセス可能) hide dot files = yes 正確には隠しファイル属性を付与して表示する。 !読込権限のないファイル、ディレクトリを隠す(アクセス不能) hide unreadable = yes 見えないし、パスを打ち込んでも無いことになっている。 hide unwriteable = yes も設定可能らしいが、上手く動作しなかった。unreadableだけで十分な気もする。 !!!パスワードなしでアクセスできる共有の設定 http://server-helper.doorblog.jp/archives/3152263.html http://itpro.nikkeibp.co.jp/members/LIN/oss/20030924/1/ [global] guest account = nobody map to guest = Bad User #省略 [public] guest ok = Yes guest only = yes #省略 !map to guestの値 ,設定値,意味 ,never(デフォルト),ゲスト接続が許されず、登録されていないユーザーやパスワードが正しくないユーザーはアクセスできない。 ,bad user,登録されていないユーザーであっても、guest ok = Yesと定義された共有であればアクセスできる。 ,bad passwrod,登録されたユーザーがパスワードを間違えた場合、ゲストとして接続されることを意味する。したがって、guest ok = Yesと定義された共有であればアクセスできる。 !guest ok = Yes / No 共有のゲストアクセスを許すかどうか指定する。この設定は、map to guestの指定がなされていないと有効にならない。 !guest only = Yes 共有のアクセスをすべてゲスト権限にするかどうか指定する。この設定は、map to guestの指定がなされていないと有効にならない。 !!!アクセス制御について samba でのアクセス制御は大きく2つある 1.Linux のファイルパーミッションのみでの制御 2.samba の read list、write list、valid users、 invalid users による制御 !!1.Linux のファイルパーミッションのみでの制御 !メリット *Linux のグループやSGIDで制御するので、分かりやすくて設定しやすい。 !デメリット 複雑な制御ができない。 グループA:読み書き可能 グループB:読み込みのみ など。 !例:各ユーザで共有するディレクトを作成する場合 http://blog.neet-shikakugets.com/article/202597386.html http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill09/lpicdrill02.html [public] comment = Public Stuff path = /var/samba/public ;public = yes writable = yes printable = no create mask = 0664 force create mode = 0664 directory mask = 0775 force directory mode = 0775 共有用のグループを作成 #groupadd smbPublic 共有用グループにユーザー追加 #gpasswd -a user1 smbPublic か #usermod -G smbPublic -a user1 どっちでもいいけど、gpasswd がおすすめかな。 /var/samba/public のグループ変更とsgidを設定 #chgrp smbPublic /var/samba/public #chmod g+s /var/samba/public create mask、 force create mode、 directory mask、 force directory modeについては 作成されるファイルのパーミッション (DOSからUNIXに設定される値) AND (create maskの値) OR (force create modeの値) 作成されるディレクトリのパーミッション (DOSからUNIXに設定される値) AND (directory maskの値) OR (force directory modeの値) !!2.samba の read list、write list、valid users、 invalid users による制御 !メリット *複雑な制御ができる。 グループA:読み書き可能 グループB:読み込みのみ などの複雑な制御ができる *Linux のファイルパーミッションを併用できる。 !デメリット *あまりやりすぎると分かり難くなる。 *smb.conf 内の共有設定毎にしか設定できない !例:各ユーザで共有するディレクトを作成する場合 [public] comment = Public Stuff path = /var/samba/public printable = no create mask = 0664 force create mode = 0664 directory mask = 0775 force directory mode = 0775 write list = +smbPublic read list = +TestGroup valid users = +smbPublic +TestGroup write list と read list の両方に含まれるユーザは、 write list が優先される(多分) ※writable と read only を同時に書いた場合は、後に書いたほうが優先される(多分) 共有用のグループを作成 #groupadd smbPublic 共有用グループにユーザー追加 #gpasswd -a user1 smbPublic !valid users、invalid users、read list、write list に指定するグループ名 ,, ,@グループ名,NIS グループ、システムに設定してあるグループの順番で指定 ,&グループ名,NIS グループの指定 ,+グループ名,システムに設定してあるグループの指定 !!!認証について http://blog.neet-shikakugets.com/article/202597386.html Sambaユーザ -> Linux ユーザにマッピング -> アクセス 基本的には Sambaユーザと同じ名前のLinuxユーザが存在していないといけない。 [username map]や[username map script]パラメーターで対応を変更することが出来る。 Sambaユーザーは、あくまで認証情報やWindowsユーザーとしての情報を格納するためのもの。 /etc/samba/smb.confのsecurityパラメータに設定できるものは以下のもの。 ,値,認証の単位,説明 ,share,共有レベル,Windows NTまたはSambaにて共有単位で認証を行う ,user,ユーザーレベル,Sambaにて、ユーザー単位でのパスワード認証を行う ,server,ユーザーレベル,Windows NTまたはSambaで認証を行う ,domain,ユーザーレベル,Windowsドメインで認証を行う ,ads,ユーザーレベル,Active Directoryドメインで認証を行う !!Linux と Sambaユーザの一括管理 満足できる方法はないので省略。 http://kajuhome.com/tips/tips_06_001.shtml !!!NTLMv2 について !!サーバ側の設定値と使用するプロトコル ,パラメータの設定, 認識可能な認証形式 ,encrypt passwords = No , 平文パスワード ,※encrypt passwords = Yes / ※lanman auth = Yes / ※ntlm auth = Yes, NTLMv2/NTLM/LANMAN ,※encrypt passwords = Yes / lanman auth = No / ※ntlm auth = Yes, NTLMv2/NTLM ,※encrypt passwords = Yes / ※lanman auth = Yes / ntlm auth = No, NTLMv2/LANMAN ,※encrypt passwords = Yes / lanman auth = No / ntlm auth = No, NTLMv2 ※「※」はSamba 3.0系列のデフォルト値 !!クライアント側の設定値と使用するプロトコル ,パラメータの設定, 送信する認証形式 ,client ntlmv2 auth = Yes / - / - /, NTLMv2 ,※client ntlmv2 auth = No / ※client lanman auth = Yes / ※client plaintext auth = Yes, NTLMv1/LANMAN/(平文(※2)) ,※client ntlmv2 auth = No / ※client lanman auth = Yes / client plaintext auth = No , NTLMv1/LANMAN ,※client ntlmv2 auth = No / client lanman auth = No / - , NTLMv1 ※「※」はSamba 3.0系列のデフォルト値 ※2: サーバが平文以外の認証方式に対応していない場合にのみ送信 {{category2 OS,Linux}}