su命令
命令:su
命令格式:su [-] username
用来切换用户登录
“-”,切换时,完整切换到用户家目录下
无“-”,还在切换时候的目录
[root@shuai-01 ~]# su shuai
[shuai@shuai-01 root]$ pwd
/root
有“-”,切换到用户的家目录
[root@shuai-01 ~]# su - shuai
上一次登录:二 10月 31 21:29:58 CST 2017pts/0 上
[shuai@shuai-01 ~]$ pwd
/home/shuai
在当前用户下,想要用其他用户名创建一个文件
[root@shuai-01 ~]# su - -c "touch /tmp/shuai.111" shuai
[root@shuai-01 ~]# ls -lt /tmp/ |head
总用量 0
-rw-rw-r--. 1 shuai shuai 0 10月 31 20:47 shuai.111
sudo
生产环境中,我们不直接取使用root账户来操作,但是有些操作又一定用到root权限执行一些命令,
这时,sudo可以使普通用户临时拥有其他用户(可以使root用户)的某些(也可以是所有)命令的权限,就显得很重要了。
配置文件
一想到设置,就应该了解配置文件,sudo命令的配置文件/etc/sudoers.tmp 。不过通常情况下,都不直接用vi /etc/sudoers.tmp 打开,用这个命令打开更好visudo,这个命令,如果改配置文件出错,保存退出时会有提示。[root@shuai-01 ~]# visudo
为普通用户添加几个能带root权限使用的命令
用visudo打开配置文件[root@shuai-01 ~]# visudo
找到这一行
## Allow root to run any commands anywhere root ALL=(ALL) ALL
在下面添加shuai ALL=(root) /usr/bin/ls,/usr/bin/cat
使shuai用户,在ls ,cat 两条命令上有root的身份,添加哪些命令时要用到命令的绝对路径
这个时候在在shuai用户在使用ls 命令,只是第一次使用时要输入shuai用户密码。[shuai@shuai-01 ~]$ sudo ls /root/ [sudo] password for shuai: 1.txt 1.txt.bak 2.txt.bak anaconda-ks.cfg deng shuai
当然,也可以指定不输入密码
user2 ALL=(ALL) NOPASSWD: /usr/bin/ls
同样的方式给user2用户在配置文件中加这一条,那么,使用就可以不输入密码了
[user2@shuai-01 ~]$ sudo ls /root/
1.txt 1.txt.bak 2.txt.bak anaconda-ks.cfg deng shuai
当然,配置文件中还有很多。
如:两个普通用户,要使用相同的带有root权限的命令,可以将这两个用户设置一个别名。
# User_Alias ADMINS = jsmith, mikem
User_Alias AD = shuai,user2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
AD ALL=(ALL) /usr/bin/ls,/usr/bin/mv
而且还可以给命令设置一个别名。Cmnd_Alias
还可以直接添加一个用户组(自己在linux上设置的,有gid的哪种)这里wheel就是组名。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
禁止root的远程登录
生产环境中,我们为了安全起见,是应该禁止root用户远程登录的。要想使用root用户的一些权限,可以用sudo设置。
先配置sudo的配置文件
让shuai用户拥有能以root身份使用su命令的权限## Allow root to run any commands anywhere root ALL=(ALL) ALL AD ALL=(ALL) /usr/bin/ls,/usr/bin/mv shuai ALL=(ALL) NOPASSWD: /usr/bin/su
更改sshd配置文件(/etc/ssh/sshd_config)
[root@shuai-01 ~]# vi /etc/ssh/sshd_config
找到这一行(#PermitRootLogin yes)将其改为
PermitRootLogin no
保存退出后重启sshd服务
[root@shuai-01 ~]# systemctl restart sshd.service
这时,就不能用root远程登录了,要想使用root,必须在shuai用户下,sudo
[shuai@shuai-01 ~]$ sudo su - 上一次登录:三 11月 1 21:45:05 CST 2017pts/1 上 [root@shuai-01 ~]# 登出 [shuai@shuai-01 ~]$