.3系统中su,su -,sudo三命令讲解
在linux系统中,由于root的权限过大,一般情况都不使用它 。只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令 。su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户wade登录的,但要添加用户任务,执行,wade用户没有这个权限,而这个权限恰恰由root所拥有 。解决办法无法有两个,一是退出wade用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出wade用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root 。我们可以看到当然通过su切换是一种比较好的办法;通过su可以在用户之间切换,而超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证!
一、和su -命令对比:
文章插图
通过上图时间操作我们可以分析得出两个命令之间的区别:
1、参数-, -l, --login
make the shell a login shell
翻译过来的意思如下:
su -,su -l或su --login命令改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,。此外,也会变更PATH变量 。用su -命令则默认转换成成root用户了 。
而不带参数的“su命令”不会改变当前工作目录以及HOME,SHELL,USER, 。只是拥有了root的权限而已 。
2、su的优缺点;
su的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理 。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协;想想吧,简直就是恶梦;“没有不安全的系统,只有不安全的人”,我们绝对不能保证这10个用户都能按正常操作流程来管理系统,其中任何一人对系统操作的重大失误,都可能导致系统崩溃或数据损失;所以su工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用;超级用户root密码应该掌握在少数用户手中,这绝对是真理!所以集权而治的存在还是有一定道理的 。
二、su和sudo命令对比:
在普通用户下输入su命令后,会提示输入root账户的密码,然后就进入特权模式(跟用root登录系统完全一样),输入exit或者su - user退出 。
文章插图
而采用sudo命令,只需输入当前用户的密码(也可以配置为不输入密码)即可执行需要root权限执行的命令:
文章插图
通过上面的对比可以看出,sudo比su有很多优点:
1、普通用户不需要知道root的密码即可执行需要root权限的命令;
2、不会因忘记退出而采用root执行了会引起破坏性的命令(初学linux经常犯这个错);
3.由于su对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统 。如果用su来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作 。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到sudo 。通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su来说,还是比较安全的,所以sudo也能被称为受限制的su;另外sudo是需要授权许可的,所以也被称为授权许可的su;sudo执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/来进行授权 。