Linux権限管理トークのユーザー切り替え


Linuxではファイルに細かい権限制御があり、多くの操作はファイルの所有者やrootのみが実行できるため、日常的な使用中にユーザー切り替えが必要です.Linuxの設計当初は、suコマンドがユーザの切り替えに使用されたが、suコマンドの粗粒度の制御方式のため、権限最小化の原則に合致せず、後に(実際には1980年代に)sudoコマンドが精密化された権限制御を提供するように設計された.suおよびsudoは、任意のユーザに切り替えることができるが、主にrootユーザに切り替えてシステム管理操作を実行するために使用される.現在、Ubuntuなどのリリース版はrootユーザーを直接キャンセルし、sudoを使用してシステムの管理機能を実現している.2組のコマンドの使い方とメリットとデメリットをそれぞれ説明します.
suコマンド
suコマンドはSwitch Userの略で、コマンド実行環境を他のユーザーに切り替える機能です.rootから他のユーザーに切り替えるときにパスワードを免除します.他のユーザ間切り替えや一般ユーザがrootに切り替える場合は、ターゲットユーザパスワードを入力する必要があります.
コマンド形式:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 

パラメータの説明:
  • -f,--fast:csh.cshrcなどの起動ファイルを読む必要はなく、cshまたはtcshの2種類のShell
  • にのみ使用されます.
  • -,-l,--login:ログインshellを使用します.このパラメータを使用すると、システム環境変数とホームディレクトリがターゲットユーザーに設定され、ターゲットユーザーが指定されていない場合はroot
  • がデフォルトです.
  • -m,-p,--preserve-environment:su実行時に環境変数を変更しない
  • -c--command=COMMAND:アカウントを変更した後、COMMAND命令を実行し、元のユーザー
  • に戻る
  • -s,--shell=SHELL:指定shell
  • を起動
  • --help:ヘルプ情報を表示
  • --version:バージョン情報
  • を表示
  • USER:切り替えるターゲットユーザー
  • ARG:新しいShellに入力されたパラメータ
  • suとsu-の違いsu:ユーザーのみを切り替え、ユーザーの環境変数とホームディレクトリsu -を切り替えない:ディレクトリを切り替え、ターゲットユーザーの環境変数とホームディレクトリに同時に切り替え、rootに切り替える場合、-パラメータを加えることをお勧めします.そうしないと、コマンドが実行できない場合があります.
    suコマンドの欠点
  • ユーザ切替時にターゲットユーザパスワードを入力、rootユーザ切替時にrootのパスワードを入力する必要があり、ユーザパスワード漏洩
  • を招く.
  • がrootに切り替わった後、自動的に退出することはなく、ユーザーはrootユーザー環境下でずっと操作し、権限最小化の原則
  • に合致しない.
  • マルチユーザシステムにおいて、複数のユーザが同時にsuからrootに操作を実行する場合、ログにどのユーザの操作であるかを区別することができず、作業は
  • を監査および遡及することができない.
  • 権限制御の粒度が太すぎて、ユーザーはAll or nothingしかできず、精細化制御ができず、複数の管理者の分業、協同作業を実現できない
  • sudoコマンドsudoは、コマンドを他のユーザコンテキストに切り替えて実行するためにも使用され、一般にroot特権ユーザに切り替える.su命令の簡単な乱暴さとは異なり、sudoは精密化された権限制御を提供し、同時に各技術は両刃の剣であり、複雑な技術も多くの潜在的な安全問題をもたらし、使用時に注意して配置する必要がある.sudoコマンドには主に以下の特徴があります.
  • プロファイルによる集中、細粒度(ユーザレベル、コマンドレベル、ホストレベル)の授権制御
  • .
  • ユーザを切り替えるときに入力は現在のユーザパスワードであり、ターゲットユーザパスワード
  • は漏洩しない.
  • sudoはセッション機能を提供し、sudoセッションの有効期間内に、ユーザーは再びsudoコマンドを実行してパスワードを免除する.期限が切れたらパスワード
  • を再入力する必要があります.
  • 各sudoコマンドの実行後、実行環境は直接現在のユーザに戻り、sudo接頭辞を使用するコマンドだけが特権ユーザの下で実行され、権限最小化の原則
  • に合致する.
  • sudoは詳細なログ機能を提供し、各ユーザがsudoを使用してどのような操作を実行したかを記録することができる.
    sudoコマンド
    sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command

    詳細なコマンドの使用方法については、コマンドヘルプを参照してください.一般的なパラメータについては、次のように説明します.
  • -V表示バージョン情報
  • -hバージョン情報及び命令の表示方法
  • -l現在のユーザsudo権限コマンドリスト
  • を表示する.
  • -vパスワード有効期限延長5分
  • -k sudoセッションをクリアし、次のsudoはパスワード
  • を入力する必要があります.
  • -bバックグラウンドにコマンドを置く
  • を実行する.
  • -p prompt変更入力パスワードプロンプト
  • -u username/#uidはsudoが実行するユーザーを指定し、指定しない場合はroot
  • がデフォルトです.
  • -s指定使用shell
  • -H HOME環境変数をsudoユーザのHOME環境変数
  • とする.
  • command実行するコマンド
  • sudoの構成
    任意のユーザーがsudoコマンドを使用して任意のコマンドを実行できるわけではありません.任意のユーザーがsudoコマンドを使用するには、sudoプロファイル(またはそのincludeのファイル)で構成する必要があります.
    sudoのメインプロファイルは/etc/sudoersで、このファイルは主にどのユーザーがどのホスト上でどのような身分でどのコマンドを実行できるかを構成しています.このファイルはviで直接編集できますが、公式にはvisudoを使ってこのファイルを編集することをお勧めします.visudoはユーザーをロックし、マルチユーザーが同時に編集することを防止し、ファイル保存時に文法チェックを実行します.構文エラーのあるファイルは保存できず、エラーをプロンプトします.sudoersプロファイルは複数のセグメントに分かれており、各セグメントは異なる構成を担当しています.ここでは、主にユーザー特権構成セグメントを使用してユーザー権限を構成する方法について説明します.その他の構成は、この説明/etc/sudoers構成の詳細を参照してください.ユーザー権限の基本フォーマットは次のとおりです.
    user host=(run_as) [NOPASSWD:] cmd_list

    各フィールドの意味の説明は次のとおりです.
  • user:sudo権限を構成するユーザー(どのユーザー)
  • host:この構成は、どのホストで有効か(どのホスト)
  • です.
  • run_as:このユーザは、どのユーザがコマンドを実行するか、複数のユーザがカンマで区切られるか(どのアイデンティティ)
  • に切り替えることができます.
  • cmd_List:ユーザーが実行可能なコマンドのリスト.複数のコマンドがカンマで区切られている(実行するコマンド)
  • NOPASWD:オプションパラメータ、sudo時パスワード入力なし
  • userフィールドは、ワイルドカードを設定できます.%はユーザーグループを表します.%group 1などの逆を表し、すべてのgroup 1グループのユーザーを表します.user 1は、user 1以外のすべてのユーザを表す.
    パラメータに制限がない場合はALLを書きます.
    システムのデフォルト設定は次のとおりです.
    root ALL=(ALL) ALL

    rootユーザーは、すべてのホスト上で、任意のユーザーで任意のコマンドを実行できます.
    次のコマンドは、apacheを実行してパスワードなしでtomcatの起動と停止をsudoで実行し、sudoによる他のコマンドの実行を禁止することを示します.
    apache ALL=(ALL) NOPASSWD: /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh

    sudo安全
    sudoコマンドは一般的にシステム管理操作に用いられるため、コマンドの実行権限が高く、不適切な使用の場合、権限付与の脆弱性が発生し、使用時には一定のセキュリティルールに従う必要があります.
  • すべてのsudoが実行するスクリプト、このスクリプトとこのスクリプトが参照する他のスクリプトとプロファイルは、このスクリプトを実行する最高権限のユーザーのみが書く権限を持つように設定され、ファイルが他の低権限のユーザーに改ざんされた後、sudoが実行されて権限が与えられることを防止します.たとえば、スクリプトsudoがrootユーザーで実行されると、関連するすべてのスクリプトとプロファイルにはrootのみが変更権限があります.
  • sudoが使用するスクリプトの除外では、/etc/sudoersファイルに加えて、includeおよびinclude_dirで参照されている他のすべてのファイルを確認します.
  • sudoが実行可能なコマンドを構成する場合、環境変数を変更することによって他の同名コマンドを実行する脆弱性を防止するために、すべてのコマンドを絶対パスに構成します.
  • ユーザーにsudo権限を割り当てる場合は、ALLパラメータをできるだけ少なく使用し、具体的な構成値を使用します.
  • sudoがrootに着いた場合、必要でない場合はNOPASWDパラメータの使用を禁止します.