在实际应用中,因为怕造成难以挽回的失误,所以尽量会避免root用户直接操作,为了能让普通用户执行特殊命令,就需要对普通用户sudo授权。
sudo的配置文件是/etc/sudoers,一般是没有写权限的,添加写权限之后再修改文件的内容。
最常见的授权方式如下:
hhALL=(ALL) ALL
hh:想要授权的用户
第一个ALL:允许从任何终端(机器)使用sudo
(ALL):切换到哪一个用户执行命令,如果缺省默认是root
最后一个ALL:允许用户执行任何命令,如果是多个命令就用逗号隔开
这样设置每次在使用sudo的时候,都需要输入hh的用户密码,如果不想输入密码,可以加入NOPASSWD:参数,上面的授权语句就要变成
hhALL=(ALL) NOPASSWD:ALL
为了增加读者的理解,这里给出几个示例。
示例一:
hh ALL=/bin/chmod,/bin/chown
如果在配置文件中添加上面那一句,用户hh就可以在任何机器上,切换到root用户下执行/bin/chmod和/bin/chown命令,可以用 sudo -l查看用户可执行的 sudo命令。
示例二:
hh ALL=(root)/bin/chmod,/bin/chown
这条语句和示例一产生的效果是一样的,(user)如果不写,则默认是root
示例三:
hh ALL=(root)NOPASSWD:/bin/chmod,/bin/chown
这句话表示用户hh可以在任何机器上,切换到root用户,执行/bin/chmod命令的时候不用输入密码,但是在执行/bin/chown命令的时候需要输入hh用户的密码。
示例四:取消某类程序的执行
hh ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk
这句话表示hh用户可以在任何机器上,切换到root用户,执行/usr/sbin和/sbin目录下的任何命令,单fdisk除外。
示例五:给用户组添加权限
给单个用户添加权限的规则适用于用户组,不过要在用户组前面添加%,%和用户组之间没有空格
%hh ALL=/bin/chmod,/bin/chown
这句话表示hh用户组下的所有成员可以在任何机器上,切换到root用户,执行/bin/chmod和/bin/chown命令。
看完上面的所有示例,相信读者就可以处理大多数的sudo权限配置了。