用户修改Samba密码的方法

用户修改Samba密码的方法

我有一个大约 5 个用户的 Samba 服务器(安全 = 用户),我希望有一种方法让这些用户无需我的参与即可更改密码,所以我有以下想法。这安全吗?有没有更好的(如更简单的)方法。我们曾经有特警来处理这个问题,但现在已经没有了。


在服务器上:创建受限用户(/bin/rbash + 单个目录的路径)

$ sudo adduser --shell /bin/rbash pwchange

$ cat /etc/passwd
  pwchange:x:1001:1001:pwchange,,,:/home/pwchange:/bin/rbash

$ sudo vi /home/pwchange/.bashrc
  Add:
  export PATH=/usr/local/pwchange

$ sudo ln -s /usr/bin/smbpasswd /usr/local/pwchange/smbpasswd

这里的想法是只有 sambpasswd 命令可以由 pwchange 用户运行。 Samba 用户的unix 帐户没有密码(即不允许通过这些帐户登录)。 samba 用户只能使用此受限帐户进行自助 Samba 密码更改...无需探索服务器!


客户端:通过终端或 Putty 更改 Samba 密码 (Windows)

user1@A3700:~$ ssh [email protected]

pwchange@V220:~$ smbpasswd -U user1
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user user1

答案1

让他们都访问同一个虚拟帐户听起来并不明智。即使您将其锁定以无法访问任何内容,但smbpasswd他们仍然可以更改彼此的密码。并且总是存在恶意特权升级攻击的可能性。

本质上,听起来您想要的是允许他们仅从smbpasswd自己的用户帐户运行命令,同时仍然拥有相当于nologin帐户的权限。

这可以通过使用 sshd_config 中的“ForceCommand”选项来完成。

尝试这个:

  1. 将具有 Samba 帐户成员资格的每个用户授予同一组。对于我们的例子,让我们说“sambaOnly”:

    #From Root
    groupadd sambaOnly
    usermod -a -G sambaOnly Joe
    
  2. 接下来,我们要更改 sshd_config 文件以包含以下内容:

    #From Root
    cat << EOF >> /etc/ssh/sshd_config
    Match Group sambaOnly
        ForceCommand smbpasswd
    EOF
    

急速。根据我的理解(和简短的测试),这意味着当他们通过 SSH 登录时,他们将自动smbpasswd运行命令,并且会收到相应的提示。他们永远不会有机会访问 shell。命令完成后,它们会自动断开连接,再次没有机会访问 shell。

我不能 100% 确定这会删除远程计算机的所有访问权限。例如,如果您在同一台计算机上运行不同的 SSH 服务器ForceCommand,那么他们可以根据其访问控制配置通过该服务器登录。

此外,如果他们有机会物理访问终端,他们就可以登录。

然而,我认为对于大多数情况来说,这是相当强大的访问控制。

相关内容