在 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'.
Run Code Online (Sandbox Code Playgroud)
如果ubuntu属于该sudo组,为什么我不能创建该目录而sudo可以?我怎么能真正给予ubuntu特权sudo?
编辑:供参考,
$ ls -ld /home/ubuntu/.ansible/
>> drwxr-xr-x 4 root root 4096 Sep 8 00:20 /home/ubuntu/.ansible/
Run Code Online (Sandbox Code Playgroud)
sudo如果用户是其中的成员,我认为您不清楚该组代表什么。
默认情况下,如果用户是 group 的成员sudo,则该用户可以root通过模拟 root来运行命令:
sudo some command
Run Code Online (Sandbox Code Playgroud)
/etc/sudoers文件中有一行使这成为可能:
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
再次成为组的成员sudo不会让您root或不允许运行只能由动态运行的命令root。您总是需要sudo在该命令之前使用。因此,如果用户不是组的成员,sudo该用户将无法像root使用sudo.
在您的情况下,当您正在运行时:
mkdir -p $HOME/.ansible/tmp/testfolder
Run Code Online (Sandbox Code Playgroud)
您将收到权限被拒绝的消息,因为该目录/home/ubuntu/.ansible归其所有,root并且其他人无权在其上写入。
另一方面,当您使用时:
sudo mkdir -p $HOME/.ansible/tmp/testfolder
Run Code Online (Sandbox Code Playgroud)
您正在模拟root谁有权在该目录上写入内容,因此命令成功。
| 归档时间: |
|
| 查看次数: |
4195 次 |
| 最近记录: |