#账号权限禁用命令
dev ALL=(ALL) NOPASSWD: ALL, !/bin/su, !/usr/bin/passwd,!/usr/bin/passwd root,!/bin/vim /etc/sudoers,!/usr/bin/vim /etc/sudoers,!/usr/sbin/visudo,!/usr/bin/sudo -i,!/bin/vi /etc/ssh/,!/bin/chmod 777 /etc/,!/bin/chmod 777 ,!/bin/chmod 777,!/bin/chmod -R 777 ,!/bin/rm /,!/bin/rm /,!/bin/rm -rf /,!/bin/rm -rf /,!/bin/rm /etc,!/bin/rm -r /etc,!/bin/rm -rf /etc,!/bin/rm /etc/,!/bin/rm -r /etc/,!/bin/rm -rf /etc/,!/bin/rm /root,!/bin/rm -r /root,!/bin/rm -rf /root,!/bin/rm /root/,!/bin/rm -r /root/,!/bin/rm -rf /root/,!/bin/rm /bin,!/bin/rm -r /bin,!/bin/rm -rf /bin,!/bin/rm /bin/,!/bin/rm -r /bin/,!/bin/rm -rf /bin/*
1. 基本含义
-
dev ALL=(ALL) NOPASSWD: ALL
允许用户dev
在所有主机(ALL
)以任何用户身份((ALL)
)执行所有命令(ALL
),且执行时不需要输入密码(NOPASSWD
)。 -
后面以逗号分隔的
!
开头的命令列表表示禁止执行的命令,即使dev
用户有执行所有命令权限,这些命令除外。
2. 禁止的命令示例
-
!/bin/su
禁止使用su
命令切换用户。 -
!/usr/bin/passwd
和!/usr/bin/passwd root
禁止修改任意用户密码,尤其是 root 密码。 -
!/bin/vim /etc/sudoers
、!/usr/bin/vim /etc/sudoers
、!/usr/sbin/visudo
禁止编辑 sudoers 文件,防止权限被修改。 -
!/usr/bin/sudo -i
禁止通过sudo -i
获得 root 交互式 shell。 -
!/bin/vi /etc/ssh/
禁止编辑 SSH 配置目录。 -
!/bin/chmod 777 /etc/
及类似命令
禁止将/etc/
目录权限改为 777,防止安全风险。 -
大量禁止
rm
命令删除关键目录,例如/
,/etc
,/root
,/bin
,包括递归和强制删除参数:
!/bin/rm /
,!/bin/rm -rf /etc
,!/bin/rm -rf /root
等。
3. 目的
-
放宽权限:允许
dev
用户无密码执行大部分命令,方便管理和操作。 -
限制风险操作:防止
dev
用户执行破坏系统安全和稳定的关键操作,如删除系统目录、修改关键配置文件、切换到 root 等。
4. 注意事项
-
这种配置比较复杂且容易出错,建议使用
visudo
编辑,避免语法错误。 -
禁止命令必须写全路径且精确匹配,否则可能失效。
-
仍有可能绕过限制(例如通过脚本或其他工具),安全性需结合其他措施保障。
总结
这条 sudoers 规则的含义是:
用户
dev
可以无密码执行所有命令,但禁止执行一系列高危命令(如切换用户、修改密码、编辑 sudoers 文件、修改 SSH 配置、给关键目录设置全权限、删除系统关键目录等),以保障系统安全。