一、sudo安全切换工具
- 1、sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。
- 2、sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
二、sudo命令
- 命令语法:
sudo [options] COMMAND
常见options:
-l COMMAND :列出用户可执行或不可执行的命令信息;
-k:清除此前缓存的用户成功认证的时间戳,默认缓存时间戳为5分钟;
三、visudo
- 配置文件:/etc/sudoers
- 也可以用visudo命令编辑修改/etc/sudoers配置文件
[root@bogon ~]# useradd fedora #添加一个用户
[root@bogon ~]# echo '12345' | passwd --stdin fedora #给新用户添加密码
更改用户 fedora 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@bogon ~]# visudo #编辑配置文件
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL !/bin/su,!/usr/bin/password root #组设置,必须是基本组,组里的用户可以执行任何权限,限制普通用户使用su命令和给root修改密码
fedora ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel #设置fedora只能有添加和删除用户操作权限
[root@bogon ~]# su fedora #切换到fedora用户
[fedora@bogon root]$ sudo useradd user1 #测试新建一个用户
[sudo] fedora 的密码:
[fedora@bogon root]$ tail -1 /etc/passwd #查询是否新建用户
user1:x:1001:1001::/home/user1:/bin/bash
[fedora@bogon root]$ sudo -k #清除记录信息
[fedora@bogon root]$ sudo -l #查看sudo可以执行的命令
- 定义别名的方法:
- ALIAS_TYPE NAME=item1, item2, item3, ...
- NAME:别名名称,必须使用全大写字符;
别名类型ALIAS_TYPE:
User_Alias:定义用户别名,用户组(前面加%)
Host_Alias:定义主机别名
Runas_Alias:用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户;
Cmnd_Alias:定义命令别名;
- 注意:用户名当然是在系统中存在 的,在/etc/paswd中必须存在;对于定义命令别名,成员也必须在系统中事实存在的文件名(需要绝对路径);
例如:
- 单个用户授权命令别名
[root@bogon ~]#visudo #编辑配置文件
## Allows people in group wheel to run all commands
#%wheel ALL=(ALL) ALL
User_Alias USERADMIN=fedora,centos #配置别名组,组里有两个用户
Cmnd_Alias NETADMINCMD = /usr/sbin/ip #配置命令别名1
Cmnd_Alias USERADMINCMD = /usr/sbin/userdel, /sbin/useradd #配置命令别名2
fedora ALL=(ALL) NETADMINCMD #fedora使用命令别名1权限
centos ALL=(ALL) NETADMINCMD,USERADMINCMD#centos用户使用命令别名1和权限
- 用户别名组授权命令别名
[root@bogon ~]#visudo #编辑配置文件
## Allows people in group wheel to run all commands
#%wheel ALL=(ALL) ALL
User_Alias USERADMIN=fedora,centos #配置别名组,组里有两个用户
Cmnd_Alias NETADMINCMD = /usr/sbin/ip #配置命令别名1
Cmnd_Alias USERADMINCMD = /usr/sbin/userdel, /sbin/useradd #配置命令别名2
USERADMIN ALL=(ALL) NOPASSWD: NETADMINCMD, PASSWD:USERADMINCMD
#useradmin组里面的用户都有拥有两个别名中权限,执行netadmincmd时不需要密码,执行useradmincmd时需要密码
- 测试
[root@bogon ~]# su fedora
[fedora@bogon root]$ sudo -l
[sudo] fedora 的密码:
用户 fedora 可以在 bogon 上运行以下命令:
(ALL) /usr/sbin/ip
[root@bogon ~]#su
[root@bogon ~]#useradd centos #添加centos用户
[root@bogon ~]# echo '12345' | passwd --stdin centos
更改用户 centos 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@bogon ~]# su centos
[centos@bogon root]$ sudo -l
用户 centos 可以在 bogon 上运行以下命令:
(ALL) /usr/sbin/ip, /usr/sbin/userdel, /sbin/useradd