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

XMSDN

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
💡 温馨提示

📌 阅读须知 Rules & Notice

本站坚持免费分享,致力于为大家提供实用、优质的内容与资源。

🔗欢迎大家收藏与转发,转载请保留本站链接,请勿私自去除版权信息。

📚所有外部整理资源,仅作学习交流使用,请勿用于各类商业用途。

🤝网络相聚本是缘分,希望大家文明交流,理性浏览。

🛠️若发现内容有误或涉及侵权,我们将第一时间处理整改。

💖 感谢每一位朋友的陪伴与支持

✨ 用心分享,一路同行 ✨

目录[+]