XXXX is not in the sudoers file. This incident will be reported解决方法

假设你用的是Red Hat系列(包括Fedora和CentOS)的Linux系统。当你执行sudo命令时可能会提示“某某用户 is not in the sudoers file. This incident will be reported.”

解决方法:编辑sudoers文件有两种办法,一种是以root帐号执行visudo,另一种是root帐号执行vi /etc/sudoers.其实两者都是修改/etc/sudoers。

注意:在修改 /etc/sudoers时,一定注意该文件是否有写权限,如果没有写权限,则使用 chmod u+w /etc/sudoers使其拥有写权限
。写完后注意将写权限去掉,以防止误操作。

假设你的用户名是“minghai”,属于“minghai”用户组。

为了让用户minghai能够执行sudo命,你可以在sudoers文件中加上一下四行的任意一行。

minghai           ALL=(ALL)             ALL 

%minghai          ALL=(ALL)             ALL

minghai           ALL=(ALL)             NOPASSWD:ALL

%minghai          ALL=(ALL)             NOPASSWD:ALL

解释说明:

  1. 第一行:允许用户minghai执行sudo命令(需要输入密码)。
  2. 第二行:允许用户组minghai里面的用户执行sudo命令(需要输入密码)。
  3. 第三行:允许用户minghai执行sudo命令,并且在执行的时候不输入密码。
  4. 第四行:允许用户组minghai里面的用户执行sudo命令,并且在执行的时候不输入密码。

当然如果你理解上面的原理后,可以直接输入如下命令解决此问题

su - echo 'xxx ALL=(ALL) ALL' >> /etc/sudoers  (其中xxx代表用户名) 

原理扩展

通过su可以直接将身份变为 root,但需要 root 的密码
通过sudo可以执行 root 的命令串,sudo 只需要输入自己的密码,或者在sudoer中配置不需要任何密码

还可以可以使用visudo修改 /etc/sudoers 文件

visudo:visudo 是利用 vi 将 /etc/sudoers 文件调出来进行修改而已

sudoers 文件中每列的含义,以上面的示例

用户账号       登陆者的来源主机名称=(可切换的身份)    可执行的命令
minghai                      ALL=(ALL)              ALL 

上面这一行四个组件的意义:

  1. 【用户账号】操作系统的那个账号可以使用 sudo 这个命令,如果前面加 % 代表那个用户组可以使用 sudo 命令。
  2. 【登陆者的来源主机名称】这个账号由那台主机连接到本 Linux 主机
  3. 【可切换的身份】来源主机的用名称
  4. 【可执行的命令】可以执行什么命令。这个命令必须使用决定命令,多个命令用逗号隔开
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐