Sambaでファイル共有(Linux ユーザ単位)
Linux SambaサーバにWindowsとMACを接続
/etc/samba/smb.conf
[global]
workgroup = MATSUNET #アクセス時のマシン名(アクセス時は\\(IPアドレス)\でもOK) netbios name = ISM-SMB #許可アドレス(ネットワーク) hosts allow = 127. 10. #プリンタは使用しない load printers = no #「Yes」のときLinuxユーザのパスワードも変更される 既定値: unix password sync = no # パスワードの暗号化 既定値: encrypt passwords = yes
# /etc/rc.d/init.d/smb start
# smbpasswd -a okada New SMB password: Retype new SMB password: (いろいろwarnigが出た) Added user okada.
ユーザ確認
# pdbedit -L okada:500:Okada
# pdbedit -u okada -v Unix username: okada NT username: Account Flags: [U ] (略) Logon time: 0 Logoff time: 木, 07 2月 2036 00:06:39 JST Kickoff time: 木, 07 2月 2036 00:06:39 JST Password last set: 水, 18 1月 2012 05:00:27 JST Password can change: 水, 18 1月 2012 05:00:27 JST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# (echo ****** ;echo ******)| /usr/bin/smbpasswd -s -a okada3 Added user okada3.
Windowsからは ネットワークコンピュータで「\\(IPアドレスで接続)\」
MAC OSXからは
Mac OS Xの[移動]メニューにある[サーバへ接続]を選択する。
smb://サーバ名(またはIPアドレス)/共有名
# apt-get install samba
/etc/samba/smb.cofで最低以下を設定
[global] netbios name = ISMDOMAIN <-- ホスト名(\\ISMDOMAIN\) # charset (euc-jp) unix charset = eucJP-ms dos charset = cp932 display charset = eucJP-ms workgroup = ISM server string = ismsamba security = user <-- /etc/samba/smbpasswdのユーザを使用(普通これを選択)
文字コード
unix charset UNIX側での文字コードの設定(eucJP-ms UTF-8) dos charset Windows側での文字コードの設定。日本語を利用する場合は、CP932 display charset swat で表示される文字コードの指定
samba.confのチェック
# testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[sambadoc]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
# /etc/rc.d/init.d/smb start
ユーザはlinuxアカウントを事前に登録しておく必要がある
smb.cofで以下がコメントアウトのとき
; passdb backend = tdbsam
/etc/passwdファイルからsmbpasswdを作成
ファイルは作成されるがパスワードは作成されないので注意すること。あとからか作成する。
# cd /etc/samba # /usr/bin/mksmbpasswd.sh < /etc/passwd > smbpasswd
注)mksmbpasswd.shに実行件がないときは追加する
パスワード作成
# /usr/bin/smbpasswd okada New SMB password: ****** Retype new SMB password: ******
また、新しいユーザを追加sたときはlinuxアカウントを発行して(/sbin/nologinでもいいみたい)smbpasswdに以下ように同じように行を追加して/usr/bin/smbpasswd でパスワードを作成する
/etc/samba/smbpasswd
# # SMB password file. # okada:500:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:[U ]: LCT-47725CAF:Okada admin:502:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:[U ]: LCT-477273B8: vmwinxp$:503:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:[W ]:LCT-47727365:
注)$がついているのはマシン名
ネットワークから 「\\(IPアドレス)\」でアクセスこのときWindowsのユーザも上記で設定したユーザ、パスワードでアクセスする
/etc/samba/smb.conf
[global] workgroup = ISM <--(1) server string = ism samba security = user local master = yes os level = 65 <--32より大きくする domain master = yes preferred master = yes domain logons = yes ;logon path = \\%L\Profiles\%U logon path = <--移動プロファイルを使用しなときは明示てきにこのように指定する netbios name = ISMDOMAIN logon drive = H: logon home = \\homeserver\%u\winprofile admin users = administrator <--このアカウントでWindows側をドメインに参加させる(2) [homes] comment = %U's Home Directory browseable = no writable = yes ; create mask = 0644 ; directory mask = 0755 [netlogon] path = /var/samba/netlogon read only = yes write list = ntadmin [Profiles] /var/samba/profiles read only = no create mask = 0600 directory mask = 0700
[global]で「passdb backend = tdbsam」と指定するとパスワードが/etc/samba/passdb.tdbのようなバイナリファイルに保存され、パスワードファイルがsmbpasswdではなくなる。このときは以下のようにユーザ追加を行うが通常はこのオプションは無効にして、テキストファイル(smbpasswd)であつかったほうか簡単?(セキュリティ的には無視すれば)
# /usr/sbin/useradd admin # pdbedit -a -u admin params.c:Parameter() - Ignoring badly formed line in configuration file: /var/samba/profiles new password: ******* retype new password: ******** Unix username: admin NT username: Account Flags: [U ] User SID: S-1-5-21-2947849931-3299972202-1454051791-2004 Primary Group SID: S-1-5-21-2947849931-3299972202-1454051791-513 Full Name: Home Directory: \\homeserver\admin\winprofile HomeDir Drive: H: Logon Script: Profile Path: \\localhost\Profiles\admin Domain: ISM Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: 火, 19 1月 2038 12:14:07 JST Kickoff time: 火, 19 1月 2038 12:14:07 JST Password last set: 水, 26 12月 2007 23:48:21 JST Password can change: 水, 26 12月 2007 23:48:21 JST Password must change: 火, 19 1月 2038 12:14:07 JST Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
マシンの追加
PDCが接続許可するマシンを追加する。マシン名の後は$を必ずつける。
# /usr/sbin/useradd vmwinxp$ # pdbedit -a -m vmwinxp params.c:Parameter() - Ignoring badly formed line in configuration file: /var/samba/profiles Unix username: vmwinxp$ NT username: Account Flags: [W ] User SID: S-1-5-21-2947849931-3299972202-1454051791-2006 Primary Group SID: S-1-5-21-2947849931-3299972202-1454051791-513 Full Name: Home Directory: HomeDir Drive: (null) Logon Script: Profile Path: Domain: ISM Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: 火, 19 1月 2038 12:14:07 JST Kickoff time: 火, 19 1月 2038 12:14:07 JST Password last set: 水, 26 12月 2007 23:50:38 JST Password can change: 水, 26 12月 2007 23:50:38 JST Password must change: 火, 19 1月 2038 12:14:07 JST Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ユーザ(マシン)削除
# pdbedit -x -u okada2
ユーザ(マシン)表示
# pdbedit -L params.c:Parameter() - Ignoring badly formed line in configuration file: /var/samba/profiles VMWINXP$:4294967295:VMWINXP$ <==マシン administrator:504:
「マイコンピュータ」右クリック ->「システムプロパティ」->
コンピュータ名の変更でドメインを(1)で指定したWorkGroupを、
ユーザを(2)で指定したユーザ、パスワードで行う。
その後再起動
root権限でコマンドを実行するときは以下のようにuserのパスワードを聞かれる。これを聞かれずに実行する。
$ sudo pdbedit -L [sudo] password for okada: okada:500:Okada okada2:501:YOakada
/etc/sudoersに以下の行を追加するとsmbpasswdコマンドはユーザokadaがsudoするときはパスワードを聞かれない
okada ALL=(ALL) NOPASSWD:/usr/bin/smbpasswd
ただし、このファイルは0440であるため編集時は0640にして、戻す必要がある
$ sudo smbpasswd -x okada3 Deleted user okada3.
okada ALL=(ALL) NOPASSWD:ALL #okadaユーザはパスワード入力を必要としない okada2 ALL=(ALL) PASSWD:ALL #okada2ユーザはパスワード必要
ユーザ ホスト = (権限) コマンド