su - root 与su root的区别

前几天,在一次项目中,犯了一个很低级的错误,但是没弄明白是什么问题。情况是这样的,我们在做灾备,重启系统化,以root用户权限,通过 su oracle ,进去后,oracle的rac 无法正常启动,我没细看,一直在找其他的原因,最后经过同事提醒,说应该执行 su - oracle。果然如他所说,进去后正常启动。

今天忽然想起,又仔细查看了资料,做个笔记,备忘。也提醒自己注意细节。

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  是不改变当前变量
su - 是改变为切换到用户的变量 
也就是说su只能获得root的执行权限,不能获得环境变量

而su -是切换到root并获得root的环境变量及执行权限

语法:

$ su [user_name] 
su  命令可以用来交互地更改你的用户ID和组ID。  Su是switch user 或set user id的一个缩写。这个命令让你开启一个子进程,成为新的用户 ID 和赋予你存取与这个用户ID 关联所有文件的存取权限。因此,出于安全的考虑,你在实际转换身份时,会被要求输入这个用户帐号的密码。  
如果没有参数,su 命令将你转换为 root(系统管理员)。root 帐号有时也被称为超级用户,因为这个用户可以存取系统中的任何文件。也正是这个原因,许多人将su命令看成是 supper-user(超级用户)的一个缩写。当然,你必须要提供 root密码。  想要回到你原先的用户身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的对话进程。 
$ su – username 
一些配置文件是为你的对话线索而设立的。当你使用命令 su username时,你的对话特征和你原始的登录身份一样。如果你想要你的对话进程拥有转换后的用户 ID一致的特征,你要使用短斜杠: su – username。

u - root 是切换到root账号使用,使用的是root用户的环境变量;
su root 则是取得root的特权,以root的身份执行程序,但保留原来用户环境。

说明:有些命令即使你使用su root切换到root用户,仍无法执行,所以切换到root用户时,建议使用su - root。

时间: 2024-10-20 14:03:15

su - root 与su root的区别的相关文章

su 和 sudo、su root和su - root 区别

su 和 sudo.su root和su - root 区别 su是superuser的前面两字母. su root=sulike you open an interactive shell in root name,then only .bashrc will be sourced. su root和su一样:表示与root建立一个链接,通过root执行命令,其实就是进程的有效用户ID变成了root,unix校验进程的权限都是校验的有效用户ID,进程的实际用户ID还是当前登录系统的用户,主目录

禁止普通用户使用su命令切换到root用户

在linux主机安全检查中有这么一项:限制su成root的用户或组.正常情况下,我们使用普通用户管理设备和巡检,但是经常有一部分人员不断尝试su到root用户,如果尝试次数过多,root用户就会被临时锁定,为了避免这种情况和提高安全性.我们必须通过设置来禁止普通用户使用su命令切换到root用户. 1,编辑/etc/pam.d/su 将#auth     required       pam_wheel.so ues_uid这行注释掉 vim /etc/pad.d/su # Uncomment 

Troubleshooting: Cannot log in as root with su command

I was seeing something strange behavior on one of my server.I can log in as 'root' user using ssh but when I try to login as 'root' user using su - , it fails with " incorrect password" error. $ su - Password: su: incorrect password After some p

day13:权限管理su/sudo及限制root用户登录

3.7:su命令:(切换后无时间限制) 1.1.su命令是来切换用户:变更为其他使用者的身份:变更时需要输入用户名及密码: 语法: su  [ - ]  用户名 "-"加上后:表示同时切换到用户的环境变量下,如下: "-"不加:不切换用户的环境的变量:半切换: [[email protected] ~]# su yuanhh        #半切换到yuanhh用户: [[email protected] root]$ pwd         #查看当前用户的所属目

Linux 系统中用户切换(su user与 su - user 的区别)

1. Linux系统中用户切换的命令为su,语法为: su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 参数说明 -f , –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell. -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME.SHELL和USER等)都是以该使用者(USER)为主,并 且工作目录也会改变.如果没有指

关于su user和su - user的区别

网上有一个已经写得比较清楚的了,自己也按照作者的思路试验过,这里直接粘贴过来: 1.su user 仅仅是切换用户user,切换之后,user的默认目录并不是/home/user路径,例如: [[email protected] ~]# lsanaconda-ks.cfg  Desktop  install.log  install.log.syslog[[email protected] ~]# pwd/root                         --root用户当前路径[[em

nginx root和alias指令的区别

# alias location /js/{ alias /static/;}#上述配置,访问/js/目录的时候,nginx自动会去找/static/下面的文件 # rootlocation /js/{ root /static;}#上述配置,访问/js/目录的时候,nginx自动会去找/static/js/下面的文件 总结:alias是一个目录别买的定义,root则是最上层目录的定义,alias后面必须用"/"结尾,不然会找不到文件

Android -- 程序判断手机ROOT状态,获取ROOT权限

判断手机是否具有ROOT权限                                                            /** * 判断手机是否ROOT */ public boolean isRoot() { boolean root = false; try { if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exi

Mac下su命令提示su Sorry的解决办法

很多人在mac下,用su登录root用户,输入密码,都会提示su:Sorry,然后还怀疑自己记错了密码,其实不然. 其实正确的方式为: sudo su 然后输入密码就可以了 用户名显示不是root,而是sh-3.2,具有root权限. 如果你希望进入root权限,需要输入: sudo su - 总结: mac上,一开始创建的具有管理员权限的用户,但是那个用户密码,不是进入root的密码 当运行su - 这个命令时,会提示输入密码,而输入自己用户密码后报su :sorry 其实,需要使用sudo