sudo详细介绍...

 

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 #笔者这里错了但是不知道怎么错了,望指教

 

你可能感兴趣的:(sudo)