3.7 su命令
3.8 sudo命令
3.9 限制root远程登录
3.7su命令
su:切换用户
用法:su [-] 用户名
[root@localhost ~]# whoami
root
[root@localhost ~]# su kun1 ##切换kun1用户
[kun1@localhost root]$ whoami
kun1
-:切换用户时,把shell环境切换都新用户下
[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
[root@localhost ~]# su - kun1
上一次登录:三 4月 4 20:16:52 CST 2018pts/0 上
[kun1@localhost ~]$ pwd ##家目录切换到新用户的家目录下
/home/kun1/
[kun1@localhost ~]$ !echo
echo $PATH ##环境变量也是新用户的
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kun1//.local/bin:/home/kun1//bin
-c:让切换后用户执行命令再恢复身份
[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
实例
[root@localhost ~]# useradd -M kun3 ##新建用户kun3 并不建立家目录
[root@localhost ~]# tail -1 /etc/passwd
kun3:x:8890:8890::/home/kun3:/bin/bash ##虽然kun3有家目录路径 但实际没建这个目录
[root@localhost ~]# ls -l /home/
总用量 0
drwx------. 2 111 111 62 4月 4 20:14 111
drwx------. 2 1389 1389 62 4月 2 07:51 dalao
drwx------. 2 kun1 111 62 4月 2 07:38 kun03
drwx------. 2 kun1 kun2 83 3月 29 08:31 kun1
drwx------. 2 kun2 kun2 83 3月 29 08:31 kun2
[root@localhost ~]# su - kun3
su: 警告:无法更改到 /home/kun3 目录: 没有那个文件或目录
-bash-4.2$ ##没有家目录和里面的配置文件显示的shell
思路:由于没有目录和配置文件
1.创建家目录
2.并把配置文件复制到家目录下
3.更改家目录和文件的权限
[root@localhost ~]# mkdir /home/kun3 ##创建kun3目录
[root@localhost ~]# ls -al /etc/skel/ ##这个是配置文件模版的路径
总用量 24
drwxr-xr-x. 2 root root 62 3月 4 20:40 .
drwxr-xr-x. 74 root root 8192 4月 4 20:30 ..
-rw-r--r--. 1 root root 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 root root 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 root root 231 8月 3 2017 .bashrc
[root@localhost ~]# cp /etc/skel/.bash* /home/kun3 ##复制配置文件
[root@localhost ~]# ls -al /home/kun3
总用量 12
drwxr-xr-x. 2 root root 62 4月 4 20:42 .
drwxr-xr-x. 8 root root 79 4月 4 20:40 ..
-rw-r--r--. 1 root root 18 4月 4 20:42 .bash_logout
-rw-r--r--. 1 root root 193 4月 4 20:42 .bash_profile
-rw-r--r--. 1 root root 231 4月 4 20:42 .bashrc
[root@localhost ~]# chown -R kun3:kun3 /home/kun3/ ##修改目录的权限
[root@localhost ~]# ls -dl /home/kun3/
drwxr-xr-x. 2 kun3 kun3 62 4月 4 20:42 /home/kun3/
[root@localhost ~]# su - kun3
上一次登录:三 4月 4 20:34:02 CST 2018pts/0 上
[kun3@localhost ~]$ ##显示成功
sudo命令
visudo:编辑sudo的配置文件来授权sudoer
由于我们想在kun1用户下来临时执行root的某些命令
[root@localhost ~]# visudo
找到下面这行
这里第一个ALL表示主机 第二个ALL表示主机上的用户 第三个ALL表示命令
加上 kun1 ALL=(ALL) /usr/bin/ls, /usr/bin/cat
sudo:临时让用户以另一身份来执行指定命令 登录输入原用户的密码
用法:sudo 命令
[root@localhost ~]# su - kun1
上一次登录:三 4月 4 20:26:00 CST 2018pts/0 上
[kun1@localhost ~]$ ls /root ##kun1用户权限不够ls不了root
ls: 无法打开目录/root: 权限不够
[kun1@localhost ~]$ sudo ls /root ##第一次登录会提示并输入当前用户的密码
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] kun1 的密码:
1.txt anaconda-ks.cfg 学习计划.txt
[kun1@localhost ~]$ sudo cat /root/1.txt ##第二次使用就不需要输入密码
sadfsdfs
我们想让kun2用户使用sudo时候不输人密码 那么在visudo设置如下
kun2 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat
[root@localhost ~]# su - kun2
上一次登录:四 3月 29 07:45:10 CST 2018pts/0 上
[kun2@localhost ~]$ sudo ls /root/ ##kun2执行sudo ls时候不用输人密码
1.txt anaconda-ks.cfg 学习计划.txt
visudo还有其他用法
这里我们为命令做别名(别名名称要使用大写)
[root@localhost ~]# su - kun2
上一次登录:三 4月 4 22:04:27 CST 2018pts/0 上
[kun2@localhost ~]$ sudo ls /root/
1.txt anaconda-ks.cfg 学习计划.txt
也可以为以组来配置visudo
[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
[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远程登录 使用普通用户登录
[root@localhost ~]# vi /etc/ssh/sshd_config ##进入ssh的配置文件
把PermitRootLogin 改为no
然后重启远程登录服务
[root@localhost ~]# systemctl restart sshd.service
再去远程登录看看
这里我们不知道root的登录密码,又想让普通用户去登录root 可以用sudo su 来实现
先在配置配置文件设置
[root@localhost ~]# visudo
[kun1@localhost ~]$ sudo su - ##成功登录root用户
上一次登录:三 4月 4 21:41:17 CST 2018从 192.168.80.1pts/1 上
[root@localhost ~]# whoami
root