質問: ダブルsudoがパーミッションを変更するのはなぜですか? 環境:デフォルトのec2-userを使用して、amazon linux2013.09を実行しているawst1.microインスタンスにsshedします。デフォルトの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 success!では、superuser.comにアクセスして、何が起こったのかを把握します。sudo sudoの動作がsudoと異なるのはなぜですか?
回答: amazonec2はubuntuのように構築されています。rootアクセスはなく、代わりにsudoですべてが行われます。sudoコマンドが行ったことは、postgresになりすまそうとしたことであり、そのための許可が必要でした。 ec2-userにはこの権限がないため、sudoはパスワードを要求します(パスワードがないため失敗します)。あなたがしたときsudo sudo、他のユーザーになりすます権限を持つrootとして2番目のsudoを呼び出しているので、コマンドは機能します。 sudoの構成方法(sudoersのnopasswd行)により、rootとして実行するためにパスワードは必要ありません。