サーバーに samba をインストールし、ユーザーを追加する 2 つの手順を省略するスクリプトを作成しようとしています。例:
adduser username
smbpasswd -a username
私のsmb.conf
状態:
# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
unix password sync = yes
pdbedit
さらに読んでいくと、次のようなマニュアルページが見つかりました。
-a This option is used to add a user into the database. This com-
mand needs a user name specified with the -u switch. When adding
a new user, pdbedit will also ask for the password to be used.
Example: pdbedit -a -u sorce
new password:
retype new password
Note
pdbedit does not call the unix password syncronisation script if
unix password sync has been set. It only updates the data in the
Samba user database.
If you wish to add a user and synchronise the password that im-
mediately, use smbpasswd’s -a option.
そこで、次のようにユーザーを追加してみることにしましたsmbpasswd
:
1 回目の試行では、UNIX ユーザーはまだ存在しません。
root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.
2 回目の試行、Unix ユーザーが存在します:
root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password:
su: Authentication failure
そこで、私は今自分自身に問いかけています。
- samba パスワードを UNIX パスワードと同期させるにはどうすればよいですか?
- samba パスワードはどこに保存されますか?
誰か私に教えてくれませんか?
答え1
そうですね...欠けていたリンクは次の通りです:
libpam-smbpass
したがって、このパッケージをインストールした後は期待通りに動作します。インターネットの長期記憶は、時々部分的な情報しか提供しません。そのため、これに対処するために、正しいリンクをここに公開します。Samba パスワードを Unix パスワードと同期する、そして私自身のテストも。
root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
Server Comment
--------- -------
RASPBERRYPI raspberrypi server
Workgroup Master
--------- -------
WORKGROUP
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password:
Added user mag2.
mag2@raspberrypi:/home/pi$
これが他の誰かの役に立つことを願っています。
2017年アップデート:
libpam-smbpass
非推奨です。 それを置き換えたのは のようですpam_winbindd
。 パッケージをインストールしてlibpam-winbind
取得できます。 ただし、これでも Samba パスワードは UNIX パスワードと同期されません。 代わりに、Windows 認証サーバー (AD) を使用して UNIX に認証できます。 これに関する情報は、次の場所にあります。https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
答え2
前の回答にコメントしたかったのですが、評判ポイントが足りなかったためできませんでした。この回答に全文を載せようとしましたが、スパムのように見えると表示されたため載せられませんでした。ここウェイバックマシン上の完全なコンテンツへのアクセスであり、以下は要点の簡潔なバージョンです。
Debian Etch での Unix と Samba のパスワード同期
次のパッケージをインストールします。
# apt-get install libpam-smbpass smbclient
Unix -> サンバ
ユーザーがUnixパスワードを変更するたびにSambaパスワードを更新するには、
/etc/pam.d/common-password: から
password required pam_unix.so nullok obscure min=4 max=8 md5
に
password requisite** pam_unix.so nullok obscure min=4 max=8 md5
password required pam_smbpass.so nullok use_authtok try_first_pass
pam_unix の「required」を「requisite」に変更すると、Unix パスワードの変更に失敗した場合、プラグインの実行が直ちに終了するようになります。
これを機能させるには、ユーザーがすでにSambaアカウントを持っており、SambaパスワードがUnixパスワードと一致している必要があります。必ずしもそうではないため、変更する必要があります。
/etc/pam.d/common-auth: から
auth required pam_unix.so nullok_secure
に
auth requisite pam_unix.so nullok_secure
auth optional pam_smbpass.so migrate
これにより、Samba ユーザーが存在しない場合は作成され、ユーザーが SSH またはデフォルトのシステム (common-auth) 認証を使用するその他のサービスを使用してログインするたびに、そのパスワードが Unix パスワードに変更されます。
Samba アカウントをまだ持っていないアカウントで SSH を使用してログインすると、「ユーザーが追加されました」というメッセージが表示されます。
これにより、root 用の Samba アカウントも作成されるため、Samba で root アクセスを無効にする必要がある場合があります (Debian Etch ではデフォルトで無効になっています)。
/etc/samba/smb.conf:
invalid users = root
警告: ユーザーがパスワードを使用せずに SSH またはその他のサービス経由でログインする場合 (たとえば、公開/秘密キー認証を使用する場合)、これは機能しません。この場合、PAM には Samba パスワードを作成するために必要なプレーンテキスト パスワードがありません。
知らせ: common-password を変更して Samba パスワードの更新も要求すると、Unix パスワードと同じパスワードを持つ既存の Samba アカウントがない限り、現在ログインしているユーザーは、再ログインするまで「passwd」を使用してパスワードを変更できなくなります。
サンバ -> Unix
パスワードを変更するときに PAM を使用するように Samba に指示します。
/etc/samba/smb.conf:
unix password sync = yes
pam password change = yes
/etc/init.d/samba restart を使用して Samba を再起動します。
@include common-password を追加して、Samba によるパスワード変更をサポートするように PAM を設定します。
samba のディレクトリ
@include common-auth
@include common-account
@include common-session
@include common-password
これは、Samba を使用するときに、"passwd" を使用する場合と同じメカニズムを使用してパスワードを変更します。つまり、Samba パスワードを変更する前に、Unix パスワードを更新する必要があります。
新しいユーザーの作成
エラーを回避するには chpasswd を使用します。
# useradd test
# echo “test:newpass” | chpasswd