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