一直用的是 Ubuntu,执行 “sudo command” 时并没有异常提示。今天安装了 CentOS,用一般用户执行 “sudo” 时却出现了如下错误提示:
andy-zhang is not in the sudoers file. This incident will be reported.
原因其实比较简单。之前在 Ubuntu 中之所以没有遇到,是因为 Ubuntu 中默认禁用 root 用户,就会在系统安装时将新建的一般用户添加到 “sudoers” 。但在 Redhat 体系下(如 CentOS、Fedora),默认没有禁用 root 用户,也没有把非 root 用户添加到 “sudoers” 中。因此,在执行 “sudo” 命令时就会出现 “xxx is not in the sudoers file. This incident will be reported.” 这样的错误输出。
解决方法很简单:
一、找到 “sudoers” 的位置
[andy-zhang@localhost ~]$ whereis sudoers
sudoers: /etc/sudoers /etc/sudoers.d /usr/share/man/man5/sudoers.5.gz
切换为 root 用户,准备接下来的操作。
二、修改 “sudoers” 配置文件
- 修改前先进行备份,
cp /etc/sudoers /etc/sudoers.bak
- 修改为可写权限,
chmod u+w /etc/sudoers
- 编辑文件,在 “root ALL=(ALL) ALL” 下增加非 root 用户,如下图所示:
三、恢复 “sudoers” 配置文件权限,否则系统不允许执行suoders文件
执行该命令:chmod u+w /etc/sudoers
测试结果如下:
[andy-zhang@localhost ~]$ sudo ps -ax
[sudo] password for andy-zhang:
PID TTY STAT TIME COMMAND
1 ? Ss 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
……
……