Linux su与sudo的区别

来源:互联网 发布:苹果8手机怎么打开网络 编辑:程序博客网 时间:2024/05/22 14:26

su的用法

su命令就是切换用户的工具。

比如我们以普通用户dustin登录的,但要添加用户任务,执行useradd ,dustin用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出dustin用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su切换是一种比较好的办法;通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证。

su 不加任何参数

su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变工作目录和环境变量:
这里写图片描述

su - 加了-作为参数

su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境:
这里写图片描述

-实际上是–login的缩写:
这里写图片描述

su的优缺点

su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协;想想Windows吧,简直就是恶梦。

“没有不安全的系统,只有不安全的人”,我们绝对不能保证这 10个用户都能按正常操作流程来管理系统,其中任何一人对系统操作的重大失误,都可能导致系统崩溃或数据损失;所以su 工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中,这绝对是真理!所以集权而治的存在还是有一定道理的。

sudo的用法

通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su。

这里写图片描述

sudo的运行过程是这样的:

  1. 检查用户是否在/etc/sudoers的列表中
  2. 如果在,以root权限执行命令
  3. 取消用户的root

例如,用户dustin是没有查看/etc/shadow文件的权限,但是我在创建dustin这个用户时曾经赋予了他可以作为管理员的权限,所以当用sudo执行less /etc/shadow命令时,系统会提醒我要小心操作,然后输入dustin的密码即可执行,而不需要使用root密码,这样既可以让多人来管理系统,又减少了root密码泄露的可能。而且此命令执行之后,获取的管理员权限立刻就会失去。

这里写图片描述

这里写图片描述

而且很容易发现,sudo和su一样,没有切换工作目录和环境变量,只是赋予用户权限:
这里写图片描述

0 0
原创粉丝点击