![用户修改Samba密码的方法](https://linux22.com/image/83968/%E7%94%A8%E6%88%B7%E4%BF%AE%E6%94%B9Samba%E5%AF%86%E7%A0%81%E7%9A%84%E6%96%B9%E6%B3%95.png)
我有一个大约 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”选项来完成。
尝试这个:
将具有 Samba 帐户成员资格的每个用户授予同一组。对于我们的例子,让我们说“sambaOnly”:
#From Root groupadd sambaOnly usermod -a -G sambaOnly Joe
接下来,我们要更改 sshd_config 文件以包含以下内容:
#From Root cat << EOF >> /etc/ssh/sshd_config Match Group sambaOnly ForceCommand smbpasswd EOF
急速。根据我的理解(和简短的测试),这意味着当他们通过 SSH 登录时,他们将自动smbpasswd
运行命令,并且会收到相应的提示。他们永远不会有机会访问 shell。命令完成后,它们会自动断开连接,再次没有机会访问 shell。
我不能 100% 确定这会删除远程计算机的所有访问权限。例如,如果您在同一台计算机上运行不同的 SSH 服务器ForceCommand
,那么他们可以根据其访问控制配置通过该服务器登录。
此外,如果他们有机会物理访问终端,他们就可以登录。
然而,我认为对于大多数情况来说,这是相当强大的访问控制。