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 ) 为其设置了 x(serverfault 上的相关文章足以证明这一点)。因此,你的导航到/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/
!
这完全是不必要的,而且很危险(如您所见)。所有管理员用户(包括安装期间创建的默认用户帐户)都已被允许使用sudo
root 权限运行命令。
再次删除该文件/etc/sudoers.d/ken
并还原您可能对 所做的所有更改/etc/sudoers.d
。
您可以使用pkexec
临时替代 来sudo
修复问题,但此方法无效:
pkexec rm /etc/sudoers.d/ken
sudo
Ubuntu 上的管理员用户由其在(以前的)组中的组成员身份定义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