关闭

Linux下su命令用法

标签: linuxubuntusu命令 切换用户
261人阅读 评论(0) 收藏 举报
分类:

在学习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来进行授权。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:67333次
    • 积分:1739
    • 等级:
    • 排名:千里之外
    • 原创:107篇
    • 转载:15篇
    • 译文:0篇
    • 评论:24条
    最新评论