Linux报错:不在 sudoers 文件中
我在执行 sudo 命令的时候,由于输错了两次密码,报出了“不在 sudoers 文件中。此事将被报告”错误信息。
[elasticsearch@localhost logs]$ sudo chattr -V -a yidian-application.log
[sudo] password for elasticsearch:
Sorry, try again.
[sudo] password for elasticsearch:
Sorry, try again.
[sudo] password for elasticsearch:
elasticsearch 不在 sudoers 文件中。此事将被报告。
一、sudo是什么
root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。
sudo命令可以让你以root身份执行命令,来完成一些我们这个帐号完成不了的任务。其实并非所有用户都能够执行sudo,因为有权限的用户都在/etc/sudoers中呢。
二、解决方法
1、切换到 root 用户
2、执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:
Allow root to run any commands anywhere
root ALL=(ALL) ALL
user ALL=(ALL) ALL(需要新增的用户)
说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)
3、保存退出,并恢复/etc/sudoers的访问权限为440
[root@Compile user]# chmod 440 /etc/sudoers
4、切换到原来的用户,继续剩下的 sudo 操作
注:
其实centos自带命令visudo,意思就是调用vim来修改“/etc/sudoers”文件,从而达到增加账号权限的目的。相比之下,这个命令应该会做些保护和隔离,所以更加安全。
这样省去了你切换帐号的步骤。