- 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