Sudo/ja

コマンドは特権の昇格をシンプル・安全に管理します. たとえば一般ユーザーが特定（もしくはすべて）のコマンドをや他のユーザーで（パスワードなしも含め）実行できるようにします.

ユーザーに完全なroot特権を渡さずに、特権の必要な操作を許可するためにはを使うとよいでしょう. を使うことで誰が何をすることができるかを制御できます. このガイドでは、このパワフルなツールについてのちょっとした紹介をします.

この記事は手短な説明です. はここで述べられているよりも非常にパワフルです. 違うユーザーとしてファイルを編集したり（）、スクリプトの中から実行（つまりバックグラウンドで実行可能で、キーボードの代わりに標準入力からパスワードを読み込めます）するなど、特別な機能を備えています.

さらなる情報に関しては、やのマニュアルを参照してください.

ロギングアクティビティ
のもう一つの利点は、（成功したかしないかにかかわらず）アプリケーションを実行しようとする試みをログに記録できることです. これは、直すのに10時間掛かった致命的な間違いを、誰がしたかというのを追跡するのに非常に便利です:)

権限の付与
システム管理者は、パッケージを使うことで他のユーザに、通常実行権限がないアプリケーション（群）を実行させるための権限を与えることができます. アプリケーションの ビットとは違って、は誰が'ある特定のコマンドを実行できるか、そしていつ''できるかといった、より細かな管理を行うことができます.

を使用することで、誰があるアプリケーションを使用できるかと行った明確な一覧を作成することができます. もしsetuidビットが実行ファイルに設定されている場合、どのユーザも（あるいは使用されているパーミッション設定によってはある特定のグループのユーザが）そのアプリケーションを実行できます. を使用することで、ユーザにアプリケーションを実行するためのパスワードを求めることができます（そして多分そうすべきです）.

の設定はに書かれています. このファイルをややその他のエディタで編集してはいけません. ファイルの内容を変えたい時は、いつもを使うようにしてください. このツールは、複数のシステム管理者が同時にこのファイルを編集しないようにし、ファイルのパーミッション設定を保存し、そしてファイルに致命的な間違いがないようにいくつか文法チェックを行います.

基本的な構文
の最も難解な部分がの構文です. 基本的な構文を示します.

この行は、 からログインしている というユーザーは というコマンドを実行してもよい、ということをに示します（カンマ区切りのコマンドのリストを書くこともできます）.

もっと現実的な例を挙げればより明確になるかもしれません：に、彼がからログインしている時の実行を許可する：

ユーザー名の代わりにグループ名を使うこともできます. この場合はグループ名の頭に をつけてください. グループのメンバーにの実行を許可する場合はこのように書きます.

特定のマシンの特定のユーザに2つ以上のコマンドを実行可能にさせるために、一行に複数のコマンドを並べることができます. 例えばにだけでなくとの実行も許可する場合はこう書きます.

単に実行ファイルの名前だけではなく、（パラメータや引数を含めた）正確なコマンドラインを指定することもできます. これは、あるツールの使用を特定のコマンドオプションの組み合わせにまで制限するのに便利です. では、shellスタイルのワイルドカード（メタあるいはグロブとしても知られる）をsudoersファイルのパスネームやコマンドライン引数に使用することができます. これらは正規表現ではないことに注意してください.

これは、にアクセスする完全な力を与えられたユーザが初めてを実行した時の例です：

が要求するパスワードはユーザー自身のパスワードです. この手順を踏むことで、うっかりログインしたまま席を離れてしまった時に不正利用されないようにします.

LDAPでの基本文法
LDAPサポートのためには と のUSEフラグが必要となります.

sudoをLDAPと一緒に使用する場合、sudoはLDAPサーバからも設定を読み込みます. 従って2つのファイルを編集する必要があります.

以下のLDAPのエントリを、sudoのために追加する必要があります.

The configuration on the sudoer on LDAP are similar to files with some different. Please read more about sudo with LDAP on the link below.

エイリアスを用いる
より大きな環境では、すべてのユーザ（またはホスト、あるいはコマンド）を何回も何回も打ち込むのは恐ろしいタスクとなります. の管理を楽にするに、エイリアスを定義することができます. エイリアスの定義の構文は極めて単純です：

どの場所でも、いつでも機能するエイリアスの1つに エイリアスがあります（エイリアスとそうでないものを分かりやすく区別するために、エイリアスに大文字を使用することが推奨されています）. エイリアスはありうるすべての設定へのエイリアスです.

エイリアスの使用例として、すべてのユーザにもしそのユーザがローカルでログインしている場合にコマンドの実行を認める例がこちらです：

ユーザが、彼がどこからログインしているかに関わらず、コマンドをrootとして実行するのを認める例：

より興味深いものとして、ソフトウェア管理アプリケーション（やのようなもの）をシステムで実行できるユーザの組と、rootを除いたすべてのユーザのパスワードを変更できる管理グループを定義するというものがあります！

非ルートでの実行
ユーザに別の非ルートのユーザとしてアプリケーションを実行させることも可能です. これはアプリケーションが別のユーザとして実行されていて（例えばウェブサーバ用の）、ある特定のユーザにそのユーザとして（ゾンビプロセスをkillするような）特権的なステップを踏ませたい時に非常に興味深いものとなります.

内で、コマンドのリストの前にユーザのリストを と で囲んでください：

に、ユーザあるいはユーザとしての実行を認める例：

この組を使うことで、ユーザはアプリケーションをどのユーザとして実行したいかをで選択することが出来ます：

命令を使用して、アプリケーションを実際に実行するユーザのエイリアスを作成することができます. 使用方法は今まで見てきた他の と同じです.

パスワードとデフォルトの設定
デフォルトでは、はユーザを認証するためにユーザのパスワードを尋ねます. 一旦パスワードが入力されると、はパスワードを5分間記憶し、ユーザに仕事に集中させ、繰り返しパスワードを入力させないようにします.

勿論、この振る舞いは変更することができます：あるユーザに対するデフォルトの振る舞いを変更するには、の 指示文を設定してください.

例えば、デフォルトの5分から0分（記憶させない）に変更する場合：

をセットすることで、パスワードは（システムが再起動されるまで）永遠に記憶されます.

別の設定として、を実行するユーザ個人のパスワードではなく、実際のコマンドを実行するユーザのパスワードを求めるというものがあります. これは を使用することで設定できます. また、以下の例では再試行の回数（の失敗までにユーザがどのくらいの回数までパスワードを再入力できるか）を、デフォルトの3の代わりに に設定しています：

他の興味深い機能として、 変数に値をセットすることで、グラフィカルツールを起動できるというものがあります：

何十ものデフォルトの設定を、 命令を使用して変更することができます. のマニュアルページを開き、 を探してください.

ユーザに全くパスワードを求めずにあるコマンドのセットの実行を認める場合、コマンドを で始めてください、次のような感じです：

bash での補完
bashでsudoの補完を行いたいユーザは、このコマンドを一回だけ実行する必要があります.

Zshell での補完
sudo用のzshの補完を利用したいユーザは、以下の内容をとにそれぞれ追加することで利用できます：

以上の変更によって、、そしてにあるすべてのコマンドを、sudoと打った場合に補完として利用することができるようになります.

特権の列挙
ユーザが現在できることを一覧にして表示するには、を実行してください：

Any command in that does not require a password to be entered, a password will not be required to list the entries either. Otherwise sudo will ask for a password if it isn't remembered.

パスワードタイムアウトの延長
デフォルトでは、ユーザがに認証を行うためにパスワードを入力した際、パスワードは5分間記憶されます. もしユーザがこの時間を延長したい場合、を実行することでタイムスタンプをリセットし、が再度パスワードを尋ねるまで新たに5分間を得ることができます.

これと逆のことを行うコマンドはで、タイムスタンプを削除します.