Linux系统安全加固:如何彻底禁止普通用户使用 sh 命令
在Linux系统的日常运维和安全管理中,限制特定用户的权限是一项重要的工作,出于安全考虑或防止恶意脚本执行,我们需要禁止某个普通用户使用 sh 命令(即 Bourne shell),这通常是为了防止用户通过反弹Shell获取系统权限,或者防止其执行未授权的自动化脚本。
以下是几种实现“禁止普通用户使用 sh 命令”的方法,按推荐程度排序:

将用户默认 Shell 更改为 /bin/false 或 /sbin/nologin(最推荐)
这是最彻底且最常用的方法,默认情况下,Linux用户登录系统时会分配一个Shell,如果我们将用户的默认Shell设置为不可用的路径,该用户将无法获得任何Shell环境,自然也就无法执行 sh 命令,也无法进行交互式登录。
操作步骤:
- 以root用户登录系统。
- 使用
usermod命令修改目标用户的Shell。
# 或者改为 /bin/false(效果类似,都不会启动 shell) usermod -s /bin/false testuser
验证方法:
# 切换到该用户 su - testuser # 尝试执行 sh,将会提示 "This account is currently not available" sh
注意: 此方法会彻底禁止该用户登录,因此请确保不要误操作将自己的账户Shell改掉,否则将无法登录系统。
从 /etc/shells 中移除 /bin/sh
Linux系统在允许用户更改Shell或执行Shell命令时,会检查 /etc/shells 文件。/bin/sh 不在这个列表中,系统将拒绝该Shell或命令的执行,这种方法比方法一更灵活,它保留了用户登录的能力,但严格限制了其只能使用特定的Shell(如bash),而不能使用 sh。
操作步骤:
-
编辑
/etc/shells文件:vi /etc/shells
-
在文件中找到
/bin/sh这一行,并在前面加上 进行注释:#/bin/sh /bin/bash
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

