前言
最近又新购了一台阿里云的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 | [root@izuf61enooqdp573q49ywlz ~]# passwd sample |
sudo授权
个人用户的权限只可以在本home下有完整权限(比如上面新创建的用户sample只有在/home/sample/
目录下有全部权限),其他目录要看别人授权。而经常需要root用户的权限,这时候sudo可以化身为root来操作。
而新创建的用户不能使用sudo
命令,需要在sudoer文件中进行配置。
未配置的结果如下:
1 | [sample@izuf61enooqdp573q49ywlz ~]$ sudo date |
使用sudo
命令调用date
,当输入sample用户的密码后,提示sample用户没有在sudoers文件中。
所以就需要将sample用户添加到sudoers文件中。
使用whereis
命令查找sudoers文件的路径。
1 | [sample@izuf61enooqdp573q49ywlz ~]$ whereis sudoers |
可以看到sudoers在/etc/sudoers
,但还有一个/etc/sudoers.d
。先去/etc/sudoers
看看。在这之前先用su
命令切换未root用户进行操作,因为sample用户没有权限修改/etc/
文件夹下的内容。
1 | [sample@izuf61enooqdp573q49ywlz ~]$ su |
进入/etc/
目录,并用ll | grep sudoers
命令列出/etc/
目录下包含sudoers的文件信息
1 | [root@izuf61enooqdp573q49ywlz sample]# cd /etc/ |
发现sudoers是一个只写的文件,上面出现过的sudoers.d是一个文件夹,且root用户有全部(读写执行)的权限。
用cat
命令查看sudoers文件
1 | [root@izuf61enooqdp573q49ywlz etc]# cat sudoers |
发现最后两行信息如下:
1 | ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) |
该信息提示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 | [root@izuf61enooqdp573q49ywlz sudoers.d]# ll |
这时,sample用户就能使用sudo
命令了。
不过这样每次使用sudo
命令都要输入密码,怎么办呢?
其实很简单,只要将最后一个ALL
修改成NOPASSWD: ALL
即可,即sample ALL=(ALL) NOPASSWD: ALL
。
最后提一句:在Centos中useradd
与adduser
一致
adduser
软链到了useradd
。
1 | [root@izuf61enooqdp573q49ywlz sudoers.d]# ll /usr/sbin/ | grep useradd |
删除用户
彻底删除用户和其主目录
测试删除用户:sample
1 | userdel -r sample |