su 切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境。
su - 切换到root用户,并转到root用户的家目录下,即改变到了root用户的环境。
这个涉及到不同用户下的环境变量的配置。
sudo
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码(sudo用的不是root密码,而是当前用户密码),所以sudo相对于权限无限制性的su来说,还是比较安全的,所以sudo也能被称为受限制的su,另外sudo是需要授权许可的,所以也被称为授权许可的su。
sudo执行命令的流程是当前用户切换到root(或其他指定切换到的用户),然后以root(或其他指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
sudo的配置文件是/etc/sudoers,我们可以用他的专用编辑工具visodu来进行配置,配置好后,可以切换到您授权的用户下,通过sudo -l来查看哪些命令是可以执行或禁止的。
之所以把这三个命令拿出来,是要提醒自己这三个命令是有区别的,在使用时遇到错误就要仔细想一下。
至于怎样配置使用sudo,一般不做服务器管理应该用不到,这里不做详细介绍,需要的时候可以去学习。
百度文库中有篇文章《Linux中sudo和su之间的差别》可以参考一下,地址:http://wenku.baidu.com/view/0242074502020740be1e9ba1.html?re=view