samba在debian wheezy上使用unix密码同步密码


11

我在服务器上安装了samba,我试图编写一个脚本来节省我两个添加用户的步骤,例如:

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

第一次尝试,Unix用户仍然不存在:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

第二次尝试,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

所以,现在我问自己:

  1. 如何使samba密码与Unix密码同步?
  2. samba密码存储在哪里?

有人可以帮助启发我吗?


密码存储在中的数据库中/var/lib/samba/,我相信密码在其中,secrets.tdb但我不确定。至于你以前的问题,我怀疑是否有一个简单的方法。
Zoredache

Answers:


10

好吧...缺少的链接是:

 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
链接已断开,这就是为什么我们在答案中添加了有价值的信息的原因:/
ubiquibacon

@ubiquibacon我已经编辑了此答案,因此该链接现在指向Wayback Machine的存档版本(由于Internet存档人员的出色工作)。
Anthony Geoghegan'5

1
pam_smbpass似乎已被弃用
alex.forencich

是的,我libpam-smbpass在Debian 9.1系统上找不到了,它也对我不起作用。这个简单的问题被问了那么多次却又没有答案怎么可能?
Frank Breitling

@ Oz123 libpam-winbind在CentOS7中都找不到。

3

想要对先前的答案发表评论,但由于缺乏声望点而无法这样做。试图将全部内容放在此答案上,但不能如它所说的那样看起来像垃圾邮件。是对返回机器上全部内容的访问,以下是要点的简短版本:

Debian Etch上的Unix和Samba密码同步

安装以下软件包:

# apt-get install libpam-smbpass smbclient

Unix-> Samba

为了在用户更改其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”更改为“必要”将确保如果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用户,并将其密码更改为Unix密码,只要该用户使用SSH或使用默认系统(通用身份验证)身份验证的任何其他服务登录。

使用尚无Samba帐户的帐户使用SSH登录时,应该看到消息“已添加用户”。

因为这也会为root创建一个Samba帐户,所以您可能想在Samba中禁用root访问(默认情况下,Debian Etch禁用了它):

/etc/samba/smb.conf:

invalid users = root

警告:如果用户不使用密码(例如,使用公用/专用密钥身份验证)通过SSH或其他服务登录,则此方法将无效。在这种情况下,PAM将没有创建Samba密码所需的纯文本密码。

注意:当您修改通用密码以也要求更新Samba密码时,除非他们已经有一个现有的Samba帐户且密码相等,否则所有当前登录的用户将无法使用“ passwd”更改其密码,直到他们重新登录。他们的Unix密码。

Samba-> Unix

我们指示Samba在更改密码时使用PAM:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

使用/etc/init.d/samba restart重新启动Samba。

通过添加@include common-password,配置PAM以支持Samba更改密码:

/etc/pam.d/samba:

@include common-auth
@include common-account
@include common-session
@include common-password

使用Samba时,使用与使用“ passwd”时相同的机制来更改密码。这意味着在尝试更改Samba密码之前,将需要更新Unix密码。

创建新用户

使用chpasswd避免错误:

# useradd test
# echo “test:newpass” | chpasswd

pam_smbpass似乎已被弃用
alex.forencich

@Joru在CentOS7上通过samba 4.9.1的源代码编译,没有的文件pam_smbpass.so。你能帮助我吗?链接:stackoverflow.com/questions/52932070/…–
成都,

@CHENJIAN SAMBA.ORG从SAMBA 4的源中删除了pam_smbpass.so。所以我能够找到的上一个Samba版本是samba 3.9.16
Axel Werner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.