Sudo

sudo（“su do”）は、UNIXおよびUnix系オペレーティングシステムのプログラムの1つで、ユーザーが別のユーザーの権限レベルでプログラムを実行するためのコマンドである。一般的に、ユーザーがスーパーユーザー（superuser、すなわちroot）の特権レベルを利用する際に用いられることが多い。 デフォルトではその別ユーザーのパスワード入力を求めてくるが、設定を変更すれば root のパスワードを求めるようにもできるし、端末（や擬似端末）につき1回だけパスワードを入力すればよいようにも、全くパスワード入力を求めないようにもできる。sudo は各コマンド実行を記録でき、スーパーユーザーとしてのログインの完全な代替として使う場合もある。例えば、Linuxディストリビューションの Ubuntu はそのような使い方をしている。 オリジナルのプログラムは1980年、ニューヨーク州立大学バッファロー校の計算機科学科で Bob Coggeshall と Cliff Spencer らが開発した。2023年現在も活発に開発が続いており、OpenBSDの開発者である Todd C. Miller が開発・保守を行っている。 suを使わずsudoを推奨するオペレーティングシステムでは以下のような利点が挙げられる。 オペレーティングシステムをインストールする際の、設定項目を減らすことができる。 ユーザーが余計なパスワードを覚えなくてもよくなる。 大きな変更を加える際、パスワードの入力を求められるようにすることで、ユーザーは何をしようとしているか再認識することができる。 sudoコマンド実行ログが残り、何か不具合が発生した際にどのようなコマンドを実行したのかを確認することができる。システム監視の意味でも有用。 rootアカウントでのログインを無効にしている場合、パスワードの総当たりなど、強引な手法でシステムに侵入を試みるクラッカーがrootアカウントで侵入できない。 ユーザーを管理者グループに追加、削除することにより、管理者権限を持つことのできるユーザーを限定できる。 sudo は su に比べて、より細かいセキュリティポリシーを設定することができる。 管理者権限を時間経過で自動的に破棄するように設定することができる。 sudoでコマンドを実行する前に、ユーザーは通常自分のパスワードを入力する。そのパスワードが正しく、/etc/sudoers という設定ファイルにそのユーザーのアクセス権が記述されていたら、コマンドが実行される。GUI環境で使うためのグラフィカルなフロントエンドもあり、 kdesu、kdesudo、gksudo などがよく知られている。GUIフロントエンドとしての「gksudo」は、メニュー画面などに登録された管理用アイテムがクリックされる場合に利用される。デフォルトでは、ユーザーの入力したパスワードはある期間だけ保持され、その間のsudoコマンド実行ではパスワード入力を要求されない。 以下にユーザーがアクセスを拒否された例を示す。 snorri@rimu:~$ sudo vi /etc/resolv.conf 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. Password: snorri is not in the sudoers file. This incident will be reported. snorri@rimu:~$ 下記はこの失敗が発生したときのログ、さらにその後snorriを/etc/sudoersに追加し、sudo実行が成功したときのログである。 snorri@rimu:~$ sudo tail /var/log/auth.log Aug 5 06:00:28 localhost sudo: snorri : user NOT in sudoers ; TTY=pts/1 ; PWD =/home/snorri ; USER=root ; COMMAND=/usr/bin/vi /etc/resolv.conf Aug 5 06:01:15 localhost su[15573]: (pam_unix) session opened for user root by snorri(uid=1000) Aug 5 06:02:09 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/vi /etc/resolv.conf Aug 5 06:02:49 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log 設定は、sudoersという設定ファイルにアクセス制御の構文を記述することによっておこなわれる。なおsudoersの編集には、visudoコマンドを使って行う。 visudoは、エディタを起動させて設定ファイルsudoersを読み込みこんでファイルsudoers.tmpをロックする。エディタが終了した時点で、管理者によってsudoersに記述した構文が正しいかを簡潔にチェックする。 sudoersは、マニュアルによると"どのユーザーが何を実行できるかのリスト"を記述しておく設定ファイルである。マニュアルではEBNFを用いた制御の記述法の説明が為されている。 Sudo for Windows はマイクロソフトが開発していて、Windows 11 24H2 (Build 26052) 以降では設定で有効にすることで利用可能である。 似たようなものとして Gerardo Grignoli が2019年より gsudo (sudo for windows) を公開している。 [脚注の使い方] ^ 五十音順にイタリア語、ウクライナ語、英語、エスペラント語、オランダ語、カタルーニャ語、ガリシア語、クロアチア語、スウェーデン語、スペイン語、スロベニア語、セルビア語、チェコ語、中国語、デンマーク語、ドイツ語、トルコ語、日本語、バスク語、フィンランド語、フランス語、ベトナム語、ポーランド語、ポルトガル語、ロシア語。 ^ a b c Todd C. Miller. “Sudo Main Page”. 2021年7月29日閲覧。 ^ a b “Manpage for sudo”. 2007年11月4日閲覧。 ^ RootSudo - Community Ubuntu Documentation ^ 「first conceived and implemented by Bob Coggeshall and Cliff Spencer around 1980 at the Department of Computer Science at SUNY/Buffalo.」と見える。Miller, Todd C. “A Brief History of Sudo”. 2014年3月17日閲覧。 ^ “suとsudoについて - Ubuntu Japanese Wiki”. 2010年10月18日閲覧。 ^ microsoft/sudo: It's sudo, for Windows - GitHub ^ Adoumie, Jordi. “Introducing Sudo for Windows!”. Windows Command Line. 9 February 2024閲覧。 ^ “Announcing Windows 11 Insider Preview Build 26052 (Canary and Dev Channels)”. Windows Insider Blog. 9 February 2024閲覧。 ^ “Home | gsudo (sudo for windows)”. gerardog.github.io. 9 February 2024閲覧。 setuid su doas ユーザーアカウント制御 大いなる力には、大いなる責任が伴う With great power comes great responsibility - sudo初回起動時の注意書きに用いられている成句。 公式ウェブサイト Manpage of SUDO JM Project rootsh と sudosh - ロギングのためのsudoラッパー Sudo Fun Mac OS X上のsudoに関するガイド Sudo for Windows - Microsoft 表示 編集