一、sudo的基本简介
sudo:执行用户临时拥有制定用户的权限(如普通用户jiang可以获取root的useradd的操作权限)
visudo:设置赋予用户执行sudo的权限,visudo实际上编译的环境为/etc/sudoers
[root@localhost ~]# visudo #执行编辑sudoers文件
定位到如下所示的内容以及各参数的意义
实践说明:用户jiang可以获取root的useradd的操作权限,那么如下所示
1、默认情况没有授权的情况下,普通用户jiang是否可以执行useradd,如增加用户test。
[jiang@localhost ~]$ useradd test
-bash: /usr/sbin/useradd: Permission denied
2、很显然是不能执行的,其原因在于useradd只有root才有执行权限
[jiang@localhost ~]$ ls -l /usr/sbin/useradd
-rwxr-x---. 1 root root 101168 Oct 15 21:32 /usr/sbin/useradd
3、那如何解决呢?可通过如下的方式解决。
在root用户下,执行命令visudo
[root@localhost ~]# visudo
编辑如下内容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
jiang ALL=(root) /usr/sbin/useradd
添加了如上的内容后,此时再在jiang用户下,通过如下方式执行,就可以在普通用户下调用useradd命令(sudo useradd test),此时jiang就获取了root对useradd的执行权限。
那么此时在/etc/passwd就可以查看到添加的用户test
二、sudo的特殊应用
应用案例:只允许普通账户登陆Linux,而不允许root账户登陆,而普通账户登陆后,然后通过普通账户登录切换到root账户。
1、拒绝root登录,如下编辑/etc/ssh/sshd_config服务端配置文件(sshd_config表示服务器端配置,ssh_config表示客户端配置)
PermitRootLogin no #设置该参数为no,就可以拒绝root登录
重新启动服务,/etc/init.d/sshd restart
表示设置过后,root就不能远程登录
[root@localhost ~]# tail /var/log/secure #日志信息
Mar 23 06:54:48 localhost unix_chkpwd[1737]: password check failed for user (root)
Mar 23 06:54:50 localhost sshd[1732]: Failed password for root from 192.168.1.105 port 64761 ssh2
2、那么在普通用户下,是否可以切换到root用户下呢?
[jiang@localhost ~]$ su - root
Password:
[root@localhost ~]# #在知道root的用户密码下,可通过su 切换到root下。
3、如果不知道root的密码,如何切换到root下呢?此时就需sudo帮忙了。操作如下
[root@localhost ~]# visudo
## Allow root to run any commands anywhere
jiang ALL=(root) NOPASSWD:/bin/su #表示jiang使用su命令切换到root下不需要密码
测试结果如下:
[jiang@localhost ~]$ sudo su - root
[root@localhost ~]# #没有输入密码就直接切换到root下。