为什么双重 sudo 会修改权限?

为什么双重 sudo 会修改权限?

语境:

ssh进入运行 Amazon Linux 2013.09 的 AWS t1.micro 实例,使用默认的ec2-user。我试图列出默认 postgresql 目录的内容:

里面有什么?

$ ls /var/lib/pgsql9/

ls: cannot open directory /var/lib/pgsql9/: Permission denied

好的。这是谁的?

$ ls -l /var/lib | grep pgsql
drwx------ 4 postgres postgres 4096 Jun 22 16:06 pgsql9

啊,我真傻。

$ sudo -u postgres ls /var/lib/pgsql9/

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for ec2-user:

...什么?ec2-user有密码?该换把大枪了。

$ sudo sudo -u postgres ls /var/lib/pgsql9/
backups  data

成功! 现在,请前往 superuser.com 查明发生了什么。

为什么sudo sudo行为与不同sudo

答案1

Amazon EC2 的构建方式与 Ubuntu 类似:无需root访问,一切都已完成sudo

您的sudo命令所做的是尝试模仿postgres,需要获得这样做的权限。ec2-user没有此权限,因此sudo会要求输入密码(由于没有密码,因此会失败)。

当您执行 时sudo sudo,您将以 root 身份调用第二个命令,sudo该 root 具有模拟其他用户的权限,因此该命令有效。由于sudo配置方式(sudoers 中的 NOPASSWD 行),它不需要密码即可以 root 身份执行。

相关内容