su和sudo命令的区别

来源:互联网 发布:口袋妖怪能力数据 编辑:程序博客网 时间:2024/06/06 00:54

    su命令用于切换用户,不只是向root用户切换,也可以向其他用户切换。切换前的用户依然保持在登录状态。这种切换如果超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证密码为切换后用户的密码;sudo命令用于赋予普通用户root权限

1 su命令


su 用户名 切换到该用户,但工作环境仍然是原用户的工作环境

su - 用户名 切换到该用户,工作环境是该用户的工作环境

如上图,su不加任何参数,默认为切换到root用户,但没有转到root用户主目录下,也就是说这时虽然是切换为root用户了,但并没有改变工作环境,仍然是原用户zhouruixue的工作环境(用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等);su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境,即root的用户主目录;上图中输入的密码都是root用户的密码。

由上可知,su root使得root用户在zhouruixue用户环境中进行操作,某种程度上也可以认为su使得普通用户具有了root权限。


2 sudo命令

(1)添加用户,首先用adduser命令添加一个普通用户,命令如下: 

#adduser tommy </p>< p>//添加一个名为tommy的用户

#passwd tommy //修改密码

Changing password for user tommy.

New UNIX password: //在这里输入新密码

Retype new UNIX password: //再次输入新密码

passwd: all authentication tokens updated successfully.


(2)赋予root权限

方法一:修改/etc/sudoers文件,找到下面一行,把前面的注释(#)去掉

## Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL

然后修改用户,使其属于root组(wheel),命令如下:

#usermod -g root tommy

修改完毕,现在可以用tommy帐号登录,可获得root权限进行操作。


方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

tommy ALL=(ALL) ALL

修改完毕,现在可以用tommy帐号登录,可获得root权限进行操作。


方法三:修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:

tommy:x:500:500:tommy:/home/tommy:/bin/bash

修改后如下

tommy:x:0:500:tommy:/home/tommy:/bin/bash

保存,用tommy账户登录后,直接获取的就是root帐号的权限。

如上图所示,zhouruixue用户本来不具有root权限,不能使用sudo命令,在使用方法二后具有了root权限

参考:

http://blog.csdn.net/crave_shy/article/details/23037787

http://www.jb51.net/os/RedHat/138116.html