Linux root身份执行命令 sudo

sudo语法

sudo 命令

原有的Linux命令,前面加sudo,表示以root身份执行命令。


什么是root身份

无论su root还是su - root,两者都需要知道root用户的密码。太不安全了,root用户不会给密码给别人。

能不能让其他用户不知道root的密码,又有root的权限?

这就是sudo命令的目标。


实现步骤:

1)把指定用户加入到/etc/sudoers 文件(指定用户就能以root身份执行命令)。

3)指定用户执行高权限命令时,前面加sudo。


准备:高权限命令的执行

以普通用户xt1执行高权限命令,这里以systemctl为例

systemctl restart httpd

img

默认让用户选择使用哪种身份登录。Ctrl+C取消。


通过sudo命令执行

sudo加在原有命令之前,表示以root身份执行。

sudo systemctl restart httpd

img

这里要求输入的是xt1的密码。

输入后,提示xt1不在sudoers文件中。


步骤1:编辑/etc/sudoers配置用户

文件/etc/sudoers默认为只读文件

img

设置为仅root的读写权限

chmod 700 /etc/sudoers

编辑文件

vim /etc/sudoers

加入

xt1 ALL=(ALL)    ALL

img

各种ALL表示所有权限。后续详细讲解。


看到这里,%wheel表示wheel组,明白管理员多牛了。


步骤2:sudo命令执行高权限命令

sudo systemctl restart httpd

img

需要输入xt1自身的密码。

执行成功。


免密执行sudo

加入NOPASSWD: ,如下

xt1 ALL=(ALL)    NOPASSWD: ALL

冒号与后面的ALL有空格。

再次执行sudo,无提示

img


方法2:把用户加入到wheel组

加入附加组不管用,必须是主组。

usermod -g wheel xt1

设置xt1的组为管理员组wheel。


测试启动httpd服务,成功。