1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sudoについて

Posted at

環境

Ubuntu20.4

はじめに

root権限でないと実行できないコマンド、編集できないファイルがある場合、コマンドの先頭にsudoをつけて、root権限で実行することがよくあります。長らく、sudoはroot権限で実行できるようにするための専用コマンドだと思っていました。自分の場合、ほぼ、よのような用途でしか利用することがないため、その解釈で完全に間違っているわけではありません。しかし、root権限に限定してしか使えないといったことはありません。例えば、test1ユーザーでログインしていて、test2ユーザーとしてコマンドを実行したい場合も、sudoを使って実行することができます。別ユーザーとしてログインする場合は、suコマンドを使うことが多いかも分かりませんが、sudoを使うこともできます。sudoを使えば、ワンライナーで、コマンドが実行ができるといったメリットがあります。

sudoersについて

sudoの設定を記述するファイルが、/etc/sudoersです。このファイルをエディタで編集する場合は、普通のエディタを使うのではなく、visudorといった、/etc/sudoers編集用の専用エディタを使います。viでも編集することはできますが、viの使用は推奨されていません。/etc/sudoersにはroot権限の実行に関する重要な設定が記述されています。重要なファイルであるため、編集機能が強化されています。visudorには文法チェック機能があり、/etc/sudoersに文法的な誤りがあると、更新ができないようになっています。

/etc/sudoersを直接にはあまり触りたくない場合は、/etc/sudoers.dの中に任意のファイルを作成して、/etc/sudoersの中に、つぎの1行を追加して、読み込むといった使い方もあります。こちらの方が一般的な使い方だと思います。

includedir /etc/sudoers.d

sudoersの書き方

/etc/sudoersの中につぎの記述があります。この記述で、rootはどのユーザーでもログインができ、どのコマンドでも実行ができることになります。

root    ALL=(ALL:ALL) ALL

test1ユーザーがtest2ユーザーとしてログインして、コマンドを実行したい場合の設定です。

test1    ALL=(test2) ALL

本来なら、test1ユーザーがログアウトして、test2ユーザーでログインしなおして、コマンドを実行することになりますが、いちいち、そのような操作をするのは面倒です。
上記の設定を行うと、test1ユーザーでログインしている状態のままで、あたかも、test2ユーザーとしてログインしている状態を作れて、lsコマンドが実行できるようになります。それが下記のコマンドです。

$sudo -u test2 ls

つぎのようにすれば、test1ユーザーが、test2ユーザーとしてログインできて、実行できるコマンドは、lsコマンドだけに限定させることができます。このような設定を行うことで、test2ユーザーが他の人に実行させられては困るコマンドをブロックさせることができるため、セキュリティを高めることができます。

test1 ALL=(test2) /bin/ls
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?