一、简介

两个命令都允许你获得root权限,但是区别在于如何获得root权限。

su [选项]... [-] [用户 [参数]...]

su(switch user的缩写)将身份变成其他用户。

当该命令不加任何参数时,su命令默认你成为root用户。

当运行该命令时,提示你输入密码,输入的密码是你想切换到的用户的密码。例如我想成为root,在终端运行su,我将需要输入root用户的密码,如果我运行su bill,我将需要输入bill的密码。

说明:su加上参数'-'之后,完全切换到root用户的环境变量;在没有使用'-'的情况下,仍为原用户环境变量。


sudo

在一个ubuntu系统上,直接运行su以成为root的做法将得不到任何结果。因为默认状态下root用户没有一个可用的密码,因此你也就不能输入一个密码来获得权限。这种情况下sudo就有用武之地了,sudo命令将允许你以其他用户的身份来运行一条命令(通常是root)

此时输入的密码是当前用户的密码,而不是其他用户的



二、xxx is not in the sudoers file解决方法

解决方案1:


首先需要切换到root身份

$su -


然后vi /etc/sudoers或者

$visudo    

//切记,此处没有vi和sudo之间没有空格


添加一行:your_user_name ALL=(ALL)  ALL


这样就把自己加入了sudo组,可以使用sudo命令了。


解决方案2:

当无法切换到root身份时,可以用u盘启动,

1) 修改/etc/sudoers文件读写权限,sudo chmod a+w sudoers

2) 在root ALL=(ALL:ALL) ALL后面添加一行usernameALL=(ALL:ALL) ALL

3) 修改/etc/sudoers文件读写权限为原来的只读权限,sudo chmod a-w sudoers

sudo与su区别_解决方案