我有一台主要用作邮件服务器的机器:
$ uname -a Linux myhost.com 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
我希望那些实际上没有登录机器(但使用它来验证和获取邮件)的用户能够更改自己的密码。如果我将 /usr/bin/passwd 放在 /etc/shells 中(所以 passwd 命令是一个有效的 shell),并为用户更改 shell 条目,如下所示:
someuser:x:557:557:Some User:/home/someuser:/usr/bin/passwd
Run Code Online (Sandbox Code Playgroud)
然后,如果他们通过 ssh 连接到主机,他们会得到如下信息:
$ ssh myhost.com
someuser@myhost.com 的密码:<输入他们当前的密码>
上次登录: 2013 年 9 月 25 日星期三 16:07:35 来自 some-ip
更改用户 someuser 的密码。
更改某个用户的密码。
(电流)的UNIX密码:<键入他们的电流再次密码>
新密码:<输入新密码>
重新输入新密码:<输入新密码再次>
-passwd:所有身份验证令牌成功更新。
与 myhost.com 的连接已关闭。
效果很好……但是它安全吗?他们是否有某种方法可以利用这一点并闯入真正的外壳?
谢谢。
PS 在我的环境中,假设用户已经拥有 ssh 是合理的——但是如果有一个简单的“更好”的密码更改替代方法,我想听听:)