Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权力”,让他们执行一些只有超级用户或其他特许用户才能完成的任务(主要体现为命令),比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
权力分配主要通过在配置文件/etc/sudoers按照约定格式添加一行信息。
用户名主机名=(运行用户名) 可运行的命令
例如:sn ALL=(ALL) /usr/sbin/useradd 给sn用户添加系统用户的权利
这样,就可以执行在sn用户下,执行sudo useradd username 命令来添加用户。
但是执行上条命令需要输入密码,怎么才能不要密码呢?需要在配置文件里添加NOPASSWD:
例如:sn ALL=(ALL) NOPASSWD: /usr/sbin/useradd
如果加入多条命令,多个命令之间用“,”隔开。
在执行sudo useradd username命令的时候报了一个错误:sudo: /etc/sudoers is mode 0640, should be 0440 sudo: no valid sudoer
原来是/etc/sudoers在我修改的时候添加了写权限,去掉写权限就好。
修改/etc/sudoers时可以不用添加写权限,只要在修改后用“:wq!”就能强制保存退出了。
更好的更改方式是使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
详细讲解的链接:http://man.linuxde.net/sudo