1.sudo简介
sudo能实现把有限的管理操作授权给某普通用户,并且还能限定其仅能够在某些主机上执行此类命令,普通用户的这些操作过程还会被记录在日志中,以便日后审计,而且不需要管理员的帐号密码,只需在需要执行的命令前加上sudo就行了
1-1.配置sudo文件:
/etc/sudoers 注:虽然该配置文件可以使用vim编辑,但是不推荐,建议使用visudo,这是他专门的命令
语法:
who which_host=(whom) command #在定义命令的时候,由于普通用户是不能获取管理员的路径的,所以执行的命令要写全路径 普通用户 指定主机=谁的权限 可执行命令
1-2.sudo命令
sudo �Cl : #查看自己可以执行哪些管理员命令 [hadoop@lidefu ~]$ sudo -l #查看hadoop可以使用的命令 [sudo] password for hadoop: #需要输入密码确认 User hadoop may run the following commands on this host: (root) /usr/sbin/useradd #hadoop可以执行的命令 sudo -k #强迫使用者在下一次执行sudu时必须输入密码 [hadoop@lidefu ~]$ sudo -k #直接执行就行了,清除一下5分钟的限制
2.sudo的别名
如果需要定义的用户或者命令等过多,逐条写不便于管理,于是可以使用别名机制,别名只能使用纯大写字母,别名可以嵌套,也就是说可以别名中包含别名
2-1.用户别名
示例: # User_Alias ADMINS = jsmith, mikem #多个用户需要用逗号隔开 # User_Alias ADMINS = %group #组名需要用%标识
2-2.主机别名Host_alias
示例: # Host_Alias FILESERVERS = fs1, fs2
2-3.命令别名
示例: # Cmnd_Alias NETWORKING = /sbin/route...
3.练习:
3-1.给用户hadoop用户授权可以添加用户
[root@lidefu ~]# visudo #使用visudo并添加如下语句 hadoop ALL=(root) /usr/sbinl/useradd [root@lidefu ~]# su - hadoop #切换用户,可以看到以下,执行成功 [hadoop@lidefu ~]$ sudo useradd vdm12315 #使用sudo添加一个用户 # #占位符,这里需要输入密码,默认两次都需要输入密码的间隙为5分钟 [hadoop@lidefu ~]$ tail -1 /etc/passwd #查看是否添加成功 vdm12315:x:509:509::/home/vdm12315:/bin/bash
3-2.使用用户别名
User_Alias USERADMIN = hadoop #定义用户别名 USERADMIN ALL=(root) /usr/sbin/useradd #使用用户别名 [root@lidefu ~]# su - hadoop #切换用户 [hadoop@lidefu ~]$ sudo useradd ldfi #添加用户 [sudo] password for hadoop: #需要hadoop的密码 [hadoop@lidefu ~]$ tail -1 /etc/passwd #查看 ldfi:x:510:510::/home/ldfi:/bin/bash #添加成功
3-3.使用命令别名
注意:下面的/usr/bin/passwd非常危险,以为他可以修改root的密码
Cmnd_Alias USERCMND = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd #添加命令别名 [hadoop@lidefu ~]$ sudo userdel ldfi #使用删除命令 [sudo] password for hadoop: #输入密码 [hadoop@lidefu ~]$ tail -1 /etc/passwd #查看 vdm12315:x:509:509::/home/vdm12315:/bin/bash #ldfi被删除 [hadoop@lidefu ~]$ sudo passwd root #修改管理员密码 Changing password for user root. #可以修改 New password:
3-4.不允许执行特定命令
Cmnd_Alias USERCMND = ...,/usr/bin/passwd, ! /bin/usr/passwd root #不允许修改root的密码 [hadoop@lidefu ~]$ sudo passwd root #尝试修改 [sudo] password for hadoop: Sorry, user hadoop is not allowed to execute '/usr/bin/passwd root' as root on lidefu. #不能修改
3-5.普通用户hadoop全权获得管理员权限
hadoop ALL=(ALL) ALL #hadoop全权获得管理员权限 hadoop ALL=(ALL) NOPASSWD: ALL #同上,不需要密码
3-6.普通用户执行sudo时不输入密码
USERADMIN ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd #表示所有命令的执行都不需要输入密码 USERADMIN ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel,PASSWD: /usr/bin/passwd #NOPASSWD后的不需要输入密码,PASSWD后的需要输入密码
3-7.让whell组的所有用户都有管理员的权限
# %wheel ALL=(ALL) ALL #wheel的组都可sudo执行所有root命令 # %wheel ALL=(ALL) NOPASSWD: ALL #同上,不需要输密码
3-8.授权hadoop用户能够以管理员身份基于sudo执行ifconfig,route,ip,netstat命令,后面两个需要输入密码执行,前两个不要
USERADMIN ALL=(root) NOPASSWD: /sbin/ifconfig, /sbin/route,PASSWD: /sbin/ip, /bin/netstat #笔者这里错了但是不知道怎么错了,望指教