Linux sudo实现授权

  • Linux sudo实现授权已关闭评论
  • 303 次浏览
  • A+
所属分类:linux技术
摘要

软件包配置文件授权规则配置文件用户别名主机别名代表者别名操作别名


sudo:superuser do,实现普通用户执行root命令的授权工具。

一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。  sudo使一般用户不需要知道超级用户的密码即可获得权限 
#过程: (1)超级用户授权:首先 超级用户 将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);  (2)管理员确认用户的身份:在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。  (3)以超级用户身份执行命令:之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。 

sudo的组成:

  • 软件包

  • 配置文件

  • 授权规则配置文件

软件包:sudo  配置文件:/etc/sudo.conf  #一般不用修改  授权规则配置文件:# 	/etc/sudoers #这个文件不建议直接改,因为改错了就会影响授权x 	 	/etc/sudoers.d  #可以把授权文件放在这个目录下面,防止所有授权规则放在一起太臃肿 	 	#配置文件中支持使用通配符 glob  安全编辑授权规则文件和语法检查工具: visudo ≈ vim /etc/sudoers  	/usr/sbin/visudo  #建议这个命令来改用户的授权,在编辑的时候有语法提示功能,格式错误会提示 

sudo工具授权文件的编写格式

#格式: 授权用户  登入的主机=(代表用户)   能执行的操作 user      host=(runas)           command  user: 表示给谁授权  #%group 表示对组进行授权  host: 表示在哪个主机登录 ALL表示所有主机  (runas):表示以哪个用户的身份运行 一般是root  command: 表示能执行那些操作(命令需要写绝对路径) ALL表示所有   #其中NOPASSWD:command 表示不用验证这个用户的密码 
User的形式: username #用户名  #uid  #uid的形式  %group_name  #组的形式  %#gid  #gid的形式  host的形式: ip或hostname  #ip地址或者主机名  network(/netmask)  #ip地址/子网掩码   command的形式: command name #命令的名字  directory #这个目录里面的所有命令都授权  sudoedit #sudoedit是一个编辑授权配置文件的工具。表示被授权的用户可以编辑sudo的授权配置文件(/etc/sudoers) 
#范例:授权tom用户具有挂载光盘的功能  tom ALL=(root) /usr/bin/mount /dev/cdrom /mnt 

sudo的别名

  • 用户别名

  • 主机别名

  • 代表者别名

  • 操作别名

sudo授权的时候允许加自定义的别名  四种别名: User_Alias #被授权的用户  Runas_Alias #代表谁  Host_Alias  #主机  Cmnd_Alias #执行的操作  #别名必须是大写字母和数字、下划线的结合  #定义别名的格式: 定义别名类型 别名的名称 = 值1,...,值n 

范例

User_Alias  NETADMIN= netuser1,netuser2 #定义用户别名  Cmnd_Alias NETCMD = /usr/sbin/ip,/usr/sbin/ifcon #定义操作别名  NETADMIN ALL=(root) NETCMD 

sudo命令:

sudo -i -u tom 切换身份功能和 su 相似,但不一样  #因为sudo必须提前授权,而且要输入自已的密码确认自己的身份,而su的话是需要切换者的密码。  #su switch user  sudo [-u user] COMMAND  -V 显示版本信息等配置信息  -u user 默认为root #表示代表谁执行这个操作  -l,ll 列出用户在主机上可用的和被禁止的命令  -v 再延长密码有效期限5分钟,更新时间戳 

范例

#修改验证密码间隔为2分钟 [root@centos8 ~]#vim /etc/sudoers 	Defaults   env_reset , timestamp_timeout=2  #sudo -V 可以查看用户的默认时间间隔。 
#ubuntu 默认用户具有sudo权限  #它是将普通用户都加到了sudo这个组里面了。  root@ubuntu1804:~# grep %sudo /etc/sudoers  %sudo ALL=(ALL:ALL) ALL #ALL:ALL 任何用户:任何组 
修改ubuntu的visudo的默认编辑器  #ubuntu的visudo默认是使用nano工具打开的  export EDITOR=vim