Linux【5】-用户管理2-切换用户su

su -

Linux中切换用户的命令是su或su -。

su命令和su - 命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell; 而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd 一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。

su - root is the same as su - just like login as root,
then the shell is login shell,which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced

su root is the same as su like you open an interactive shell in root name,
then only .bashrc will be sourced.
  • su 后面不加用户是默认切到 root
  • su username是不改变当前变量
  • su - username是改变为切换到用户的变量

也就是说su只能获得root的执行权限,不能获得环境变量; 而su -是切换到root并获得root的环境变量及执行权限

用echo $PATH命令看一下su和su -以后的环境变量有何不同。

以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。

1.su的作用是变更为其它使用者的身份,需要键入该使用者的密码(超级用户除外)。

2.格式

su [选项]… [-] [USER [ARG]…]

3.主要参数

-f , --fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
-l , --login:加了这个参数之后,就似乎是重新登陆为该使用者一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。假如没有指定USER,缺省情况是root。
-m, -p ,--preserve-environment:执行su时不改变环境变数。
-c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。
USER:欲变更的使用者账号,ARG传入新的Shell参数。

二、报错

[root@c01 ~]# su -l pp Last login: Fri Apr 13 10:19:04 CST 2018 on pts/12 su: failed to execute /bin/bash: Resource temporarily unavailable

vim /etc/security/limits.d/20-nproc.conf

*          soft    nproc     4096
root       soft    nproc     unlimited

将 4096 改成 65535

参考资料:

https://www.cnblogs.com/Nice-Boy/p/6137955.html

http://blog.51cto.com/ly36843/1767760

http://blog.sina.com.cn/s/blog_5425edf40102v917.html

http://blog.sina.com.cn/s/blog_5425edf40102v917.html

个人公众号,比较懒,很少更新,可以在上面提问题:

更多精彩,请移步公众号阅读:

Sam avatar
About Sam
专注生物信息 专注转化医学