限制Linux用户执行命令的关键是使用rbash结合PATH控制或sudoers白名单。首先将用户shell设为/bin/rbash,创建独立的bin目录存放允许命令的符号链接,并通过配置文件锁定PATH指向该目录,同时设置文件只读防止篡改。例如:sudo usermod -s /bin/rbash limiteduser,再创建/home/limiteduser/bin并链接ls、date等命令,最后在.profile中固定PATH并设为400权限。此方法简单有效,但存在绕过风险;更安全的方式是通过visudo配置sudoers文件,采用“白名单”精确授权特定用户以特定身份执行特定命令,如devuser ALL=(ALL) NOPASSWD: /usr/bin/git pull,避免使用黑名单机制以防规则冲突。此外,可编写自定义shell脚本作为登录shell实现高度定制化控制,但复杂度较高。为防rbash被绕过,必须确保用户无法修改PATH相关文件、不能调用bash -c或使用其他语言解释器(如python、perl)执行系统命令,必要时还需禁用某些内置命令和重定向操作。综合来看,rbash适合轻量级限制,sudoers适用于精细权限管理,而高安全场景建议多层防护结合。

想要在Linux里限制某个用户能跑哪些命令,说白了,就是给他套个“紧箍咒”。这事儿其实有不少办法,从修改他登录后用的那个壳子(shell),到更精细地控制他能用
sudo
限制Linux用户执行某些命令,这事儿我个人觉得,得看你限制的粒度有多细,以及你对安全性的要求有多高。
一个比较直接且常见的做法是利用受限的Bash shell (rbash)。当你把一个用户的默认shell设置为
/bin/rbash
cd
PATH
rbash
PATH
举个例子,你可以创建一个目录,比如
/home/limiteduser/bin
.bash_profile
.profile
PATH
# 假设用户名为limiteduser sudo usermod -s /bin/rbash limiteduser sudo mkdir /home/limiteduser/bin # 在这个bin目录里创建允许的命令的软链接 sudo ln -s /bin/ls /home/limiteduser/bin/ls sudo ln -s /bin/date /home/limiteduser/bin/date # 然后修改limiteduser的.bash_profile或.profile # 确保PATH只包含/home/limiteduser/bin,并且用户无权修改 echo 'export PATH=$HOME/bin' | sudo tee /home/limiteduser/.bash_profile > /dev/null sudo chown limiteduser:limiteduser /home/limiteduser/.bash_profile sudo chmod 400 /home/limiteduser/.bash_profile # 只读
这样一来,
limiteduser
/home/limiteduser/bin
ls
date
rbash
另一个更强大、更细粒度的控制方式是利用sudoers
visudo
/etc/sudoers
/etc/sudoers.d/
devuser
/usr/bin/git pull
devuser ALL=(ALL) NOPASSWD: /usr/bin/git pull
如果你想限制
devuser
rm -rf /
devuser ALL=(ALL) ALL, !/usr/bin/rm # 这种方式需要非常小心,因为ALL的顺序和匹配规则很复杂,容易出错。
我更倾向于“白名单”模式,即只允许执行明确指定的命令,而不是试图黑名单。
还有一种是自定义一个受限的shell脚本。你可以编写一个Python或Bash脚本,让它作为用户的登录shell。在这个脚本里,你可以实现更复杂的逻辑来判断用户输入的命令是否允许执行。这给了你最大的灵活性,但实现起来也最复杂,需要对脚本编写和安全有较好的理解。
说实话,
rbash
首先,死死地锁住PATH
PATH
.bash_profile
.profile
PATH
PATH
/bin
/usr/bin
以上就是Linux如何限制用户执行某些命令的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号