これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドksuです。
プログラム:
NAME
ksu-Kerberizedスーパーユーザー
SYNOPSIS
クス [ ターゲット ユーザー ] [ -n ターゲットプリンシパル名 ] [ -c ソースキャッシュ名 ] [ -k ] [ -D ] [
-r 時間 ] [ -pf ] [ -l 一生 ] [ -z | Z ] [ -q ] [ -e command [args ...]] [ -a [
args...]]]
募集要項
ksuをコンパイルするには、Kerberosバージョン5がインストールされている必要があります。 Kerberosバージョン5が必要です
ksuを使用するために実行されているサーバー。
DESCRIPTION
ksuは、suプログラムのKerberizedバージョンであり、XNUMXつのミッションがあります。XNUMXつは安全に行うことです。
実際の有効なユーザーIDをターゲットユーザーのIDに変更し、もうXNUMXつは
新しいセキュリティコンテキストを作成します。
注:
わかりやすくするために、を呼び出すユーザーのすべての参照と属性
プログラムは「ソース」で始まります(たとえば、「ソースユーザー」、「ソースキャッシュ」など)。
同様に、ターゲットアカウントへのすべての参照と属性は、
"目標"。
認証
最初のミッションを遂行するために、ksuは認証とXNUMXつのフェーズで動作します
承認。 ターゲットプリンシパル名の解決は、認証の最初のステップです。
ユーザーは、プリンシパル名を -n オプション(例: -n
[メール保護])またはデフォルトのプリンシパル名は、記述されたヒューリスティックを使用して割り当てられます
オプションセクション(を参照) -n オプション)。 ターゲットユーザー名は最初の引数である必要があります
ksuへ; 指定しない場合、rootがデフォルトです。 もしも . が指定されると、ターゲットユーザーは
ソースユーザーになります(例: クス .)。 ソースユーザーがrootであるか、ターゲットユーザーが
ソースユーザーの場合、認証または承認は行われません。 それ以外の場合、ksuは
ソースキャッシュ内の適切なKerberosチケット。
チケットは、エンドサーバー用またはチケット付与チケット(TGT)のいずれかです。
ターゲットプリンシパルのレルム。 エンドサーバーのチケットがすでにキャッシュにある場合は、
復号化および検証されました。 キャッシュにないがTGTがキャッシュにある場合、TGTは次の目的で使用されます。
エンドサーバーのチケットを取得します。 次に、エンドサーバーチケットが検証されます。 どちらでもない場合
チケットはキャッシュにありますが、ksuは GET_TGT_VIA_PASSWD 定義、ユーザー
Kerberosパスワードの入力を求められます。このパスワードは、TGTを取得するために使用されます。 の場合
ユーザーがリモートでログインしていて、セキュリティで保護されたチャネルを持っていない場合、パスワードは次のようになります。
露出。 どちらのチケットもキャッシュにない場合 GET_TGT_VIA_PASSWD 定義されていません、
認証は失敗します。
認可
このセクションでは、ksuが呼び出されない場合のソースユーザーの承認について説明します。 -e
オプション。 の説明については -e オプションについては、「オプション」セクションを参照してください。
認証が成功すると、ksuはターゲットプリンシパルが次のことを許可されているかどうかを確認します
ターゲットアカウントにアクセスします。 ターゲットユーザーのホームディレクトリで、ksuはアクセスを試みます
XNUMXつの認証ファイル: .k5ログイン(5) および.k5users。 .k5loginファイルの各行
アカウントへのアクセスを許可されているプリンシパルの名前が含まれています。
例:
[メール保護]
jqpublic /[メール保護]
jqpublic /[メール保護]
.k5usersの形式は同じですが、プリンシパル名の後に次のリストが続く場合があります。
プリンシパルが実行を許可されているコマンド( -e オプションのオプション
詳細については、セクションを参照してください)。
したがって、ターゲットプリンシパル名が.k5loginファイルで見つかった場合、ソースユーザーは
ターゲットアカウントへのアクセスを許可されています。 それ以外の場合、ksuは.k5usersファイルを検索します。 もしも
ターゲットプリンシパル名は、末尾のコマンドなしで検出されるか、その後にのみ続きます *
次に、ソースユーザーが承認されます。 .k5loginまたは.k5usersのいずれかが存在するが、
ターゲットプリンシパルの適切なエントリが存在しない場合、アクセスは拒否されます。 もしも
どちらのファイルも存在しない場合、プリンシパルは次のようにアカウントへのアクセスを許可されます
aname->lnameマッピングルール。 そうしないと、認証は失敗します。
実行 OF 、 TARGET SHELL
認証と承認が成功すると、ksuはsuと同様の方法で続行します。
USER、HOME、およびSHELL変数を除いて、環境は変更されていません。 もしも
ターゲットユーザーがrootでない場合、USERはターゲットユーザー名に設定されます。 それ以外の場合、ユーザー
変更されません。 HOMEとSHELLはどちらも、ターゲットログインのデフォルト値に設定されています。 の
さらに、環境変数 KRB5CCNAME ターゲットキャッシュの名前に設定されます。
実際の有効なユーザーIDは、ターゲットユーザーのIDに変更されます。 ターゲットユーザーの
次に、シェルが呼び出されます(シェル名はパスワードファイルで指定されます)。 その上
シェルが終了すると、ksuはターゲットキャッシュを削除します(ksuが -k
オプション)。 これは、単にフォークするのではなく、最初にフォークを実行し、次にexecを実行することによって実装されます
suによって行われるようにexec。
作成 A NEW SECURITY コンテキスト
ksuを使用して、ターゲットプログラム(いずれかのターゲット)の新しいセキュリティコンテキストを作成できます。
シェル、またはを介して指定されたコマンド -e オプション)。 ターゲットプログラムは、一連の
ソースユーザーからの資格情報。 デフォルトでは、このセットには次のすべてのクレデンシャルが含まれています
ソースキャッシュに加えて、認証中に取得された追加のクレデンシャル。 The
ソースユーザーは、を使用してこのセットのクレデンシャルを制限できます -z or -Z オプションを選択します。 -z
ソースキャッシュからターゲットキャッシュへのチケットのコピーを、
client==ターゲットプリンシパル名であるチケット。 The -Z オプションはターゲットユーザーを提供します
新しいターゲットキャッシュを使用します(キャッシュにクレジットはありません)。 セキュリティ上の理由から、
ソースユーザーはrootで、ターゲットユーザーは非rootです。 -z オプションはのデフォルトモードです
操作。
ソースユーザーがrootであるか、またはと同じである場合、認証は行われません。
ターゲットユーザーの場合でも、ターゲットキャッシュに対して追加のチケットを取得できます。 もしも -n is
指定され、資格情報をターゲットキャッシュにコピーできません。ソースユーザーは
Kerberosパスワードの入力を求められた場合( -Z 指定または GET_TGT_VIA_PASSWD 未定義です)。
成功すると、TGTがKerberosサーバーから取得され、ターゲットキャッシュに保存されます。
それ以外の場合、パスワードが指定されていない場合(ユーザーがリターンを押す)、ksuは通常モードで続行します
操作の(ターゲットキャッシュには目的のTGTが含まれません)。 パスワードが間違っている場合
入力すると、ksuは失敗します。
注:
認証中は、提供せずに取得できたチケットのみ
パスワードはソースキャッシュにキャッシュされます。
OPTIONS
-n ターゲットプリンシパル名
Kerberosターゲットプリンシパル名を指定します。 認証と承認に使用されます
ksuのフェーズ。
ksuがなしで呼び出された場合 -n、デフォルトのプリンシパル名は、
次のヒューリスティック:
・ケース1:ソースユーザーが非ルートです。
ターゲットユーザーがソースユーザーの場合、デフォルトのプリンシパル名は
ソースキャッシュのデフォルトプリンシパル。 キャッシュが存在しない場合は、
デフォルトのプリンシパル名はに設定されています target_user @ local_realm。 ソースと
ターゲットユーザーは異なり、どちらも 〜target_user / .k5users また
〜target_user / .k5login 存在する場合、デフォルトのプリンシパル名は
target_user_login_name @ local_realm。 それ以外の場合は、最初のプリンシパルから開始します
以下にリストされているように、ksuはプリンシパルがターゲットへのアクセスを許可されているかどうかをチェックします
アカウントと、ソースにそのプリンシパルの正当なチケットがあるかどうか
キャッシュ。 両方の条件が満たされた場合、そのプリンシパルがデフォルトのターゲットになります
プリンシパル、それ以外の場合は次のプリンシパルに移動します。
a。 ソースキャッシュのデフォルトプリンシパル
b。 target_user @ local_realm
c。 source_user @ local_realm
acが失敗した場合は、ソースキャッシュにチケットがあるプリンシパルを試してください
そしてそれはターゲットアカウントにアクセスすることを許可されています。 それが失敗した場合は、
上記からターゲットアカウントへのアクセスを許可された最初のプリンシパル
リスト。 何も許可されておらず、ksuが次のように構成されている場合 PRINC_LOOK_AHEAD 回しました
オンの場合、次のようにデフォルトのプリンシパルを選択します。
上記のリストの候補者ごとに、
同じレルム名とプリンシパル名の最初の部分が
候補者。 たとえば、候補者a)が [メール保護] と
jqpublic /[メール保護] ターゲットアカウントへのアクセスが許可された後、
デフォルトのプリンシパルはに設定されています jqpublic /[メール保護].
・ケース2:ソースユーザーはrootです。
ターゲットユーザーがroot以外の場合、デフォルトのプリンシパル名は
target_user @ local_realm。 それ以外の場合、ソースキャッシュがデフォルトのプリンシパルとして存在する場合
nameは、ソースキャッシュのデフォルトのプリンシパルに設定されます。 ソースキャッシュの場合
存在しない場合、デフォルトのプリンシパル名はに設定されます root \ @local_realm.
-c ソースキャッシュ名
ソースキャッシュ名を指定します(例: -c ファイル:/ tmp / my_cache) もし -c オプションは使用されません
名前はから取得されます KRB5CCNAME 環境変数。 もしも KRB5CCNAME ではありません
ソースキャッシュ名がに設定されていると定義されています krb5cc_ uid>。 ターゲットキャッシュ名は
自動的にに設定 krb5cc_ uid>。(gen_sym())、ここでgen_symは新しいを生成します
結果のキャッシュがまだ存在しないような番号。 例えば:
krb5cc_1984.2
-k ターゲットシェルまたはコマンドの終了時にターゲットキャッシュを削除しないでください
(-e 指図)。 それなし -k、ksuはターゲットキャッシュを削除します。
-D デバッグモードをオンにします。
-z ソースキャッシュからターゲットキャッシュへのチケットのコピーを、
client==ターゲットプリンシパル名であるチケット。 使用 -n 必要に応じてオプション
それ以外のデフォルトのプリンシパルのチケット。 に注意してください -z オプションがある
と相互に排他的 -Z オプションを選択します。
-Z ソースキャッシュからターゲットキャッシュにチケットをコピーしないでください。 作成するだけです
新しいターゲットキャッシュ。キャッシュのデフォルトのプリンシパル名は次のように初期化されます。
ターゲットプリンシパル名。 に注意してください -Z オプションは相互に排他的です
-z オプションを選択します。
-q ステータスメッセージの印刷を抑制します。
チケット付与チケットオプション:
-l 一生 -r 時間 -pf
チケット付与チケットオプションは、ない場合にのみ適用されます
ソースユーザーを認証するためのキャッシュ内の適切なチケット。 この場合、
ksuは、ユーザーにKerberosパスワードの入力を求めるように構成されています(GET_TGT_VIA_PASSWD is
定義済み)、指定されたチケット付与チケットオプションは、次の場合に使用されます。
Kerberosサーバーからチケット許可チケットを取得します。
-l 一生
(デュレーション 文字列。)チケットに要求される有効期間を指定します。 これなら
オプションが指定されていない場合、代わりにデフォルトのチケット有効期間(12時間)が使用されます。
-r 時間
(デュレーション 文字列。) 再生可能な オプションを要求する必要があります
チケット、およびチケットの望ましい合計存続期間を指定します。
-p は、 プロキシ可能 チケットのオプションをリクエストする必要があります。
-f オプションは、 転送可能 チケットのオプションをリクエストする必要があります。
-e command [引数 ...]
ksuは、それがなくても呼び出された場合とまったく同じように進行します。 -e オプション、ただし
ksuは、ターゲットシェルを実行する代わりに、指定されたコマンドを実行します。 例
使用法:
ksu bob -e ls -lag
の認証アルゴリズム -e 次のとおりです。
ソースユーザーがrootまたはソースユーザー==ターゲットユーザーの場合、認証は必要ありません
配置するとコマンドが実行されます。 ソースユーザーID!= 0の場合、および
〜target_user / .k5users ファイルが存在しないため、認証に失敗します。 さもないと、
〜target_user / .k5users ファイルには、ターゲットプリンシパルの適切なエントリが必要です。
承認されます。
.k5usersファイル形式:
コマンドのリストが後に続く可能性のある各行の単一の主要なエントリ
プリンシパルが実行を許可されていること。 プリンシパル名の後に *
これは、ユーザーが任意のコマンドを実行することを許可されていることを意味します。 したがって、以下では
例:
[メール保護] ls mail / local / kerberos / klist
jqpublic /[メール保護] *
jqpublic /[メール保護]
[メール保護] 実行のみが許可されています ls, 電子メール と クリスト コマンド。
jqpublic /[メール保護] 任意のコマンドを実行する権限があります。
jqpublic /[メール保護] コマンドの実行は許可されていません。 ご了承ください
jqpublic /[メール保護] ターゲットシェルを実行する権限があります(通常のksu、
なしで -e オプション)しかし [メール保護] そうではありません。
プリンシパル名の後にリストされているコマンドは、フルパス名または
プログラム名だけです。 XNUMX番目のケースでは、 CMD_PATH の場所を指定する
許可されたプログラムは、ksuのコンパイル時に定義する必要があります。 どのコマンド
実行されますか?
ソースユーザーがrootであるか、ターゲットユーザーがソースユーザーであるか、ユーザーが
任意のコマンドを実行する権限があります(* エントリ)thenコマンドは、フルまたは
ターゲットプログラムにつながる相対パス。 それ以外の場合、ユーザーは指定する必要があります
フルパスまたはプログラム名のみ。
-a 引数
ターゲットシェルに渡される引数を指定します。 すべてのフラグと
-aに続くパラメータはシェルに渡されるため、
ksuは先行する必要があります -a.
この -a オプションを使用して、 -e 次のように使用する場合のオプション:
-a-c[コマンド[引数]]。
-c コマンドを実行するためにc-shellによって解釈されます。
インストール インストラクション
ksuは、次のXNUMXつのフラグを使用してコンパイルできます。
GET_TGT_VIA_PASSWD
ソースキャッシュに適切なチケットが見つからない場合、ユーザーは次のようになります。
Kerberosパスワードの入力を求められました。 その後、パスワードを使用してチケットを取得します
Kerberosサーバーからのチケットの付与。 これでksuを設定することの危険性
マクロは、ソースユーザーがリモートでログインしていて、安全なユーザーがいない場合です。
チャネルでは、パスワードが公開される可能性があります。
PRINC_LOOK_AHEAD
デフォルトのプリンシパル名の解決中に、 PRINC_LOOK_AHEAD ksuを有効にします
オプションのセクションで説明されているように、.k5usersファイルでプリンシパル名を検索する
(参照してください -n オプション)。
CMD_PATH
ユーザーが許可されているプログラムを含むディレクトリーのリストを指定します
実行します(.k5usersファイルを介して)。
HAVE_GETUSERSHELL
ソースユーザーがroot以外の場合、ksuはターゲットユーザーのシェルがrootであると主張します
呼び出されるのは「リーガルシェル」です。 ユーザーシェルの取得(3) の名前を取得するために呼び出されます
「合法的なシェル」。 ターゲットユーザーのシェルはpasswdから取得されることに注意してください
ファイルにソフトウェアを指定する必要があります。
構成例:
KSU_OPTS = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH ='"/ binに / usr / ucb / local / bin "
ksuはrootが所有し、setuseridビットがオンになっている必要があります。
ksuは、Kerberized telnetおよびrloginと同様に、エンドサーバーのチケットを取得しようとします。
したがって、Kerberosデータベースにサーバーのエントリが必要です(例:
亭主/[メール保護])。 キータブファイルは適切な場所にある必要があります。
側 影響
ksuは、期限切れのチケットをすべてソースキャッシュから削除します。
著者 OF KSU
GENNADY(ARI)MEDVINSKY
onworks.netサービスを使用してオンラインでksuを使用する