在Ubuntu 16.04系统里给普通用户赋予sudo权限,编辑vi /etc/sudoers 文件内容后发现执行sudo命令报错。
当我运行命令检查sudo权限的时候 sudo -i 输出错误提示:
>>> /etc/sudoers: syntax error near line 24 <<<
sudo: unable to stat /etc/sudoers.d/README: Permission denied
sudo: parse error in /etc/sudoers near line 24
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
仔细看这段提示是说运行sudo命令的时候遇到4个错误。分别是:
/etc/sudoers.d/README文件没有权限
/etc/sudoers文件内容第24行有语法错误
找不到有效的sudoers源
无法初始化策略插件
于是,切换到root用户,执行 vi /etc/sudoers 编辑文件内容,将第24行的错误改正(注释掉)之后保存退出。然后再出来切换到之前的普通用户执行 sudo -i 输出错误提示只剩下一个:
sudo: unable to stat /etc/sudoers.d/README: Permission denied
明白了,是应为文件权限的问题。切换到root用户修改用户和权限就行了:
chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*
将sudoers.d文件夹的权限设置成root用户和root组,root组只有执行的权限,只有root用户有写入的权限。
至此,再次切换回普通用户,执行 sudo -i 命令发现正常。