Linux下su命令用法

在学习linux输入命令时,发现su和su - 是有区别的,于是查找了su命令的所有用法,学习一下。

SU:( Switch user切换用户),可让一个普通用户切换为超级用户或其他用户,并可临时拥有所切换用户的权限,切换时需输入欲切换用户的密码;也可以让超级用户切换为普通用户,临时以低权限身份处理事务,切换时无需输入欲切换用户的密码。

命令使用方式:

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

直接解释参数的意思不太直观,下面用实例来说明吧。

1.切换用户

切换包含从一般用户到root用户,从root用户到一般账户。

从一般用户到root用户:su root或者 su - root,此时需要输入root的密码。

注意中间有个“-”表示是否切换到root用户的主目录下。

从root用户到一般用户:su name或者su - name,name为一般用户名,此时不需要密码。

注意中间有个“-”表示是否切换到name用户的主目录下。

从一般用户到一般用户su name或者su - name,此时需要输入name用户的密码。

注意中间有个“-”表示是否切换到name用户的主目录下。


上图,首先登录的时名为zt的一般用户,先切换到root用户,需要密码,进去之后,#号前面的目录为/home/zt,是用户zt的主目录,因此目录没有切换。然后,从root账户切换到zt用户,发现,$前目录为~,为zt的目录,也没有切换。

然后使用su - root和su - zt切换,此时目录都变成了当前用户的主目录。

但除了这一点,这两个命令还有区别,在于环境变量是否切换了。此链接:http://www.ha97.com/4001.html有如下的解释:

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。


2.-c属性实例

输入:su -c ls root 

变更帐号为 root 并在执行 ls 指令后退出变回原使用者。

3.su和sudo的区别 

由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和 管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。 
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su; 

sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yefengzhichen/article/details/46829557
个人分类: linux
上一篇排序算法大总结
下一篇引用作为函数返回值(对函数赋值)
想对作者说点什么? 我来说一句

Linux下普通用户su命令切换控制

2012年08月04日 44KB 下载

替代RUNAS的好东东

2008年08月28日 185KB 下载

没有更多推荐了,返回首页

关闭
关闭