您的位置:首页 > 其它

十三、su命令、sudo命令、限制root远程登录

2018-02-06 23:01 731 查看
十三、su命令、sudo命令、限制root远程登录
一、su命令
格式为su [-] username,后面可以跟-,也可以不跟。普通用户的su命令不加username时,就是切换到root用户。root用户也可以使用su命令切花到普通用户。该命令加上-后,会初始化当前用户的各种环境变量。示例加与不加-的区别,命令:
# su user1
[user1@yaowei-01 root]$ pwd
/root
[user1@yaowei-01 root]$ ls
ls: 无法打开目录.: 权限不够
[user1@yaowei-01 root]$ su root
密码:
[root@yaowei-01 ~]# su - user1
上一次登录:二 2月 6 20:18:12 CST 2018pts/0 上
[user1@yaowei-01 ~]$ pwd
/home/user1
[user1@yaowei-01 ~]$ ls -la
总用量 12
drwx------. 2 user1 grp1 62 1月 30 18:46 .
drwxr-xr-x. 4 root root 32 2月 6 18:50 ..
-rw-r--r--. 1 user1 grp1 18 8月 3 2017 .bash_logout
-rw-r--r--. 1 user1 grp1 193 8月 3 2017 .bash_profile
-rw-r--r--. 1 user1 grp1 231 8月 3 2017 .bashrc
不加-表示还在root用户下,没有彻底切换过来,加-后可以发现在自己的家目录下/home/user1,在自己的家目录下就会加载自己家目录下的配置文件,比如ls -la。
因此,切记切换用户的时候要加上“-”,这样切换才彻底。
用法:
root用户下,以普通用户的身份执行命令:
[root@yaowei-01 ~]# su - -c "touch /tmp/13.txt" user1
[root@yaowei-01 ~]# ls -lt /tmp/|head
总用量 0
-rw-r--r--. 1 user1 grp1 0 2月 6 20:28 13.txt
-rw-r--r--. 1 user1 grp1 0 2月 6 20:27 12.txt
drwx------. 3 root root 17 2月 3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vmtoolsd.service-aSrK8x
drwx------. 3 root root 17 2月 3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vgauthd.service-0Lc2Vi
drwxr-xr-x. 2 root root 19 1月 30 19:10 test
drwx------. 3 root root 17 1月 27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vmtoolsd.service-8ks2ZG
drwx------. 3 root root 17 1月 27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vgauthd.service-T7GMmu
drwx------. 3 root root 17 1月 26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vmtoolsd.service-lslC0Q
drwx------. 3 root root 17 1月 26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vgauthd.service-iI6GMz
切换的用户若没有系统的配置文件,前缀会显示.bash字样,可进入系统的模板目录:/etc/skel/,复制下面的".bash"文件:
# ls -la /etc/skel
总用量 24
drwxr-xr-x. 2 root root 62 1月 22 01:48 .
drwxr-xr-x. 74 root root 8192 2月 6 18:57 ..
-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
# cp /etc/skel/.bash* /home/user5/ 复制到它的家目录下去,比如user5。
# chown -R user5:user5 /home/user5 然后不要忘记了更改所有者及所属组,/home/user5可以用!$(上一条命令的最后一个参数)代替。
复制过去后,再登录查看,前缀即可正常显示。
二、sudo命令
sudo命令:只有root用户可以使用的命令,普通用户若想使用sudo命令,需要root预先设定。可以使用visudo命令编辑它的配置文件/etc/sudoers。若没有visudo这个命令,使用命令yum install -y sudo安装。
root默认支持sudo,因为这个文件中有一行root ALL=(ALL)ALL。
在该行下面加入test ALL=(ALL)ALL
就可以让test用户拥有sudo的特权。从左到右,第一段test这里为一个用户,指定让哪个用户拥有sudo特权,第二段ALL=(ALL),左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,第二段几乎不用配置;第三段设定可以使用sudo命令的有哪些。
visudo这个命令可以检测错误,因此建议使用这个命令。
使用visudo命令编辑/etc/sudoers配置文件,必须要使用root用户。
操作方法:进入这个文件,然后在root下面加上一行。示例:
## Allow root to run any commands anywhere (整个文件中最核心的一个项目)
root ALL=(ALL) ALL
user1 ALL=(ALL) ALL(可以自定义一些命令,如ls,mv,cat,这些命令需要些绝对路径,否则不可用,找不到文件)
此时方可验证user1的权限了,方法如下:(如下操作是在root账户下进行的)
# su user1
[user1@yaowei-01 root]$ ls
ls: 无法打开目录.: 权限不够
[user1@yaowei-01 root]$ sudo ls
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] user1 的密码:
123 1.txt anaconda-ks.cfg dir3 dir4
小技巧:在文件内,":set nu"可以显示文件内的行号。
使用sudo时,要输入自身的密码,也可设置不要密码。如下的user2:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user1 ALL=(ALL) ALL
user2 ALL=(ALL) NOPASSWD: ALL:
这个下面也可以加入别名的组。
host可以设置别名,用户也可以。alias命令。
获取到的命令那里
由于切换到user1用户后当前目录还是root,user1没有任何权限,所以ls查看时,提示权限不够。然而使用命令sudo ls输入user1自身的密码后,就有权限了。初次使用sudo命令时,会出现上面的一大段提示,再次使用sudo命令时则不再提示。
若每增加一个用户就设置一行,这样就很麻烦,所以可以这样设置:
# %wheel ALL=(ALL)
将# %wheel ALL=(ALL)前面的#去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有了sudo的权力。接下来,只要把需要设置sudo权限的用户加入到wheel这个组即可。如下所示:
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
新加入别名的组,加入到这一行命令下面,如下:
# User_Alias ADMINS = jsmith, mikem
实用案例:
我们的需求是把Linux服务器设置成这个样子:只允许使用普通账户登录,登录后,可以不输入密码就能用sudo切换到root账户。配置方法是:
# visudo
在文件最后加入三行:
User_Alias USER_SU = user1, user2 user3
Cmnd_Alias SU = /usr/bin/su
USER_SU ALL=(ALL)NOPASSWD:SU
第一行设定了一个user别名,其实这个USER_SU相当于是user1,user2,user3三个账户;第二行设定了一个命令别名,SU相当于/usr/bin/su;
第三行,保存配置文件后,使用user1、2、3这三个账户登录Linux。
三、限制root远程登录
/etc/ssh/sshd_config为sshd服务的配置文件,默认允许root账户用过ssh远程登录Linux。要想限制root用户远程登录Linux,操作方法为:修改配置文件/etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes并修改为PermitRootLogin no。保存配置文件后,重启sshd服务,如下所示:
# systemctl restart sshd.service
需注意的是,这个方法只适用于通过ssh远程登录Linux的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  su 命令 sudo