Sudo

sudo（“su do”）は、UNIXおよびUnix系オペレーティングシステムのプログラムの1つで、ユーザーが別のユーザーの権限レベルでプログラムを実行するためのコマンドである。一般的に、ユーザーがスーパーユーザー（superuser、すなわちroot）の特権レベルを利用する際に用いられることが多い。デフォルトではその別ユーザーのパスワード入力を求めてくるが、設定を変更すれば root のパスワードを求めるようにもできるし、端末（や擬似端末）につき1回だけパスワードを入力すればよいようにも、全くパスワード入力を求めないようにもできる。sudo は各コマンド実行を記録でき、スーパーユーザーとしてのログインの完全な代替として使う場合もある。例えば、Linuxディストリビューションの Ubuntu はそのような使い方をしている。
オリジナルのプログラムは1980年、ニューヨーク州立大学バッファロー校の計算機科学科で Bob Coggeshall と Cliff Spencer らが開発した。2018年現在も活発に開発が続いており、OpenBSDの開発者である Todd C. Miller が開発・保守を行っている。
利点.
suを使わずsudoを推奨するオペレーティングシステムでは以下のような利点が挙げられる。
設計.
sudoでコマンドを実行する前に、ユーザーは通常自分のパスワードを入力する。そのパスワードが正しく、codice_1 という設定ファイルにそのユーザーのアクセス権が記述されていたら、コマンドが実行される。GUI環境で使うためのグラフィカルなフロントエンドもあり、 kdesu、kdesudo、gksudo などがよく知られている。GUIフロントエンドとしての「gksudo」は、メニュー画面などに登録された管理用アイテムがクリックされる場合に利用される。デフォルトでは、ユーザーの入力したパスワードはある期間だけ保持され、その間のsudoコマンド実行ではパスワード入力を要求されない。
以下にユーザーがアクセスを拒否された例を示す。
下記はこの失敗が発生したときのログ、さらにその後"snorri"を/etc/sudoersに追加し、sudo実行が成功したときのログである。
設定.
設定は、sudoersという設定ファイルにアクセス制御の構文を記述することによっておこなわれる。なおsudoersの編集には、visudoコマンドを使って行う。
visudoは、エディタを起動させて設定ファイルsudoersを読み込みこんでファイルsudoers.tmpをロックする。エディタが終了した時点で、管理者によってsudoersに記述した構文が正しいかを簡潔にチェックする。
sudoersは、マニュアルによると"どのユーザーが何を実行できるかのリスト"を記述しておく設定ファイルである。マニュアルではEBNFを用いた制御の記述法の説明が為されている。