一,su、sudo、su - root的区别 su和sudo的区别 共同点:都是root用户权限; 不同点:su只获得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全获得root的权限和root的工作环境。 sudo:表示获取临时的root权限执行命令。 sudo执行命令的流程:

1、当前用户切换到root(或其他指定切换到的用户), 2、以root(或其他指定的切换到的用户)身份执行命令, 3、执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。 su - root和su root区别 su - root:以root身份登录,then the shell is login shell, .bash_profile and .bashrc will be sourced. su root/其他命令:与root建立一个连接,通过root执行命令。then only .bashrc will be sourced. 最直接的区别是su目录还是原先用户目录,su - root后目录就变为root用户的主目录。

因此,可以在.bashrc修改PATH、PHP、APACHE、Mysql等路径。

Mac上的sudo -i sudo -i :切换用户到root

作者:AmyZYX 出处:http://www.cnblogs.com/amyzhu/

二, 前几天,在一次项目中,犯了一个很低级的错误,但是没弄明白是什么问题。情况是这样的,我们在做灾备,重启系统化,以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。