Linux 系统切换 root 用户权限 管理 sudo

介绍


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

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

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

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

硬件管理、文件系统管理、用户管理以及涉及的系统全局配置等,如果执行某个指令或工具时,提示无权限,大多是需要超级权限来完成。比如用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用户并改变环境变量
$whoami
handuoduo
$ su
Password:
$ whoami
root
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/handuoduo/bin
$ exit
exit
$ su -
Password:
$ whoami
root
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

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

$whoami
handuoduo
$ su
Password:
$ whoami
root
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/handuoduo/bin
$ exit
exit
$ su - root
Password:
$ whoami
root
$ 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用户的环境变量及执行权限。

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/1319.html

发表评论

登录后才能评论