如何阻止sudo用户修改root用户密码
如何阻止sudo用户修改root用户密码
嗨,作为过来人完全理解你的顾虑——给团队成员sudo权限让他们装软件,但又怕有人改root密码搞出乱子,确实得找个平衡的办法。下面分享几个实用的方案,你可以根据实际情况选:
1. 最小权限原则:只授予安装应用的必要权限
这是最稳妥的方式,毕竟用户只需要装软件,根本不需要全量sudo权限。你可以通过visudo编辑sudoers文件,给特定用户(或用户组)只开放包管理相关的命令:
比如针对Debian/Ubuntu系统:
# 给单个用户授权 alice ALL=(ALL) /usr/bin/apt, /usr/bin/apt-get, /usr/bin/dpkg # 给用户组授权(先创建installers组,再把用户加进去) %installers ALL=(ALL) /usr/bin/apt, /usr/bin/apt-get, /usr/bin/dpkg
针对RHEL/CentOS/Fedora系统:
alice ALL=(ALL) /usr/bin/dnf, /usr/bin/yum, /usr/bin/rpm
这样用户只能用这些命令安装/卸载软件,连修改密码的途径都碰不到,安全系数最高。
2. 禁止特定修改密码的命令
如果确实需要给用户更多sudo权限,但就是要阻止改root密码,可以在sudoers里添加禁止规则。同样用visudo编辑,比如:
alice ALL=(ALL) ALL, !/usr/bin/passwd, !/usr/bin/passwd root, !/usr/bin/vim /etc/shadow, !/usr/bin/nano /etc/shadow
这里的!表示“禁止执行”,意思是alice可以用所有sudo命令,但不能运行passwd、passwd root,也不能用vim/nano编辑存储密码的/etc/shadow文件。
不过要注意,这种方式有局限性——用户可能用其他编辑器(比如emacs)或者通过其他间接方式修改密码,所以如果不是万不得已,还是优先用第一种方法。
重要提醒
编辑sudoers文件一定要用visudo命令,不要直接用编辑器打开!因为visudo会自动检查语法错误,如果写错了,它会提示你,避免出现保存后sudo失效的尴尬情况。
备注:内容来源于stack exchange,提问作者Nipun




