3.7 su命令
3.8 sudo命令
3.9 限制root远程登录
3.7su命令
su:切换用户
用法:su [-] 用户名1
2
3
4
5[root@localhost ~]# whoami
root
[root@localhost ~]# su kun1 ##切换kun1用户
[kun1@localhost root]$ whoami
kun1
-:切换用户时,把shell环境切换都新用户下1
2
3
4
5[root@localhost ~]# su kun1
[kun1@localhost root]$ pwd ##不带-切换用户 家目录还是前用户的家目录
/root
[kun1@localhost root]$ echo $PATH ##环境变量也是前用户的
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
1 | [root@localhost ~]# su - kun1 |
-c:让切换后用户执行命令再恢复身份1
2
3
4[root@localhost ~]# su - -c "touch /tmp/12.txt" kun1 ##用kun1新建文档
[root@localhost ~]# ls -l /tmp/
总用量 0
-rw-r--r--. 1 kun1 kun2 0 4月 4 20:26 12.txt
实例
1 | [root@localhost ~]# useradd -M kun3 ##新建用户kun3 并不建立家目录 |
1 | [root@localhost ~]# su - kun3 |
- 思路:由于没有目录和配置文件
- 创建家目录
- 并把配置文件复制到家目录下
- 更改家目录和文件的权限
1 | [root@localhost ~]# mkdir /home/kun3 ##创建kun3目录 |
1 | [root@localhost ~]# ls -al /etc/skel/ ##这个是配置文件模版的路径 |
1 | [root@localhost ~]# cp /etc/skel/.bash* /home/kun3 ##复制配置文件 |
1 | [root@localhost ~]# chown -R kun3:kun3 /home/kun3/ ##修改目录的权限 |
1 | [root@localhost ~]# su - kun3 |
3.8sudo命令
visudo:编辑sudo的配置文件来授权sudoer
由于我们想在kun1用户下来临时执行root的某些命令1
[root@localhost ~]# visudo
找到下面这行
这里第一个ALL表示主机 第二个ALL表示主机上的用户 第三个ALL表示命令
加上kun1 ALL=(ALL) /usr/bin/ls, /usr/bin/cat
sudo:临时让用户以另一身份来执行指定命令 登录输入原用户的密码
用法:sudo 命令1
2
3
4[root@localhost ~]# su - kun1
上一次登录:三 4月 4 20:26:00 CST 2018pts/0 上
[kun1@localhost ~]$ ls /root ##kun1用户权限不够ls不了root
ls: 无法打开目录/root: 权限不够
1 | [kun1@localhost ~]$ sudo ls /root ##第一次登录会提示并输入当前用户的密码 |
我们想让kun2用户使用sudo时候不输人密码 那么在visudo设置如下kun2 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
1 | [root@localhost ~]# su - kun2 |
visudo还有其他用法
这里我们为命令做别名(别名名称要使用大写)

1
2
3
4[root@localhost ~]# su - kun2
上一次登录:三 4月 4 22:04:27 CST 2018pts/0 上
[kun2@localhost ~]$ sudo ls /root/
1.txt anaconda-ks.cfg 学习计划.txt
也可以为以组来配置visudo1
2
3[root@localhost ~]# tail -5 /etc/passwd ##kun1和kun2 都是在1001组里面 1001是kun2组
kun1:x:8888:1001::/home/kun1/:/bin/bash
kun2:x:1001:1001::/home/kun2:/bin/bash

1
2
3
4[root@localhost ~]# su - kun1
上一次登录:三 4月 4 21:53:24 CST 2018pts/0 上
[kun1@localhost ~]$ sudo ls /root
1.txt anaconda-ks.cfg 学习计划.txt
限制root远程登录
为了安全 一般会禁止root远程登录 使用普通用户登录1
[root@localhost ~]# vi /etc/ssh/sshd_config ##进入ssh的配置文件

把PermitRootLogin 改为no
然后重启远程登录服务1
[root@localhost ~]# systemctl restart sshd.service
再去远程登录看看
这里我们不知道root的登录密码,又想让普通用户去登录root 可以用sudo su 来实现
先在配置配置文件设置1
[root@localhost ~]# visudo

1
2
3
4[kun1@localhost ~]$ sudo su - ##成功登录root用户
上一次登录:三 4月 4 21:41:17 CST 2018从 192.168.80.1pts/1 上
[root@localhost ~]# whoami
root