Sudo

sudo コマンドについて



sudo (superuser do) は、UNIX および UNIXオペレーティングシステムにおける重要なコマンドの一つです。このコマンドを使用することで、一般ユーザーが一時的に別のユーザー(特にスーパーユーザー、つまり `root`)の権限を借りてプログラムを実行できます。これにより、システム管理に必要な操作を、セキュリティを維持しつつ柔軟に行うことが可能になります。

sudo の利点



`sudo` は、従来の `su` コマンドと比較して、より安全で管理しやすい環境を提供します。

設定項目の削減: オペレーティングシステムをインストールする際の複雑な設定項目を減らすことができます。
パスワード管理の簡略化: ユーザーは余計なパスワードを覚える必要がなく、自分のパスワードのみで管理者権限を利用できます。
操作の再認識: 管理者権限を必要とする操作を行う際にパスワード入力を求めることで、ユーザーに操作内容を再確認させ、誤操作を防ぐ効果があります。
実行ログの記録: `sudo` コマンドの実行ログが残るため、システムに問題が発生した際に原因を特定しやすくなります。これはシステム監視の観点からも非常に有用です。
root アカウントへの直接ログインの抑制: `root` アカウントでの直接ログインを無効化することで、総当たり攻撃などの不正アクセスからシステムを守ります。
管理者権限の管理: ユーザーを管理者グループに追加・削除することで、管理者権限を持つユーザーを柔軟に管理できます。
セキュリティポリシーの詳細設定: `sudo` は `su` よりも細かいセキュリティポリシーを設定することができ、より安全なシステム運用が可能です。
管理者権限の自動破棄: 一定時間経過後に管理者権限を自動的に破棄するよう設定でき、セキュリティリスクを低減できます。

sudo の仕組み



`sudo` コマンドを実行する際、ユーザーは通常、自分のパスワードを入力します。このパスワードが正しく、かつ `/etc/sudoers` ファイルにそのユーザーのアクセス権が記述されていれば、指定されたコマンドが実行されます。`sudo` には、GUI 環境で使用するためのグラフィカルなフロントエンド (例: `kdesu`, `kdesudo`, `gksudo`) も存在します。

パスワードが認証されると、デフォルトでは一定時間パスワードがキャッシュされ、その間はパスワードの再入力を求められることなく `sudo` コマンドを実行できます。

エラー例



bash
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` が `sudo` を利用しようとしましたが、`/etc/sudoers` ファイルに設定されていないため、アクセスが拒否されています。

ログの例



以下は、アクセス拒否時のログと、`/etc/sudoers` に `snorri` を追加した後のログです。

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


設定



`sudo` の設定は、`/etc/sudoers` ファイルに記述することで行います。このファイルを直接編集する代わりに、`visudo` コマンドを使用することが推奨されています。`visudo` は、設定ファイルの構文をチェックし、誤った設定によるシステムへの影響を防ぎます。

`/etc/sudoers` ファイルは、「どのユーザーがどのコマンドを、どの権限で実行できるか」を定義します。設定は EBNF を用いた構文で記述されます。

Windows 版の sudo



近年、Microsoft が開発した Sudo for Windows が、Windows 11 24H2 (Build 26052) 以降で利用可能になりました。また、サードパーティ製の gsudo (sudo for windows) も存在します。

歴史



`sudo` は 1980 年にニューヨーク州立大学バッファロー校で開発されました。現在も活発に開発が続けられており、OpenBSD の開発者である Todd C. Miller がメンテナンスを担当しています。

関連項目



setuid: プログラムの実行時に、そのプログラムの所有者の権限で実行する仕組み。
su: 別のユーザーに切り替えるコマンド。
doas: `sudo` の代替となるコマンド。
ユーザーアカウント制御 (UAC): Windows における権限昇格機能。
大いなる力には、大いなる責任が伴う: `sudo` 使用時の注意を喚起する言葉。

外部リンク



公式ウェブサイト
Manpage of SUDO
rootsh と sudosh
Sudo Fun (Mac OS X)
Sudo for Windows - Microsoft

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。