You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁止特定用户访问bash同时保留其他用户的bash权限(Ubuntu Server 22.04)

如何禁止特定用户访问bash同时保留其他用户的bash权限(Ubuntu Server 22.04)

嗨,我来给你几个实用的解决方案,完美匹配你的需求——既能阻止指定用户运行bash,又完全不影响其他用户的正常使用:

方法一:用ACL(访问控制列表)精准限制单个用户

这是最直接且不破坏全局权限的方法,Ubuntu 22.04原生支持ACL,步骤很简单:

  1. 先安装ACL工具(系统默认可能没预装):

    sudo apt install acl
    
  2. 假设你要限制的用户名叫restricted_user,给bash二进制文件添加针对该用户的拒绝执行权限:

    sudo setfacl -m u:restricted_user:--- /bin/bash
    

    这条命令的作用是:单独给restricted_user设置对/bin/bash的无任何权限(读、写、执行全禁止),而原有的755权限依然对其他所有用户生效。

  3. 验证效果:切换到该用户,尝试运行bash,会收到bash: permission denied的提示,说明限制成功。

  4. 如果之后需要取消限制,执行:

    sudo setfacl -x u:restricted_user /bin/bash
    

方法二:用用户组批量限制多个用户

如果以后有多个用户需要禁止访问bash,可以用组来批量管理:

  1. 创建一个专门的限制组,比如no_bash:
    sudo groupadd no_bash
    
  2. 将需要限制的用户加入这个组:
    sudo usermod -aG no_bash restricted_user
    
  3. 给bash设置该组的拒绝执行权限:
    sudo setfacl -m g:no_bash:--- /bin/bash
    
    这样所有加入no_bash组的用户都无法运行bash,其他用户的bash使用完全不受影响。

额外补充:用受限shell强化操作限制(可选)

虽然你已经把用户的默认shell设为/bin/sh,如果还想进一步限制用户的操作范围,可以把用户的shell改成rbash(受限bash):

sudo usermod -s /bin/rbash restricted_user

不过要注意,rbash只是限制用户的操作(比如不能随意切换目录、修改环境变量),并不能完全阻止用户尝试运行bash,所以还是搭配ACL的方法最稳妥。

重要提醒

千万别直接修改/bin/bash的默认权限(比如改成750),那样会导致所有非root用户都无法使用bash,完全违背你的需求。ACL才是精准控制单个/多个用户权限的最佳选择。

备注:内容来源于stack exchange,提问作者tndb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:38:14