/etc/samba/smb.confの設定 まずはinstall †aptitude install samba すると libconvert-asn1-perl libcrypt-smbhash-perl libcupsys2 libdigest-md4-perl libio-socket-ssl-perl libjcode-pm-perl libnet-ldap-perl libunicode-map-perl libunicode-map8-perl libunicode-maputf8-perl libunicode-string-perl samba smbldap-tools が入る Samba Server The Samba daemon smbd can run as a normal daemon or from inetd. Running as a daemon is the recommended approach. How do you want to run Samba? -->daemons --inetd daemonを選ぶ To be compatible with the defaults in most versions of Windows, Samba must be configured to use encrypted passwords. This requires user passwords to be stored in a file separate from /etc/passwd. This file can be created automatically, but the passwords must be added manually by running smbpasswd and be kept up-to-date in the future. If you do not create it, you will have to reconfigure Samba (and probably your client machines) to use plaintext passwords. See /usr/share/doc/samba-doc/htmldocs/ENCRYPTION.html from the samba-doc package for more details. Create samba password database, /var/lib/samba/passdb.tdb? -->Yes yesにする。 setting [global] †[global] Browsing/Identification †workgroup名を変更する workgroup = MyHome(GROUPなど) NTで表示されるコメント的なサーバ名表示 server string = %h server #<%h >はsambaが動いているマシンのインターネットホスト名 Networking †Debugging/Accounting †Authentication †※ドメイン参加をしている場合、Windowsマシンからsambaのアカウントパスワードを変更出来るようにする ※Alt+Ctrl+Delでパスワード変更を行う Windowsからの認証を暗号かするかどうか(暗号化パスワードの設定) encrypt passwords = true Sambaの認証データベース設定
(追加インストール)
passdb backend = tdbsam Sambaユーザの認証情報の変更に同期してUnixユーザのパスワードも変更するかどうかの設定 (一般userがsambaアカウントの認証情報を変更した際にunixユーザのアカウント変更はroot権限で行われる) unix password sync = yes 上記と同期する際に設定するUnixアカウント変更の無いよう passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* . &color(red){※passwd chat debug方法} passwd chat debug = yes log level = 100 ※PAMを使ったパスワード同期方法 pam password change = yes WindowsユーザとSambaユーザのマッピング username map = /etc/samba/smbusers --> /etc/samba/smbusers aya = "Aya" "文" hoge = Hogetaro ゲスト認証 map to guest のパラメータ値 Never : ゲスト認証を許可しない(ディフォルト値) Bad User: sambaサーバが認識できないsambaユーザを指定した認証要求をゲスト認証とみなす Bad Password : Sambaユーザに対するパスワードが不一致だった場合にも、ゲスト認証とみなす Domains †Printing †Misc †Share Definitions †共有ディレクトリ †[share1] path = /home/project1 許可されているユーザ(&グループ) valid users = %S ファイル共有の基本設定 [project1] path = /home/project1 共有一覧画面での表示制御 [project2] browsable = No もしくは [project2$] <-- $がつく共有名も隠し共有になる 特定のユーザ以外参照出来ない共有 [project1] available = No => ファイル共有へのアクセス禁止 include = project1.%g => %gはアクセスしてきたgroup名 例えば:project1.group1のファイル available = Yes 共有への同時アクセス数の上限設定 [project2] max connections = 12 拡張子の静的なマッピング mangled map = (*.html *.htm) => 実ファイル.html を .htmのように表示させる 強制的にファイルを隠しファイルにする hide dot files = yes (default) => .から始まるファイルは自動で隠される hide files パラメータで任意のファイルを隠しファイルとして扱い事も可能 (設定方法はveto filesパラメータに準じる) アクセス権のないファイルの表示、読み取りを禁止する hide unreadable = yes => 例えば 権限が---------のファイルがあった場合、表示されない hide unwriteable files = yes => 書き込み権限がないファイルを非表示する(ディレクトリは常に表示される) 特殊ファイルの表示、読み取りを禁止する hide special files = Yes => FIFO、 ソケットなどの表示、読み取りを禁止する 特定のディレクトリの内容を非表示にする [pub] dont descend = /bin. /dev, /lib, /var => delete veto filesパラメーターの影響を受けないので、delete veto files = yesだった場合 でもwindows側からのディレクトリツリーを削除させない事が可能 アクセス制御の手順 †
新規作成ファイル、ディレクトリのpermission制御 †上位ディレクトリのパーミッションを引き継ぐ(すべてのパーミッションが引き継がれる訳ではない) inherit permission = no (default)
ゲスト認証 [global] map to guest = Bad User [share] guest ok = yes guest account = Unix ユーザ guest only = Yes 原則読み取り専用の共有設定 [global] map to guest = Bad User [pub] path = /home/ftp/pub guest ok = yes guest account = ftp writeable = no write list = @ftpadmin 複数人でファイル共有する為の共有設定 [project1] path = /home/project1 write list = @project1 amori (↑こちらも可:valid users = @project1 @project2) read only = yes create mst = 664 directory mask = 775 force group = project1 ※後は作成したディレクトリにunix上権限を与える mkdir /home/project1 chgrp project1 /home/project1 chmod 775 /home/project1 ACLからUnixパーミッションへのマッピング †ACL
特殊なアクセス許可
パーミッション変更関連パラメーター security mask = 0777 ファイルに必ず設定されるアクセス権 force security mask = 0000 ディレクトリに設定する事が可能なアクセス権 directory security mask = 0777 ディレクトリに必ず設定されるアクセス権 force directory security mode = 0000 例えばディレクトリには必ず実行権を付けたい場合は以下の設定 [global] force directory security mode = 111 これらのパラメーターはglobalセクションでも書くファイル共有セクションで書く腐ぃある共有固有の値を指定しても良い UnixにおけるACLの実装 †例えば user1 -> rwx user2, user3 -> r-x groupA -> rwx groupB -> r-x その他 -> --- とする事が出来る ディレクトリにはディレクトリ自身のACL(access ACL)と、ディレクトリ内に作成されたファイルやディレクトリのACLを設定する(default ACL)がある ACLの参照方法 getfacl ファイル名(or ディレクトリ名) 出力されるタグの意味 ACL tag:ACL qualifier:access permmission となっている
ACLの設定 setfacl -m mask::rwx,user:rumba01:rw-,group:project01:rw-,group:project02:rw- フィル名 -mオプションの後は[,]で区切ったACLエントリを指定する事でファイルにACLを追加する事が可能 ACLの削除 setfacl -x user:rumba01 フィル名 ディレクトリのACL(default ACL) setfacl -d -m u::rwx,g::r--, o::r-- ディレクトリ名 => u(ユーザのpermission) g(グループのpermission) o(その他のpermission) setfacl -d -m m::rwx, u:rumba01:rwx,g:project01:r-x ディレクトリ名 => m(maskのpermission) u:rumba01(実際のユーザ設定) g:project01(実際のグループ設定) getfacl -d ディレクトリ名 上記の設定を行ったディレクトリ内にファイルやディレクトリを作成すると、default ACLのエントリが適応される 作成されたファイルに適応されるmaskの値については、umaskの値が影響するので要注意 シンボリックリンクの追跡 †シンボリック経由によるファイル共有外へのアクセスを禁止する wide links = No Sambaのシンボリックリンクの解釈を全面的に無効とする follow symlinks = No DFS(Distributed File System) †dfs作成方法例 cd /user/local/samba/lib/top ln -s msdfs:sakura\\archive archive DFS使用の際の設定例 [global] host msdfs = Yes => ホストベースのDFSを有効にする [top] path = /user/local/samba/lib/top msdfs root = Yes => この共有をDFSルートとして設定する 日本語のDFSリンク名 cd /user/local/samba/lib/top ln -s msdfs:sakura\\`echo DFS その1$ | nkf -e ` echo 共有1` | nkf -e` ※DFS機構を非ドメイン環境で用いるのは現実的に困難、との事 Homeディレクトリ †[homes] comment = %U's Home Directories => %U (ユーザ名) browseable = no => ユーザのホームディレクトリが共有居hcいらんに表示されるので、Noにしておく valid users = %S homeに対しての書き込み許可設定 writable = no Net logon †これはコメントアウトにしてドメインのログオン用にする(sambaの設定でドメインコントロール用に設定をする必要がある) ;[netlogon] ; comment = Network Logon Service ; path = /home/samba/netlogon ; guest ok = yes ; writable = no ; share modes = no Profiles direcotry †コメントアウトして、ユーザーのプロファイルディレクトリとして機能させる(上記のNetlogonの設定が必要) 。path先はすべてのユーザにとって書き込み出来る状態である必要がある。profiles directoryは最初にユーザがログインした時に作成される ;[profiles] ; comment = Users profiles ; path = /home/samba/profiles ; guest ok = no ; browseable = no ; create mask = 0600 ; directory mask = 0700 |