sudo的使用:
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su;
sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权;
配置文件/etc/sudoers:
# ll -h /etc/{sudo.conf,sudoers} -rw-r-----. 1 root root 1.8K Sep 25 2012 /etc/sudo.conf -r--r-----. 1 root root 4.0K Mar 2 2012 /etc/sudoers 权限中含有点表示含有隐藏属性。 # lsattr /etc/{sudo.conf,sudoers} -------------e- /etc/sudo.conf -------------e- /etc/sudoers
由于sudoers含有隐藏属性,所以即使管理员root也无法更改其中的内容。
所以sudoers有专门的修改工具visudo.
sudoers文件格式:
user where=(who) command
意义:允许哪个用户在哪个网络或主机以另一个谁的身份,去执行什么命令。
工作中为了方便,而采取了一下格式:
(1) %user where=(who) command
%user表示某一组的成员。
(2) User_Alias USER_NAME = hadoop, apache, nginx
Host_Alias HOST_NAME = ftp1, 192.168.1.100, 172.168.1.0/16
Runas_Alias 以谁的身份执行,一般都是root
Cmnd_Alias COMMAND = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd
上面的内容表示使用 别名对同类对象进行分组,而组名必须都使用大写。
限制某些命令的使用:
当开放/usr/bin/passwd命令时,那么任意用户都可以随意更改root用户的密码。
所以在使用时可以在命令前加上"!"取反,同时可以在命令后面跟上正则表达式。
apache 192.168.1.0/24 /usr/bin/passwd [a-zA-Z0-9]*, !/usr/bin/passwd root
标签的使用:
在用户第一次使用命令时,都会要求用户个人密码,但是可以加入标签使得不用输入密码,
或者必须输入密码。
例如:
yh ALL= /usr/sbin/useradd, NOPASSWD: /usr/sbin/userdel
这样在使用useradd文件时会使用密码,而userdel不会使用密码。
注意:标签NOPASSWD等不能写在Comn_Alias中,否则报错!
记录sudo使用者行为的日志文件:
# ll -h /var/log/secure -rw-------. 1 root root 1.2K Mar 12 20:23 /var/log/secure
语法
sudo [-bhHpV][-s ][-u <用户>][指令]
或
sudo [-klv]
参数
-b 在后台执行指令。
-h 显示帮助。
-H 将HOME环境变量设为新身份的HOME环境变量。
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
-l 列出目前用户可执行与无法执行的指令。
-p 改变询问密码的提示符号。
-s 执行指定的shell。
-u <用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
-v 延长密码有效期限5分钟。
-V 显示版本信息。
-S 从标准输入流替代终端来获取密码