Samba:如何在新版本的 ubuntu 服务器上将 /etc/passwd 复制到 samba 密码

Samba:如何在新版本的 ubuntu 服务器上将 /etc/passwd 复制到 samba 密码

我正在编写一个脚本,将 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

我仍然对上述问题的答案感到好奇,以便将来安装,我会接受最合适的答案。

相关内容