su与su -命令的区别

su与su -命令是有着本质区别
前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。
su
[root@node1 highgo]# pwd
/home/highgo
[root@node1 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/highgo/bin:/home/highgo/bin:/usr/local/cluster/hgdb/bin:/usr/local/cluster/pgpool/bin

su -
[root@node1 ~]# pwd
/root
[root@node1 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/cluster/pgpool/bin

su 到root用户后虽然仍旧保留着postgres用户的shell环境但是并不代表就可以在root用户下使用postgres用户的命令,如下:
[root@node1 ~]# su - postgres
[postgres@node1 ~]$ su
Password:
[root@node1 postgres]# pg_c
pg_config pg_controldata pg_ctl
[root@node1 postgres]# pg_ctl start
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

而且,需要使用root用户和root shell环境的命令也不能使用
假设highgo用户PATH中没有:/usr/sbin,则su到root后useradd命令就会失效,会提示找不到命令。
如果highgo用户PATH中有:/usr/sbin ,但是是在highgo用户下使用useradd则会提示权限不够。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值