◆Sambaの認証処理の流れ
WindowsクライアントからSambaサーバー上の共有ファイルへアクセス処理する時の流れ
①Windowsユーザー名と、ユーザーと入力したパスワードをWindows形式でハッシュ化した認証情報がSambaサーバーに送付される。
②SambaはWindowsユーザーと同じ名前のSambaユーザーを検索し、見つかった場合は該当Sambaユーザーの認識情報を参照し、認証処理を行う。
③続いてSambaユーザーと同じ名前のUNIXユーザーを/etc/passwdファイルなどから検索し、見つかった場合はユーザーID(UID)情報(1000等)やGID情報を取得する。/etc/shadowファイルなどに格納されているUNIXユーザーのパスワード情報は参照されない。
④最終的にUID、GID情報を使ってSambaサーバー上のファイルにアクセスする。ファイルに最適なパーミッションが付与されていない場合、アクセス拒否される。
◆Sambaユーザーの管理
smbpasswdが使われていたが、現在では基本的にpdbeditコマンドで行う。
・pdbeditコマンドのオプション
-a / --create Sambaユーザー名 #Sambaユーザーの追加
-x / --deleate Sambaユーザー名 #Sambaユーザーの削除
-t / --password-from-stdin #パスワードのパッチ入力
-L / --list #Sambaユーザーの一覧
-w / --smbpasswd-style #smbpasswd形式での表示
-P アカウントポリシー変更
-i 移行元認証データベース -e 移行先認証データベース #smbpasswdファイルからTDBファイルへ移行
(例)
# pdbedit -i smbpasswd:/etc/samba/smbpasswd -e tdbsam:/usr/local/samba/private/passwd.tdb
pdbeditは最後のコマンドは出題されそう。
・smbpasswdコマンドの主なオプション
-a Sambaユーザー名 #Sambaユーザーの追加(実行後、パスワードも設定する)
-x Sambaユーザー名 #Samba ユーザーの削除
-e Sambaユーザー名 #Samba ユーザーを有効化
-d Sambaユーザー名 #Samba ユーザーを無効化
◆Sambaユーザーの作成、削除を実行
# useradd -m test1 #UNIXユーザーtest1作成。test1ホームディレクトリも作成。(パスワード設定不要)
# pdbedit -a test1 #Sambaユーザーのtest1作成。
new password: #パスワード入力
retype new password: #再度パスワード入力
Unix username: test1
NT username:
Account Flags: [U ]
(中略)
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
・バッチ処理などでSambaユーザーのパスワードを自動入力する場合。
# printf "password\npassword" | pdbedit -a test1 -t #2回目パスワード自動入力前にnが必要
# pdbedit -x test1 #Sambaユーザーのtest1削除
# userdel test1 #UNIXユーザーのtest1削除
◆Sambaユーザーのパスワード変更実行
[root@smb01 ~]# su - test1 #作成したtest1でログイン
[test1@smb01 ~]$ smbpasswd #一般ユーザーの場合ユーザー名は指定しない。
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user test1
*パスワードの変更はWindowsのサインイン画面でも可能
◆Sambaユーザーの無効化と有効化
# smbpasswd -d test1
Disabled user test1.
# smbpasswd -e test1
Enabled user test1.
◆Sambaユーザーの情報確認
# pdbedit -Lw