su用来切换用户。bash
直接用su test1,发现切换完成后,目录还在/root下,这说明并无彻底切换。要彻底切换,就要这样:服务器
彻底切换,就是在切换时加载用户的环境变量.bash_history,.bash_logout,.bash_profile。ssh
sudo命令的做用是让指定的用户能用别的身份(通常是root)来运行一些指定的命令。spa
配置sudo,使用visudo这个命令。好比咱们如今给test1用户以root的身份运行ls命令,应该这样配置:.net
##Allow root to run any commands anywhererest
root ALL=(ALL) ALLget
test1 ALL=(ALL) NOPASSWD:/bin/ls,/bin/mv,/bin/suit
配置以后能够看到:class
配置完成以后,能够用sudo命令来执行ls进入/root/目录。test
若是root用户的密码被盗窃了,而你的服务器又没有限制使用密匙登陆,那么就悲剧了。因此,限制root远程登陆仍是有必定的必要性的。那么怎么操做呢?
咱们想想,首先ssh那里应该禁止掉。可是禁止掉那里的话,咱们想用root用户进行一些操做怎么办呢?对,能够用su命令切换过去,可是咱们知道,在切换的时候须要输入密码,而咱们root的密码又不能随便给普通用户。这时候咱们想到了sudo命令,它里面有一个NOPASSWD选项,能够避免咱们输入密码。
如下以test1用户能su到root举例具体配置:
先在root用户下,visudo进行编辑:
[root@localhost ~]# su - test1
上一次登陆:一 11月 1 11:20:07 CST 2017pts/0 上
[test1@localhost ~]$ su -
密码:
^[csu: 鉴定故障
[test1@localhost ~]$
[test1@localhost ~]$
[test1@localhost ~]$ sudo su -
上一次登陆:一 11月 1 11:27:03 CST 2017pts/0 上
最后一次失败的登陆:一 11月 1 11:28:44 CST 2017pts/0 上
最有一次成功登陆后有 1 次失败的登陆尝试。
这说明visudo的配置已经成功了,如今咱们要关闭ssh配置的root登陆:
修改/etc/ssh/sshd_config:
修改成这样:
#LoginGraceTime 2m
PermitRootLogin no
systemctl restart sshd.service
退出,从新登陆后会报错。
而后换成test1登陆,看是否能su到root:
[test1@localhost ~]$ su root 密码: ^C [test1@localhost ~]$ sudo su - root 上一次登陆:一 11月 1 11:31:11 CST 2017从 192.1.88.1pts/0 上 最后一次失败的登陆:一 11月 1 11:34:38 CST 2017从 192.168.1.88ssh:notty 上 最有一次成功登陆后有 1 次失败的登陆尝试。