由于 root 用户权限比较大,Linux 系统一般不推荐直接以 root 用户登录,但在某些情况下我们需要使用 root 用户时,注销系统再登录的办法就比较浪费我们的时间了。

不过我们还可以通过切换用户的方法来解决这个问题。

方法一:我们可以使用 su 命令在系统下切换用户

su 命令可以实现普通用户和 root 用户之间相互切换。值得注意的是:

普通用户----》》root 需要密码,密码就是普通用户的登陆密码

root用户----》》普通用户不需要我们输入密码。

命令用法如下所示:

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

图片

下面举个例子:

1.从root用户切换为一般用户

su test

图片

如果要退回到原来用户,我们可以输入 exit 或者按 ctrl+d

图片

2.从普通用户切换到 root 用户

su root

在这里插入图片描述

在上面的图片中,$ 代表是普通用户,# 代表是超级用户。

方法二:使用sudo命令

当我们只需要短时间内使用其他用户的身份完成某个命令,可以使用 sudo 命令。修改 /etc/sudoers,我们要使用这个命令要先修改配置文件,只有在配置文件下赋予的操作命令,sudo 才能够完成。

在不知道 root 密码的情况下,我们作为 root 用户管理员要授权其他普通用户去执行 root 权限的命令操作,sudo 命令可以帮我们实现这一功能。

关于 sudo 命令与 su 命令不同之处,使用 root 权限下的命令时 sudo 命令只需要知道自己用户的密码,而 su 命令需要 root 用户的密码,因此 sudo 命令比 su 命令更加安全。

sudo命令用法:
sudo [-bhHpV][-s ][-u <用户>][指令]
或 sudo [-klv]

图片

下面举例说明 sudo 命令的几种用法。

1.让普通用户可以执行 root 用户的所有命令

[root@VM_0_8_centos ~]# visudo
...省略...
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL   <=系统默认
user1   ALL=(ALL)       ALL   <=新增的,让user1可以执行sudo命令
...省略...
#user1代表用户账号,第一个ALL代表登录者的来源主机名,第二个(ALL)代表可
#可切换的身份,第三个ALL表示可执行的命令

通过上面的命令,我们的 user1 用户就能使用 sudo 命令来执行 root 用户的命令。

#执行单条命令
[user1@VM_0_8_centos local]$ sudo -u root mkdir test1
#加入sh -c,一次执行多条命令
[user1@VM_0_8_centos local]$ sudo -u root sh -c "chmod -R 777 test1;ls"

2.让普通用户可以执行 root 用户的某些命令

但是普通用户可以执行所有的 root 命令,权限太大,不够安全,我们可以做一些做限制呢来保障安全。具体实例如下所示:

[root@VM_0_8_centos ~]# visudo
...省略...
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL   <=系统默认
user1   ALL=(ALL)  !/usr/bin/passwd,!/usr/bin/passwd root,
/usr/bin/passwd [A-Za-z]*  
...省略...

上面的示例我们可以看到,由于我们对 passwd root 命令做了限制,就可以防止普通用户更改 root 密码。虽然 user1 用户能切换到任何一个用户并且执行 “passwd 任意字符”的命令但是它不可以修改 root 密码。
通过以上两个 Linux 切换用户的方法,相信大家在相关命令操作中效率会有所提高。也希望大家积极留言讨论。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐