sudo 组中的用户无法执行 sudo 操作

sudo 组中的用户无法执行 sudo 操作

在 AWS 和 Ansible 1.9 上使用 Ubuntu 14.04 并出现以下权限错误:

$ whoami
>> ubuntu
$ mkdir -p $HOME/.ansible/tmp/testfolder
>> mkdir: cannot create directory ‘/home/ubuntu/.ansible/tmp/testfolder’: Permission denied
$
$ # this works!!
$ sudo mkdir -p $HOME/.ansible/tmp/testfolder
$ # this also works!! (maybe ubuntu doesn't have sudo privileges...)
$ sudo rm -rf $HOME/.ansible/tmp/testfolder
$
$ # ???
$ sudo adduser ubuntu sudo
>> The user `ubuntu' is already a member of `sudo'.

如果ubuntu属于该sudo组,为什么我不能创建该目录而sudo可以?我如何才能真正赋予ubuntu的权限sudo

编辑: 以供参考,

$ ls -ld /home/ubuntu/.ansible/
>> drwxr-xr-x 4 root root 4096 Sep  8 00:20 /home/ubuntu/.ansible/

答案1

我认为您不清楚sudo如果用户是某个组的成员,该组代表什么。

默认情况下,如果用户是组的成员sudo,则该用户可以root通过模拟 root 身份运行命令:

sudo some command

文件中有一行/etc/sudoers可以实现这一点:

%sudo   ALL=(ALL:ALL) ALL

再次强调,成为组成员sudo并不意味着您root或不授予您运行仅可root即时运行的命令的权限。您始终需要sudo在该命令前使用。因此,如果用户不是组成员,则sudo该用户将无法运行任何命令,即使root使用sudo

就你的情况而言,当你运行时:

mkdir -p $HOME/.ansible/tmp/testfolder

您将收到权限被拒绝的消息,因为该目录/home/ubuntu/.ansible归所有者所有root,并且其他人无权对其进行写入。

另一方面,当您使用时:

sudo mkdir -p $HOME/.ansible/tmp/testfolder

您正在模仿root谁有权限写入该目录,因此命令成功了。

相关内容