受限rbash用户通过SSH修改密码所需可访问二进制文件咨询
受限rbash用户通过SSH修改密码所需可访问二进制文件咨询
嘿,这个问题我之前帮朋友排查过类似的,给你理一理关键点和可能的解决方向:
首先,核心需求肯定是让用户能执行passwd命令,但光软链/usr/bin/passwd到用户专属bin目录可能不够,或者你可能忽略了一些rbash的限制细节,先给你列必备的可访问二进制和排查步骤:
必备的核心二进制
/usr/bin/passwd:这是修改密码的核心命令,你已经做了软链到用户的bin目录,这一步是对的,但要确保软链是用绝对路径创建的(比如ln -s /usr/bin/passwd /home/youruser/bin/passwd,别用相对路径)。另外,passwd本身必须保留SUID权限——你可以用ls -l /usr/bin/passwd检查,输出应该是-rwsr-xr-x,如果s位丢了,得用chmod u+s /usr/bin/passwd补回来,否则普通用户没法修改密码。
可能需要的辅助工具(依系统而定)
有些系统的PAM认证体系会让passwd调用其他小工具,比如:
getent:用于查询用户/组信息,部分系统上passwd会用到它验证用户身份pam_timestamp_check:如果你的PAM配置启用了时间戳验证,这个工具会被调用
这些工具也需要软链到用户的bin目录,但不是所有系统都需要,你可以先排查核心的passwd问题,不行再考虑这些。
为什么软链了还是不能用?排查步骤
- 确认PATH设置正确:rbash不允许用户修改PATH,所以必须确保用户登录时PATH只包含他的专属bin目录。你可以通过修改用户的
/etc/passwd条目,比如把用户行改成:youruser:x:1001:1001::/home/youruser:/bin/rbash,然后在/etc/profile或者用户的~/.bashrc(rbash允许读取这个文件)里设置export PATH=/home/youruser/bin——不过rbash会阻止用户修改PATH,所以最好在系统层面配置好默认PATH。 - 看具体报错信息:让用户登录后执行
passwd,看弹出的错误是什么?是「command not found」(说明PATH没设对)、「Permission denied」(可能SUID权限丢了或PAM限制)还是其他?针对性解决。 - 检查PAM配置:打开
/etc/pam.d/passwd,看看有没有限制该用户修改密码的规则,比如有没有deny或者required的规则阻止了操作。 - SELinux限制(如果开启):如果你的系统开了SELinux,可能会阻止rbash用户执行
passwd,可以临时执行setenforce 0关闭SELinux试试,如果能正常修改了,再调整SELinux的策略规则来允许这个操作。
备注:内容来源于stack exchange,提问作者Piotr Zych
相关产品推荐
相关产品推荐

