一、su命令
1.
su - 切换用户
1. [root@localhost ~]# su - lx01
上一次登录:二 12月 26 13:29:04 CST 2017pts/0 上
2. [lx01@localhost ~]$ whoami
lx01
3. [lx01@localhost ~]$ pwd #加上”-“,用户切换到自己的家目录下,这样可以加载自己的配置文件
/home/lx01
切换用户的时候要加上“-”,这样切换得更彻底,不加“-”仍然在root目录下
1. [root@localhost ~]# su lx01
2. [lx01@localhost root]$ whoami
lx01
3. [lx01@localhost root]$ pwd #可以看到切换用户时没加"-" ,用户的家目录仍然在root下
/root
2.
s
u - -c 不切换用户,以另外一个用户的身份执行一条命令
[root@localhost ~]# su - -c "mkdir /tmp/zx123" lx03 以lx03用户的身份,在/tmp下/创建一个目录/zx123/
[root@localhost ~]# ls -ld /tmp/zx123
drwxrwxr-x. 2 lx03 lx03 6 12月 26 17:57 /tmp/zx123 可以看到这个目录的所有者、所属组都是zx123
3. 当用户的没有家目录如何创建家目录,
/etc/skel/下存放着用户配置文件的模板。
1. [root@localhost ~]# su - lx01 # 在root下切换到另外一个用户lx01下
上一次登录:二 12月 26 18:05:25 CST 2017pts/1 上
2. [lx01@localhost ~]$ su - mk100 #在从lx01切换到用户mk100下
密码:
su: 警告:无法更改到 /home/mk100 目录: 没有那个文件或目录
3. -bash-4.2$ pwd #切换到mk100用户下,但是出现提示用户mk100家目录不存在
/home/lx01 #仍然在lx01用户的家目录下,因为zx123没有家目录导致配置文件不能加载
4. [root@localhost ~]# id mk100
uid=1007(mk100) gid=1007(mk100) 组=1007(mk100) #查看mk100用户的uid为1007,gid为1007
5. [root@localhost ~]# mkdir /home/mk100 #在home下创建一个目录mk100
6. [root@localhost ~]# chown 1007:1007 /home/mk100 #更改mk100目录的所有者和所属组为1007
7. [root@localhost ~]# cp /etc/skel/.bash* /home/mk100 #
/etc/skel/这个目录存放用户配置文件的模板,将里面的".bash"开头的配置文件拷贝到zx100里面
8. [root@localhost ~]# chown -R 1007:1007 /home/mk100 #更改所有文件的所有者和所属组为1007
9. [root@localhost ~]# su - mk100 # 切换到mk100目录下
上一次登录:二 12月 26 18:19:32 CST 2017pts/1 上
[mk100@localhost ~]$ #成功切换到目录下
二、sudo命令
1. sudo命令允许普通用户临时拥有root用户的身份执行一些命令
visudo
sudo命令的配置文件,
找到"Allow root to run any commands anywhere"这一行,在root这一行下面添加一行
第一段:zx100表示用户,
第二段:第一个ALL为允许使用sudo的主机,写ALL即可。第二个括号里的ALL为用户(在这里为zx100)使用sudo后将会被授予哪个身份;
第三段:允许执行的命令,ALL表示全部,在这里写了:ls、mv、cat这三个命令,需要使用绝对路径,以","分隔,并且加上空格
2.
s
udo
进行测试,zx100用户是否可以使用ls命令:
1. [root@localhost ~]# su - zx100 #切换到mk100用户下
上一次登录:二 12月 26 19:00:06 CST 2017pts/1 上
2. [zx100@localhost ~]$ ls /root/ #直接使用ls提示权限不够
ls: 无法打开目录/root/: 权限不够
3. [zx100@localhost ~]$ sudo /usr/bin/ls /root/ #执行sudo命令
[sudo] zx100 的密码: #密码只用输入一次,之后就不用输入
11_hard.txt 11.txt 22.txt anaconda-ks.cfg qw zx #成功执行ls
3. 使用sudo时不需要密码,在第三段前面添加NOPASSWD即可
1. [root@localhost ~]# su - lx02 #切换到lx02用户下
2. [lx02@localhost ~]$ ls /root/ #使用ls查看root目录
ls: 无法打开目录/root/: 权限不够 #提示权限不够
3. [lx02@localhost ~]$ sudo ls /root/ #使用sudo命令,可以正常查看,且不需要输入密码
11_hard.txt 11.txt 22.txt anaconda-ks.cfg qw zx
4. 设置命令组,将几个命令放在一起做一个别名
[root@localhost ~]# su - mk100 # 切换到mk100用户下
上一次登录:三 12月 27 06:59:10 CST 2017pts/2 上
[mk100@localhost ~]$ ls /root/ #直接ls不行
ls: 无法打开目录/root/: 权限不够
[mk100@localhost ~]$ sudo ls /root/ #使用sudo可以查看
11_hard.txt 11.txt 22.txt anaconda-ks.cfg qw zx
三、限制root远程登录
1. 设定用户的Alias,设定一个用户组:WQ
2. 给用户组WQ添加su的权限
3. 使用sudo从普通用户登陆到root用户
1. [mk100@localhost ~]$ sudo su - root
上一次登录:三 12月 27 16:31:22 CST 2017从 192.168.177.1pts/0 上
2. [root@localhost ~]# whoami #不用root的密码直接登陆到root上
root
4. 限制root远程登陆
vi /etc/ssh/sshd_config # 编辑sshd服务的配置文件限制root远程登陆
systemctl restart sshd.service #更改配置文件后重启sshd服务
5. 尝试使用putty远程登陆root用户,发现登陆不了
可以使用普通用户登陆系统
普通用户再使用sudo命令切换到root