一、su命令

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

命令su的格式为:

su [-] username

1、后面可以跟 ‘-‘ 也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。 ‘-‘ 这个字符的作用是,加上后会初始化当前用户的各种环境变量。

下面看下加‘-’和不加‘-’的区别:

0ff80db8a0f7ffc0ef789f6e848e1e48.png

root用户切换到普通用户无需输入密码,普通用户切换到root用户需要密码。

2、在切换用户的过程可能会遇到这样的情况,提示普通用户家目录不存在:

60f9ed7c2ebf002068861892b1c30f63.png

那么如果我们创建这个用户的家目录,并且更改家目录所属用户和所属组呢,看下情况如何:

0fb739d1b77c529264708d5dec33dc5e.png

还是不行,这是因为/home/usertest04目录下去缺少配置文件,下图为正常用户家目录和testuser04家目录:

b4c6419cb53719ad3625b703d1271d5c.png

那么我们怎么解决这个问题呢,这些配置文件我们能不能复制进testuser04家目录呢?肯定可以的,在/etc/skel下有配置模板,我们这个这个目录下的'.bash'开头的文件复制到testuser04加目录下就可以了,之后级联更改家目录所属用户和所属组,然后在切换用户:

b7d153c82c86803d9d1bc65c1c2ff992.png

3、指定身份为test

95eaf856a3a36866d7ad7142db19f0af.pnguser04用户(不登录该用户)并执行“touch /tmp/1.txt"命令:

二、sudo命令

用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即使用 visudo 命令去编辑相关的配置文件/etc/sudoers. 如果没有visudo这个命令,请使用 yum install -y sudo 安装。

默认root能够sudo是因为这个文件中有一行 “root ALL=(ALL) ALL” 在该行下面加入 “testuser04 ALL=(ALL) ALL” 就可以让testuser04用户拥有了sudo的权利。使用 “visudo” 命令编辑/etc/sudoers配置文件,其实它的操作方法和前面阿铭介绍的 “vi” 命令使用方法是一样的,按 ‘i’ 进入编辑模式,编辑完成后,按 “Esc” ,再输入 ”:wq” 完成保存。

在没有sudo权限之前,普通用户无法用ls命令查看/root/目录:

80eeb78217ac69c5a82a6dc01a14d910.png

在/etc/sudoers配置文件中赋予testuser04用户sudo权限:

visudo //编辑sudoers配置文件

1、在配置文件中添加一行,可以使用所有命令:

8ad361d3f37046fa16370ef4a9110d28.png

然后保存退出,再用testuser04用户查看/root/目录:

d721a78bd19ed8e7c1b6db00f723716e.png

2、如果不想testuser04用户能使用所有root才能执行的命令,只能执行某个root才能执行的命令,比如ls命令,那么我们就需要:

d9513e640d22ef2219bfc9f09ab01cbb.png

保存退出之后,我们只能使用sudo执行ls命令:

83ec94a818ebc7a85e1a275b703816d1.png

f3de193ae40ebe5b633f8c5ab4096e43.png

3、在使用过程用过程中,比如:如果很多普通用户只能有ls和cat权限,但是每次输入这么多路径麻烦,可以为命令设置一个组:

a2c25191423e77bf0724e05fa436406a.png

然后修改:

b8196030de1544bf8adf09997da3878c.png

4、如果不需要执行sudo时输入密码:

5afcb374d20d925fff2c91ebec8ee2b5.png

三、不允许root远程登录linux

如果没使用密钥登录服务器,使用密码登录,为了加强安全,禁止root用户远程登陆服务器,只允许普通用户登录。

禁止root远程登陆

vi /etc/ssh/sshd_config

将其中的PermitRootLogin改成no:

40e0b51e8e9fc57a32439d509bc83ba4.png

然后重新启动ssh服务就 可以了

systemctl restart sshd.service

但是无法远程登录root用户,如果我们需要使用root权限的话,怎么办呢?把su命令放置sudo配置文件里,授权普通用户使用su命令,普通用户再切换至root(无需root密码),即root用户 su 到root用户,所以无需密码。比如testuser02用户无需密码即可切换至root用户:

5ec3143c0d153a8bfd32cbe77e21bf8c.png

切换root,无需密码(这个权限有点大,一般不用):

238f9eefc5c6aa56b28d0a999a9d337e.png

Logo

更多推荐