Sambaユーザーとパスワードに追加のスクリプトを作成したいです。
私はhereに似た解決策を見ました。
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
ただし、パスワードはスクリプトを表示するすべての人に表示されます。ハッシュをどのように使用し、パスワードとして使用できますか?
答え1
smb.confでpassdb backend = tdbsam
設定したシステムの暗号化されたパスワードでファイルをエクスポートできる場合は、次のようにします。
sudo pdbedit -e smbpasswd:/tmp/smbpasswd
/tmp/smbpasswd
これにより、ユーザー名とハッシュを含むファイルが作成されます。興味のないユーザーを含む行を簡単に表示および削除できるテキストファイル。
次のコマンドを使用してユーザーを再インポートできます。
sudo pdbedit -i smbpasswd:/tmp/smbpasswd -e tdbsam:/var/lib/samba/private/passdb.tdb
のユーザーは/tmp/smbpasswd
Sambaユーザーデータベースに追加されるか、すでに存在する場合は上書きされます。
/var/lib/samba/private/passdb.tdb
UbuntuのSambaユーザーデータベースファイルの場所。
答え2
スクリプトにパスワードへのアクセス権が必要です。パスワードのハッシュは使用できません。使用する場合、ハッシュはいパスワードは、ハッシュがある人なら誰でもログインできることを意味します。
パスワードを別のファイルに入れてスクリプトから読む必要があります。パスワードを正確に再現するように注意してください(例:echo -e "$PASS"
バックスラッシュエスケープを解釈するため、使用しないでください)。
IFS= read -r password </somewhere/private/file.password
printf '%s\n%s\n' "$password" "$password" | smbpasswd -a -s "$LOGIN"
または
IFS= read -r password </somewhere/private/file.password
smbpasswd -a -s "$LOGIN" <<EOF
$password
$password
EOF
外部コマンドに渡された引数は、コマンドの実行中に他のプロセスに表示される可能性があるため、printf
シェルの外部コマンドの場合は、最初の回避策を使用しないでください。現在、ほとんどのシェルにはこの機能がprintf
組み込まれています。type
コマンドを使用して確認するか、ここでドキュメントを確認してください。
パスワードを含むファイルは、スクリプトを実行する必要があるユーザーだけが読み取ることができることを確認してください。もちろん、そのユーザーとして実行されるすべてのコマンドはスクリプトを読み取ることができます。望ましくない場合は、別のユーザーとしてスクリプトを実行する必要があります(または別の分離メカニズムを使用しますが、別のユーザーを設定するのが最も簡単です)。 。