Ubuntu 22.04.3 LTS中配置/etc/sudoers后普通用户hf99无法直接执行useradd命令的问题求助
Ubuntu 22.04.3 LTS中配置/etc/sudoers后普通用户hf99无法直接执行useradd命令的问题求助
你好呀,咱们先把这个问题的核心点理清楚:
你在/etc/sudoers里给用户hf99配置的规则,本质是允许hf99通过sudo来执行这些系统管理命令,而不是让hf99不用sudo就能直接运行它们。
为什么直接useradd foo会报错呢?因为useradd这类涉及系统用户管理的命令,本身需要root级别的权限才能执行——普通用户的身份默认根本没有修改/etc/passwd、/etc/shadow这些系统文件的权限,所以自然会出现Permission denied和无法锁定文件的错误(锁文件的操作同样需要root权限)。
而你用sudo useradd foo能正常工作,恰恰说明你在sudoers里的配置是完全正确的:sudo帮你切换到了root身份,触发了你配置的授权规则,所以命令能顺利执行。
如果你的需求是让hf99不用手动输入sudo前缀就能执行这些命令,有两个可选的方案(但要注意安全风险):
- 给用户的shell设置别名:在hf99的
~/.bashrc里添加一行alias useradd='sudo useradd',同理给userdel和passwd也加上别名,这样用户输入useradd foo时,shell会自动替他加上sudo前缀; - (不推荐)给
/usr/sbin/useradd这类命令设置setuid位:执行sudo chmod u+s /usr/sbin/useradd,这样任何用户执行这个命令时都会以root身份运行。但这种做法会带来很大的安全隐患,因为只要能运行这个命令的用户都能获得root级别的操作权限,非常不建议在生产环境使用。
总结一下:你当前的sudoers配置没有问题,只是误解了它的作用——它是授权用户通过sudo执行命令,而不是赋予用户直接执行高权限命令的能力。
备注:内容来源于stack exchange,提问作者appfrosch
相关产品推荐
相关产品推荐

