sudo授权控制

sudo命令是用来以另外一个用户的身份来执行某些命令,并且不需要知道对方的密码;sudo的默认安全策略记录在/etc/sudoers配置文件中。而运行安全策略文件中的命令时,需要用户输入自己的密码来进行身份验证。也就是说用户在执行sudo命令时需要输入自己的密码。如果验证失败,则命令不会被执行,如果用户没有权限执行命令,则会把此操作发送邮件给管理员。

sudo命令的语法
sudo [-bhHpV][-s ][-u <用户>][指令]
-u user:默认为root;
-l:列出用户可以使用的命令;
-k:再次检票,执行命令需要再次输入用户密码;
-v:因为sudo在第一次执行时或是在N分钟内没有执行(N预设为五分钟)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会询问密码;
-V:显示版本编号;
-b:将要执行的指令放在后台执行;

sudo命令的安全策略文件
/etc/sudoers
修改文件命令
visudo(有报错检查)

sudo还支持别名机制,可以通过别名来指明用户或者是命令
查看:man sudoers
常用别名格式:

Alias ::= 'User_Alias'  User_Alias (':' User_Alias)* |
               'Runas_Alias' Runas_Alias (':' Runas_Alias)* |
               'Host_Alias'  Host_Alias (':' Host_Alias)* |
               'Cmnd_Alias'  Cmnd_Alias (':' Cmnd_Alias)*

			     User_Alias ::= NAME '=' User_List
			
			     Runas_Alias ::= NAME '=' Runas_List
			
			     Host_Alias ::= NAME '=' Host_List
			
			     Cmnd_Alias ::= NAME '=' Cmnd_List
			
			     NAME ::= [A-Z]([A-Z][0-9]_)*

对用户做配置授权:
1)只允许user1用户和user2用户可以使用fdisk命令

User_Alias   USERADMINFD = user1,user2         //定义用户别名
Cmnd_Alias   COMMANDFD   = /usr/sbin/fdisk     //定义命令别名


root    ALL=(ALL)       ALL
USERADMINFD  ALL=(root) COMMANDFD
//这一行的意思是:允许哪些用户在哪个主机上以哪个用户的身份运行哪些命令
这里我指明的是:在USERADMIN这个别名当中的用户(user1,user2)
可以在所有主机上以root用户的身份运行COMMANDFD别名当中的命令

2)切换用户身份测试:

[root@www ~]# su - user1
Last login: Sat Mar  9 05:40:38 EST 2019 on pts/1
[user1@www ~]$ sudo -l            //查看当前用户可用的sudo命令
[sudo] password for user1: 
Matching Defaults entries for user1 on www:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME
    LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User user1 may run the following commands on www:
    (root) /usr/sbin/fdisk
[user1@www ~]$ 
[user1@www ~]$ sudo fdisk -l 

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005f749                     //运行成功

3)切换到user3这个不在安全策略文件中的用户试试

[root@www ~]# su - user3
Last login: Sat Mar  9 05:42:22 EST 2019 on pts/1
[user3@www ~]$ sudo -l
[sudo] password for user3: 
Sorry, user user3 may not run sudo on www.
[user3@www ~]$ 
[user3@www ~]$ sudo  fdisk -l
[sudo] password for user3: 
user3 is not in the sudoers file.  This incident will be reported.       //会提示user3在策略文件中没有定义
[user3@www ~]$ 

4)允许user3运行useradd,usermod,passwd命令

User_Alias  USERADMINUS  = user3
Cmnd_Alias   COMMADNUS   = /usrs/sbin/useradd,/usr/sbin/usermod,/usr/bin/passwd [a-z]*,!/usr/sin/passwd root   (指明passwd后面必须要接用户名,但不能是root)

USERADMINUS ALL=(root) NOPASSWD:COMMADNUS       //前面加NOPASSWD表明用户执行sudo操作时不用输入密码

5)切换到user3尝试创建用户

[root@www ~]# su - user3
Last login: Sat Mar  9 06:57:42 EST 2019 on pts/1
[user3@www ~]$ sudo -l 
Matching Defaults entries for user3 on www:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User user3 may run the following commands on www:
    (root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd
[user3@www ~]$ 
[user3@www ~]$ sudo useradd jyy
[user3@www ~]$ sudo passwd jyy
Changing password for user jyy.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[user3@www ~]$ 
[user3@www ~]$ sudo passwd
[sudo] password for user3: 
Sorry, user user3 is not allowed to execute '/bin/passwd' as root on www.     //并不能修改root用户的密码
[user3@www ~]$ 
[user3@www ~]$ 
[user3@www ~]$ 
[user3@www ~]$ sudo passwd user1           //可以修改其他普通用户的密码
Changing password for user user1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[user3@www ~]$ 


猜你喜欢

转载自blog.csdn.net/Micky_Yang/article/details/88364358
今日推荐