Linux 系统中的 root 用户管理

2021-11-17 00:00:00 用户 系统 指令 权限 切换到


作者:博客教主

链接:http://www.ha97.com/2509.html

超级用户在操作系统管理中的作用

1. 可以对任何文件、目录或进程进行操作

超级用户的操作是在系统高许可范围内的操作,有些操作就是具有超级权限的root也无法完成。比如/proc目录,/proc是用来反应系统运行的实时状态信息的,因此即便是root也无法对其进行写操作。

2. 对涉及系统全局的系统管理

硬件管理、文件系统管理、用户管理以及涉及的系统全局配置等,如果执行某个指令或工具时,提示无权限,大多是需要超级权限来完成。比如用adduser来添加用户,这跟只能使用通过超级权限的用户来完成。

普通用户授予root权限

1. su指令

su是英文“switch user”的缩写,即切换用户。使用su指令切换到其他用户模式,提示输入密码时,该密码为切换后账户的密码,用法为:su 账户名称
如果后面不加账户时默认为root账户,密码也为超级账户的密码。没有时间限制。

2. su指令使用条件

su指令就是切换用户的工具,当前系统登录为普通用户handuoduo,但要完成添加用户任务,执行useradd指令后,提示普通用户handuoduo没有权限,而这跟权限恰恰由root所拥有。解决的办法有两个:
1)退出handuoduo用户,重新以root用户登录,但这种办法并不是好的。
2)不退出handuoduo用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。
我们可以看到当然通过su切换是一种比较好的办法。
通过su可以在用户之间切换,超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其他任何用户都需要密码验证。

3. su指令用法

su指令常用的选项如下所示:

  • -c, -command  执行相关指令,然后退出所切换到的用户环境

  • -l, -login  登录并改变到所切换的用户环境。

关于su指令更详细的使用,可以参考man su

4. su指令实例

su指令在不加任何参数,默认为切换到root用户,但没有转到root用户主目录的情况下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境,即用户默认登录环境。可以在/etc/passwd中查到,包括主目录、shell定义等。
#普通用户切换到root用户$ whoamihanduoduo$ suPassword:$ whoamiroot
在上述代码中,普通用户模式下,直接输入su指令即可切换到root用户,su加参数“-”表示默认切换到root用户,并且改变到root用户的环境。

# 普通用户切换到root用户并改变环境变量$whoamihanduoduo$ suPassword:$ whoamiroot$ echo $PATH/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/handuoduo/bin$ exitexit$ su -Password:$ whoamiroot$ echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

su 指令加上 “-” 参数,目标用户的环境变量一起被切换,“su 参数 - 用户名”,下面代码和上述实例中的作用相同。

$whoamihanduoduo$ suPassword:$ whoamiroot$ echo $PATH/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/handuoduo/bin$ exitexit$ su - rootPassword:$ whoamiroot$ echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

“su - root”指令和“su -”功能相同。

5. su 的优缺点

su的确为管理带来方便,通过切换到root下,能完成所有系统管理工具。只要把root的密码交给任何一个普通用户,它都能切换到root来完成所有的系统管理工作。但通过su切换到root后,也有不安全因素,比如系统有10个用户,而且都参与管理。如果这10个用户都涉及超级权限的运用,作为管理员如果让其他用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威胁。
“没有不安全的系统,只有不安全的人”,我们不能保证这10个用户都能按正常操作流程来管理系统,这其中任何一个人对系统操作的重大失误,都可能导致系统崩溃或数据损失。所以su工具在多人参与的系统管理中,并不是好的选择。

总结

  • su - root 和 su root 指令的区别如下:

  • su指令后面不加用户是默认切换到root;

  • su指令不改变当前变量;

  • “su -”指令组合改变为切换到用户的变量;

  • su指令只能获得root的执行权限,不能获得环境变量;

  • “su -”指令组合是切换到root用户,并获得root用户的环境变量及执行权限。





相关文章