在Centos7中添加新用户并授权sudo操作

前言

最近又新购了一台阿里云的ECS服务器,照着以前写的《Hexo初次使用及部署到云服务器详细指南》中“云端服务器配置Git”一节配好了git服务。其中涉及到了新建用户的操作,但是没有涉及到sudo的操作,这里就借此将新建用户和sudo授权的方式记录下来。

固件信息

服务器提供商:阿里云

系统:CentOS Linux release 7.5.1804

web服务:nginx/1.12.2

本地环境:Mac 10.13.6

创建新用户

创建用户用到useradd命令:

创建用户:sample

1
[root@izuf61enooqdp573q49ywlz ~]# useradd sample

设置该用户密码,Linux会判断输入密码的复杂度,不过可以忽略直接再次输入密码

1
2
3
4
5
[root@izuf61enooqdp573q49ywlz ~]# passwd sample
Changing password for user sample.
New password:
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:

sudo授权

个人用户的权限只可以在本home下有完整权限(比如上面新创建的用户sample只有在/home/sample/目录下有全部权限),其他目录要看别人授权。而经常需要root用户的权限,这时候sudo可以化身为root来操作。

而新创建的用户不能使用sudo命令,需要在sudoer文件中进行配置。

未配置的结果如下:

1
2
3
4
5
6
7
8
9
10
11
[sample@izuf61enooqdp573q49ywlz ~]$ sudo date

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 sample:
sample is not in the sudoers file. This incident will be reported.

使用sudo命令调用date,当输入sample用户的密码后,提示sample用户没有在sudoers文件中。

所以就需要将sample用户添加到sudoers文件中。

使用whereis命令查找sudoers文件的路径。

1
2
[sample@izuf61enooqdp573q49ywlz ~]$ whereis sudoers
sudoers: /etc/sudoers /etc/sudoers.d /usr/share/man/man5/sudoers.5.gz

可以看到sudoers在/etc/sudoers,但还有一个/etc/sudoers.d。先去/etc/sudoers看看。在这之前先用su命令切换未root用户进行操作,因为sample用户没有权限修改/etc/文件夹下的内容。

1
2
[sample@izuf61enooqdp573q49ywlz ~]$ su
Password:

进入/etc/目录,并用ll | grep sudoers命令列出/etc/目录下包含sudoers的文件信息

1
2
3
4
[root@izuf61enooqdp573q49ywlz sample]# cd /etc/
[root@izuf61enooqdp573q49ywlz etc]# ll | grep sudoers
-r--r----- 1 root root 3938 Jun 27 02:07 sudoers
drwxr-x---. 2 root root 4096 Oct 17 10:00 sudoers.d

发现sudoers是一个只写的文件,上面出现过的sudoers.d是一个文件夹,且root用户有全部(读写执行)的权限。

cat命令查看sudoers文件

1
[root@izuf61enooqdp573q49ywlz etc]# cat sudoers

发现最后两行信息如下:

1
2
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

该信息提示sudoers文件会将/etc/sudoers.d文件夹下的所有文件读到sudoers文件中,而上面提到“root用户对sudoers.d文件夹及有全部(读写执行)的权限”

所以发现这个后,可以直接用echo命令在sudoers.d文件夹下创建文件。

1
[root@izuf61enooqdp573q49ywlz etc]# echo "sample    ALL=(ALL)     ALL" >> ./sudoers.d/custom_sudoers

之后,在sudoers.d下就有一个custom_sudoers文件。

1
2
3
[root@izuf61enooqdp573q49ywlz sudoers.d]# ll
total 4
-rw-r--r-- 1 root root 28 Oct 18 23:59 custom_sudoers

这时,sample用户就能使用sudo命令了。

不过这样每次使用sudo命令都要输入密码,怎么办呢?

其实很简单,只要将最后一个ALL修改成NOPASSWD: ALL即可,即sample ALL=(ALL) NOPASSWD: ALL

最后提一句:在Centos中useraddadduser一致

adduser软链到了useradd

1
2
[root@izuf61enooqdp573q49ywlz sudoers.d]# ll /usr/sbin/ | grep useradd
lrwxrwxrwx. 1 root root 7 Oct 15 2017 adduser -> useradd

删除用户

彻底删除用户和其主目录

测试删除用户:sample

1
userdel -r sample

参考

在centos7中添加一个新用户,并授权

详解Centos与ubuntu下的useradd与adduser

坚持原创技术分享,您的支持是对我最大的鼓励!