Sudoers.d 权限被拒绝

Sudoers.d 权限被拒绝

sudo我在 DardDrive 中运行 ubuntu 14.04。我按照此处的设置和运行步骤进行操作http://snag.gy/JAGgt.jpg。但每次我sudo "whatever" 以用户 ($) 身份输入时,都会收到以下消息:

 sudo: unable to stat /etc/sudoers.d/README: Permission denied
 sudo: unable to stat /etc/sudoers.d/ken: Permission denied.

所以我升级为 root 并执行了ls -l | grep sud。请参阅以下内容:

root@ken-:/etc# ls -l | grep sud
-rw-r-----  1 root root       745 mar 19 12:11 sudoers
drwxr-----  2 root root      4096 mar 19 14:53 sudoers.d

根据有关如何配置的说明sudo,我应该在目录中创建一个名为与我的用户名相同的目录,sudoers.d并且在该文件中我只需输入ALL(ALL)LL用户名。但是,我也chmod 440对该文件进行了操作,使其看起来像这样:

root@ken-Inspiron-5558:/etc/sudoers.d# ls -l
total 8
-r--r----- 1 root root  22 mar 19 14:53 ken
-r--r----- 1 root root 958 mar 19 12:16 README

此时,当我使用降低级别sudo su ken并想要进入 sudoers.d 时,我不断收到权限被拒绝的声明。

我甚至无法以用户身份访问 sudoers.d,请看以下信息:

ken@ken-Inspiron-5558:/etc$ cd /etc/sudoers.d/
 bash: cd: /etc/sudoers.d/: Permission denied-

答案1

首先,根据说明,这是ALL=(ALL) ALL,所以有一个混乱。

第二,说明书上说 如果你的系统尚未设置并启用 sudo,你真的在做其他事情之前应该检查一下。

第三,只需删除该ken文件即可。您的用户名会在安装过程中自动添加到sudo组中(当然,前提是这是您在安装过程中选择的用户名,而不是手动创建的用户名)。

最后,查看您的/etc/sudoers.d权限:

root@ken-:/etc# ls -l | grep sud
-rw-r-----  1 root root       745 mar 19 12:11 sudoers
drwxr-----  2 root root      4096 mar 19 14:53 sudoers.d

目录需要设置执行权限位才能导航到其中. 您无法导航至目录因为只有所有者( root ) 为其设置了 xserverfault 上的相关文章足以证明这一点)。因此,你的导航到/etc/sudoers.d 问题没有什么sudo与文件夹权限位有关

但是如果您仍然不相信的话,这里有一个在我的主文件夹中由我的用户拥有的目录的演示。

$ ls -ld testdir                                               
drwxrwxr-x 2 xieerqi xieerqi 4096 Mar 17 16:34 testdir/
$ chmod -x testdir
$ cd testdir
/bin/mksh: cd: /home/xieerqi/testdir: Permission denied

答案2

您不应该向 中添加任何内容/etc/sudoers.d/
这完全是不必要的,而且很危险(如您所见)。所有管理员用户(包括安装期间创建的默认用户帐户)都已被允许使用sudoroot 权限运行命令。

再次删除该文件/etc/sudoers.d/ken并还原您可能对 所做的所有更改/etc/sudoers.d
您可以使用pkexec临时替代 来sudo修复问题,但此方法无效:

pkexec rm /etc/sudoers.d/ken

sudoUbuntu 上的管理员用户由其在(以前的)组中的组成员身份定义admin

当您通过 Unity 控制中心 GUI 添加新的管理员用户时,它将自动处理这些组成员身份。

当您使用 从终端添加新用户时sudo adduser USERNAME,该用户不会成为任何其他组的成员。在这种情况下,您必须手动添加这两个组,以使该帐户成为允许使用的管理员sudo

sudo adduser USERNAME sudo

在极少数情况下,您确实需要编辑/etc/sudoers或文件/etc/sudoers.d/绝不手动执行,但**始终使用它sudo visudo来编辑它!此命令将在应用更改之前验证文件并检查错误,并防止sudo命令被破坏。

答案3

我通过提升为 root 来解决问题,然后执行 root@root# chmod 755 /root/etc/sudoers 和 sudoers.d。由于我是唯一使用计算机的人,所以我并不介意为 ugo 设置权限。

答案4

Ubuntu 已安装 sudo。普通用户将无法将目录更改为 /etc/sudoers.d

在您提供的屏幕截图中,作者想要sudo以用户身份使用命令student

为此,您必须首先创建一个名为 student 的用户

# useradd student


Add student to sudoers
# vi /etc/sudoers.d/student

insert following in it
student ALL=(ALL) NOPASSWD:ALL

save the file

restart ssh

现在希望您可以运行所有 sudo 命令并成为如下所示的 sudo;)

$ sudo su

相关内容