将用户 testuser 的默认 shell 改为 /sbin/nologin

admin

Linux系统安全加固:如何彻底禁止普通用户使用 sh 命令

在Linux系统的日常运维和安全管理中,限制特定用户的权限是一项重要的工作,出于安全考虑或防止恶意脚本执行,我们需要禁止某个普通用户使用 sh 命令(即 Bourne shell),这通常是为了防止用户通过反弹Shell获取系统权限,或者防止其执行未授权的自动化脚本。

以下是几种实现“禁止普通用户使用 sh 命令”的方法,按推荐程度排序:

将用户 testuser 的默认 shell 改为 /sbin/nologin

将用户默认 Shell 更改为 /bin/false/sbin/nologin(最推荐)

这是最彻底且最常用的方法,默认情况下,Linux用户登录系统时会分配一个Shell,如果我们将用户的默认Shell设置为不可用的路径,该用户将无法获得任何Shell环境,自然也就无法执行 sh 命令,也无法进行交互式登录。

操作步骤:

  1. 以root用户登录系统。
  2. 使用 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

操作步骤:

  1. 编辑 /etc/shells 文件:

    vi /etc/shells
  2. 在文件中找到 /bin/sh 这一行,并在前面加上 进行注释:

    #/bin/sh
    /bin/bash
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码