【Linux】sudo設定していないユーザーにsudoする


この記事はプロモーションを含みます。

bashシェル

sudoで別のユーザーとしてコマンドを実行する際、事前にsudo設定をしておく必要があります。
今回は、sudo設定されていないユーザーの権限でコマンドを実行する方法を解説します。

ユーザーにsudo権限を付与する方法はこちらをご覧ください。

通常、sudoが設定されていないユーザーに対して、sudoを実行すると下記のようなエラーが発生します。
下記はawxユーザーが、ansibleユーザーとして、whoamiを実行しようしてエラーとなった例です。

[awx@SYUTAKUWEB01 ~]$ sudo -u ansible whoami

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] awx のパスワード:
残念ですが、ユーザー awx は'/bin/whoami' を ansible として SYUTAKUWEB01 上で実行することは許可されていません。

下記のようにsudoを実行することで、sudo設定していないユーザー権限でコマンドを実行することが可能です。

[awx@SYUTAKUWEB01 ~]$ sudo sudo -u ansible whoami
ansible

whoamiの実行結果が[ansible]となっています。
先程はエラーでしたが、今回はawxユーザーでansibleユーザーとしてコマンドの実行に成功しています。

この仕組みを解説します。
まず、sudoコマンドの書式は以下です。

sudoコマンドの書式

① sudo 実行するコマンド
  *実行ユーザーを指定しない場合は、[root]として実行されます。

② sudo -u 実行ユーザー 実行するコマンド

書式を確認したところで、実行したコマンドを分割してみてみます。
まず、黄色のsudoで、[root]ユーザーになり、緑色のコマンドを実行しています。
そして、緑色のsudoで、[ansible]ユーザーとして、whoamiを実行しています。

sudo sudo -u ansible whoami

仕組みが分かれば簡単ですね。
まとめると、awxユーザーから直接ansibleユーザーにsudo出来ないので、rootユーザーを経由してsudoを実行しています。

記事は以上です。このテクニックですが、個人的に使用頻度が高い感じがします。
良ければ参考にしてみて下さい。

sudo実行時のパスワード確認を抑止したいって方は下記をご覧ください。

コメント

タイトルとURLをコピーしました