我正在编写一个脚本,将 Linux 用户密码复制到 ubuntu 服务器 10.04 上的 samba。我正在使用带有 tdbsam 后端的 samba 3。
1)如何(如果可能)使用 shell 脚本将帐户(用户/密码)从 linux 复制到 samba?
2) 如何在脚本中找出某个用户是否在 samba 用户数据库中,是否有密码并已激活?我需要这个,因为我的脚本运行得更频繁,并且在后续运行中我需要找出该用户是否已经存在。如果没有必要,我不会复制或设置密码或激活。
这是我的配置的头部:
[global]
workgroup = WORKGROUP
server string = %h server
security = SHARE
obey pam restrictions = Yes
pam password change = no
passdb backend = tdbsam
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
invalid users = root
hosts allow = 192.168.0.1/24
答案1
Samba 密码文件和系统影子文件具有不同的哈希方案。我相信它们都不是可逆的,因此无法在两者之间进行转换。同步密码的唯一方法是在更改密码时通过同时根据用户的输入更新两个文件。这就是 unix 密码同步设置的全部意义所在。
答案2
我决定暂时切换回 smbpasswd。我决定不同步密码。我需要一个现在就适用的简单解决方案。
这是现在配置的头部:
[global]
workgroup = WORKGROUP
security = SHARE
passdb backend = smbpasswd:/etc/samba/smbpasswd
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
这是我在初次安装时以及有时将要运行的脚本:
USER=samwin
cat /etc/samba/smbpasswd | grep -e "^$USER:"
if [ $? -ne 0 ]; then
echo "Adding Samba user USER:"
smbpasswd -a $USER
else
echo "Samba user $USER already present."
fi
我仍然对上述问题的答案感到好奇,以便将来安装,我会接受最合适的答案。