普通用户添加 sudo 权限

1. 添加新用户

我们在Linux系统中经常需要根据不同的需求创建对应的新用户, 但是新用户作为一个普通用户, 权限是非常有限的, 默认不能够使用管理员权限执行某些管理员才能执行的命令, 给大家演示一下操作步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 添加新用户 sanji
[root@VM-8-14-centos ~]# adduser sanji

# 给新用户 sanji 设置一个密码
[root@VM-8-14-centos ~]# passwd sanji
Changing password for user sanji.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

# 切换到 sanji 用户
[root@VM-8-14-centos ~]# su - sanji

# 让 sanji 用户执行一个只有管理员才有权限执行的操作, 因此需要在命令前加 sudo
[sanji@VM-8-14-centos ~]$ sudo updatedb

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for sanji:
sanji is not in the sudoers file. This incident will be reported.

最后命令还是没能够执行, 原因是没有权限, 最后提示告诉我们sanji is not in the sudoers file, 因此我们只需要将用户sanji添加到这个文件中就可以了, 说干就干。

2. 添加sudo权限

这个叫做sudoers的文件位于/etc目录下, 我们先切换到/etc目录, 然后查看一下这个文件的详细信息

1
2
3
$ cd /etc/
$ ll sudoers
-r-------- 1 root root 4382 Jan 21 23:16 sudoers

我们惊奇的发现这个文件的所有者root对它也只有读权限, 默认是不能修改的, 作为root以外的其他用户对它没有任何的操作权限。

解决方案:

  1. 先切换到root用户
  2. root用户下修改这个文件属性, 给其添加写权限
  3. 修改文件内容, 把普通用户sanji添加进去, 保存退出
  4. 将文件权限修改为原来的 400 (r--------)
  5. 切换到用户 sanji, 这时候就可以使用 sudo了, 权限添加成功

相关的操作命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 1. 切换到root用户
$ su root
Password: # 输入root用户的密码

# 2. 修改文件权限, 暴力一点没有关系, 反正还需要改回去, 直接 777 就行
$ chmod 777 sudoers

# 3. 使用 vim 打开这个文件
$ vim sudoers

# 4. 在文件中找到这一行, 在文件偏尾部的位置
root ALL=(ALL) ALL

# 5. 照葫芦画瓢, 在下边新添加一行内容如下:
root ALL=(ALL) ALL # 原来的内容
sanji ALL=(ALL) ALL # 新添加的行, 将用户名指定为 sanji 即可

# 6. 保存退出 (先按esc, 然后输入 :wq)
# 7. 将文件改回原来的权限
$ chmod 400 sudoers

恭喜, 权限设置成功, 你的普通的用户可以使用 sudo执行只有管理员才能操作的命令啦。