Linux--sudo权限讲解

sudo简介:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的

 

基本操作

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

[root@localhost /]# useradd Daniel #创建一个用户

[root@localhost /]# passwd Daniel  #设置密码

[root@localhost /]# su Daniel  #切换用户到Daniel

bash-4.1$  #切换成功

 

#给权限

#Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

#使用权限:在 /etc/sudoers 中有出现的使用者。这里可以直接修改sudoers,也可以额使用visudo,推荐使用visudo,可以判断你的语法是否正确

 

root@localhost /]# visudo

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

Daniel  ALL=(ALL)       ALL       #这是我们新添加的一行,意思是Daniel这个用户,可以使用所有的命令,使用单个命令(比如useradd),可以将ALL改成/user/sbin/add

 

#测试

-bash-4.1$ ls /root/

ls: 无法打开目录/root/: 权限不够

-bash-4.1$ sudo ls /root/

[sudo] password for Daniel:    #sudo后输入Daniel的密码即可

anaconda-ks.cfg  install.log  install.log.syslog

 

#现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,可以将它改成localhost=,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让Danielr用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:

Daniel   linux=(jimmy,rene)    /bin/kill

#但这还有个问题,Daniel到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 Daniel可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:

Defaults:foobar    runas_default=rene

Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:

Defaults    env_reset

  

别名

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#别名类型

1)Host_Alis定义主机别名

Host_Alias    WEBSERVERS = web1, web2  #WEBSERVERS是主机组,web1,web2是主机 #每个主机使用逗号分隔逗号后面有空格,=号两边也有空格,主机组就是别名,可以用这个别名来限制,主机就是在第一个ALL位置,可以定义很多这样的别名,每个别名可以当做一个主机组,平常很少用到

#正在生产场景中,一般情况不需要设置主机别名,在定义授权规则时可以通过ALL来匹配所有的主机

 

2)User_Alias定义用户别名

#别名成员可以是用户,用户组(用户组前面要加%号)

User_Alias ADMINS = Daniel, qwer, %groupname

#假如说用户Daniel,qwer和用户组%groupname都有一样的权限,那么直接就可以使用别名ADMINS限制了,后期如果要增加一个同样权限的用户或组,直接在后面加上即可

#引用位置Daniel ALL=(ALL)  ALL ALL #Daniel就是用户别名的引用位置

 

3)Runas_Alias定义runas别名

#这个别名指定的是“用户身份”,即sudo允许切换到的用户

#Runas-Alias定义的是某个系统用户可以执行sudo切换身份到Runas_Alias下包含的成员身份

#语法

Runas_Alias OP = root

#引用位置:括号里的那个ALL。表示使用sudo的时候是使用的OP身份来使用的(也就是root)

 

4)Cmnd_Alias定义命令别名

#命令别名就是定义一个可以把汗一对命令的名字

Cmnd_Alias  NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /usr/bin/net, /sbin/iptables

#引用位置:最后一个ALL。定义完成后,可以放在最后一个ALL位置,授权后,该用户或组就可以通过sudo来使用这些命令了

 

 

#完整定义

#User_Alias by Daniel

User_Alias    ADMINS = admin, Daniel, %admins

User_Alias    NETADMINS = netadmin, %netadmins

User_Alias    USERADMINS = useradmin

 

#Cmnd_Alias by Daniel

Cmnd_Alias    USERCMD = /usr/sbin/useradd, /usr/sbin/userdel, /user/bin/passwd [A-Za-z]*, /bin/chown, /bin/chmod

Cmnd_Alias    DISKCMD = /sbin/fdisk, /sbin/parted

Cmnd_Alias    NETCMD  = /sbin/ifconfig, /etc/init.d/network

Cmnd_Alias    CTRLCMD = /usr/sbin/reboot, /usr/sbin/halt

 

Runnas_Alias    OP = root, Daniel

 

##

ADMINS    ALL=(ALL)    USERCMD, NETCMD, CTRLCMD

NETADMINS    ALL=(OP)    NOPASSWD: NETCMD

USERADMINS    ALL=(OP)    NOPASSWD:  USERCMD #NOPASSWD,表示输入完一次后不需要在输入密码了,默认是输入完毕后,五分钟内不需要在输入

  

转载于:https://my.oschina.net/alin520/blog/3007543

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值