百度
360搜索
搜狗搜索

linux禁止用户执行命令详细介绍

在 Linux 系统中禁止用户执行特定命令或限制其操作权限,可根据不同需求采用以下方法。以下是常见的实现方式及操作步骤:

一、通过sudoers文件限制用户执行特定命令(推荐)

场景

限制用户通过sudo执行某些危险命令(如rmsh),或仅允许执行指定命令。

操作步骤

  1. 编辑 sudo 配置文件
    使用安全的编辑器修改sudoers文件:
    bash
     visudo

  2. 禁止用户执行特定命令
    在文件中添加规则,格式为:
    bash
    用户名 ALL /usr/bin/命令1, /usr/bin/命令2

    示例:禁止用户user1执行rmsh命令:
    bash

    user1 ALL /usr/bin/rm, /usr/bin/sh

  3. 仅允许执行指定命令(白名单模式)
    如果需要严格限制用户只能执行某些命令(其他命令均禁止),可设置:
    bash
    user1 ALL /usr/bin/命令1, /usr/bin/命令2

    例如,仅允许执行lscat
    bash

    user1 ALL /bin/ls, /bin/cat

  4. 生效与测试
    保存文件后,用户使用sudo时会受规则限制。测试:
    bash
     - user1

    file.txt

二、使用受限 Shell(rbashrsh

场景

限制用户登录后只能执行有限的操作,如不能修改目录、环境变量等。

操作步骤

  1. 设置用户默认 Shell 为受限 Shell
    修改/etc/passwd中用户的 Shell 字段为/usr/bin/rbash(或/usr/bin/rsh):
    bash
      /etc/passwd

    user1:x:1001:1001::/home/user1:/usr/bin/rbash

  2. 受限 Shell 的限制

    • 不能使用cd命令修改工作目录(只能通过$HOME路径访问)。
    • 不能修改环境变量(如PATHSHELL)。
    • 不能执行包含|&、重定向(><)等符号的命令。
    • 不能运行脚本或调用非当前 Shell 的程序(需配合PATH限制)。

  3. 测试
    重新登录用户user1,尝试执行受限操作(如cd /),会提示权限拒绝。

三、修改用户PATH环境变量(限制可执行命令范围)

场景

通过控制用户的PATH变量,使其只能访问指定目录下的命令,无法执行系统目录(如/bin/usr/bin)中的命令。

操作步骤

  1. 编辑用户的环境变量文件
    例如,修改用户~/.bashrc~/.profile,将PATH设置为仅包含允许的目录:
    bash
      /home/user1/.bashrc

  2. 禁止访问系统命令目录
    确保系统目录(如/bin/usr/bin)不在用户的PATH中,且用户无权限通过绝对路径执行命令(需配合文件权限设置):
    bash

    o-x /bin

  3. 生效与测试
    用户重新登录后,PATH生效。尝试执行系统命令(如ls)会提示 “命令未找到”。

四、通过文件权限禁止执行特定命令

场景

直接禁止用户执行某个具体命令文件(如/usr/bin/rm)。

操作步骤

  1. 修改文件权限
    移除用户对目标文件的执行权限:
    bash
      u-x /usr/bin/rm  

    go-x /usr/bin/rm

  2. 注意事项

    • 此方法影响所有用户(除非通过 ACL 精细控制),需谨慎使用。
    • 用户仍可能通过绝对路径执行其他目录的同名命令(如/usr/local/bin/rm),需配合PATH限制。

五、使用 Chroot 环境限制用户文件系统访问

场景

将用户限制在特定的目录树中,使其无法访问系统其他文件和命令。

操作步骤

  1. 创建 Chroot 监狱目录
    bash
      /chroot/user1

  2. 复制允许的命令到 Chroot 目录
    例如,若允许用户执行ls,需将/bin/ls及其依赖的库文件复制到 Chroot 目录:
    bash
       /bin/ls /chroot/user1/bin/

    ldd /bin/ls /chroot/user1/lib/

  3. 配置用户登录到 Chroot 环境
    使用chroot配合pam_chroot模块或修改登录脚本(如sshdForceCommand),具体配置较复杂,需结合服务(如 SSH)单独设置。

六、使用系统安全模块(AppArmor/SELinux)

场景

对进程进行更细粒度的权限控制,禁止用户运行特定类型的程序。

操作步骤(以 AppArmor 为例)

  1. 安装 AppArmor
    bash
       apparmor apparmor-utils  

  2. 编写 AppArmor 配置文件
    创建针对用户的配置文件(如/etc/apparmor.d/user.user1),限制可执行文件:
    bash
    /etc/apparmor.d/user.user1:

    /home/user1/**

    file,

    deny /usr/bin/rm,

    deny /usr/bin/sh,

  3. 加载配置并生效
    bash
     apparmor_parser  /etc/apparmor.d/user.user1

    apparmor restart

注意事项

  1. 权限最小化原则:根据需求选择合适的限制方法,避免过度限制影响用户正常工作。
  2. 测试与备份:修改系统文件(如sudoerspasswd)前务必备份,避免操作失误导致系统无法登录。
  3. 用户反馈:限制用户权限后,建议提前沟通说明,避免影响正常业务。

根据具体需求,可组合使用多种方法(如sudo限制 + 受限 Shell + PATH控制),以实现更严格的权限管理。

阅读更多 >>>  linux如输错了怎么返回

网站数据信息

"linux禁止用户执行命令"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:linux禁止用户执行命令的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!