FreeBSD下sudo的使用
sudo是OpenBSD的一部分,其作者是 Todd C. Miller。在 FreeBSD 中可以使用 ports 或 package 来安装。
下面来安装并使用sudo吧!!
1)安装sudo(两种安装方法):
a: 从 ports 安装(推荐)
#cd /usr/ports/security/sudo
#make install clean
b: 通过 package 安装
#pkg_add -r sudo
2)配置sudo
sudo的配置文件在/usr/local/etc/sudoers里面。sudo的配置文件不应直接编辑,而应使用 visudo 来进行修改。
配置权限的格式如下:
USER MACHINE=(EFFECTIVE USER) [NOPASSWD:] COMMAND
第一列(USER)指定要授权的帐号。第二列(MACHINE)定义在那些机器上,这条执行生效,其好处是在多台机器上使用同一份配置文件。括号里的(EFFECTIVE USER)是使用指定实际执行该命令的帐号,
这就方便一个帐号允许用另外一个帐号来执行特定的命令,而不非得是root帐号。第四列(COMMAND)是指定的命令. NOPASSWD是可选项代表USER在sudo到某身份时不必输入该身份的密码即可执行命令。
下面是配置sudo的简单方法:
M-gtuiw ALL=(ALL) ALL
指定了M-gtuiw可以在任何地点以任何身份执行整个系统的全部命令。
%wheel ALL=(ALL) ALL
这个命令指定了wheel这个组的用户可以在任何地点以任何身份执行整个系统的全部命令。
M-gtuiw ALL=(apache) /usr/bin
指定了M-gtuiw可以在任何地点但只能以apache用户身份且只能执行/usr/bin目录下的命令。
M-gtuiw ALL= /usr/bin
等同于M-gtuiw ALL=(root) /usr/bin
3)设置密码在一段时间后自动退出
Defaults:M-gtuiw timestamp_timeout=0, runaspw, passwd_tries=1
记住: 在 Defaults:M-gtuiw 这个地方不允许有空格出现。下同:
这段句子有三个功能:
1)M-gtuiw需要root的密码才能运行sudo(句子中runaspw的缘故)。
2)这密码没有被系统记住(因为有timestamp_timeout=0的缘故),用了一次的sudo之后当再次使用时又得输入root密码。
如果将timastamp_timeout改为-1话,M-gtuiw只须去验证一次密码,之后将记住了M-gtuiw输入的密码,当第二次,第三次
使用sudo的时候都不用输入root密码了直到退出登录。
当然,其它的用户也可以这样,但须要不同的帐户和缺省值。在这里我们只改变M-gtuiw和增加一个新的用户“limda”:
Defaults:M-gtuiw timestamp_timeout=0
Defaults:limda timestamp_timeout=-1, runaspw
#user privilege specification
root ALL=(ALL) ALL
M-gtuiw ALL=(ALL) ALL
limda ALL=(ALL) ALL
M-gtuiw和limda拥有不同的缺省值。“Defaults”影响着每个用户使用sudo不同的权限。
4)sudo默认使用系统的 /var/log/messages 作为其日志文件;除此之外,也可以采用另外的日志,以便于进行审计。
Defaults logfile=/var/log/sudolog
记住,在上面没有 : 啊。
5) 限制sudo使用危险的命令:
M-gtuiw ALL=/bin/kill, /usr/sbin/
这里说明M-gtuiw用户只可以使用/bin/kill这个命令和/usr/sbin/里面的命令。
M-gtuiw lnserve=(paul, limda) /bin/kill, /usr/sbin/
说明了M-gtuiw只能在lnserv指定的机算机中以paul和limda的身份使用/bin/kill和/usr/sbin里面的命令。
6)sudo限制使用某些命令
M-gtuiw ALL=ALL, !/bin/rm
这里说明了M-gtuiw可以用除了/bin/rm之外的所有命令,在/bin/rm前面加上 ! 号就是为了限制使用这个命令。
这是我在sudo的网页里翻译出来的一些简单文本,本人的英文不是很好,翻译的不是很好,欢迎各位前来修正。
7)sudo时不输入密码直接执行命令
M-gtuiw ALL=(ALL) NOPASSWD: /usr/local/sbin/VBoxClient,/sbin/mount -t ntfs /dev/hda5 /d-driver
这里说明M-gtuiw在执行/usr/local/sbin/VBoxClient以及mount hda5时,不必输入root密码就可以root权限执行,
这里RUNAS为ALL实际上是指M-gtuiw可以sudo成任何身份且不必输入该身份的密码就可以执行后面的命令,当然root身份也不在话下。
NOPASSWD特别危险切记要让正确的人使用正确的命令。
M-gtuiw ALL=(ALL) NOPASSWD: ALL
这里说明M-gtuiw执行所有命令都不必输入密码,这极其危险。慎用。
M-gtuiw ALL=(ALL) ALL, NOPASSWD: /sbin/mount -t ntfs /dev/hda5 /d-driver
也可以让M-gtuiw用户可以sudo所有命令,但只针对某些命令不必输入密码。
原文链接:http://wiki.freebsdchina.org/doc/s/sudo_with_sudo