Linux権限とsudo

6034 ワード

Linuxのrwx権限


Linuxのファイル権限表示は、実は簡単です.いずれのファイルについても、ls -l filenameを使用してtaの権限シーケンスを表示できます.例:
-rwxr-xr-x 1 wgjak 47 wgjak 47 221287 11月16 2010 aliedit.sh
パーミッション・シーケンスの1番目は、ファイル・タイプです.
  • [d]の場合はディレクトリ
  • である.
  • [-]の場合はファイル
  • [l]であれば連結枠(link file)と表す.
  • [b]であれば、デバイスファイル内の格納可能なインタフェースデバイス(ランダムアクセス可能デバイス)として表される.(例えば/dev/sda)
  • [c]であれば、キーボード、マウス(一括読取装置)などのデバイスファイル内のシリアルポートデバイスとして表される.一般的な/dev
  • 前の例のファイルは-で、通常のファイルを表します.
    次に、3組のrwx、rは読み取り可能、wは書き込み可能、xは実行可能、-は権限がないことを示す.
  • 第1グループrwxはファイル所有者の権限
  • を表す.
  • 第2のグループrwxは、ファイル所有者が存在するグループ内の他の人の権限
  • を表す.
  • 第3のグループrwxは、他の人の権限を表す.

  • 例えば、ファイル属性が754である場合、すなわち(rwxr−xr−).
  • もしあなたがこのファイルの所有者であれば、あなたはこのファイルの読み書きに対して
  • を実行することができます.
  • このファイルの所有者ではありませんが、このファイルの所有者とグループ化されている場合は、このファイル
  • を読み取り、実行できます.
  • ファイル所有者のグループでなければ、このファイル
  • しか読めません.
    chmodを使用してファイルの権限を変更できます.基本的な使い方は以下の通りです.
    <!-- lang: shell -->
    chmod XXXX filename
    

    ここで、Xは8進数であり、1位は一般的に省略される.なぜなら、2進数に変換するとrwxにちょうど対応し、例えば7(111)はrwxを表し、5(101)はr-xを表すからである.ディレクトリの場合、-Rオプションを使用してサブディレクトリとサブファイルのプロパティを再帰的に変更できます.また、XXXXはオペレータ+シンボルを使用してフォーマットを変更することもできます.
  • オペレータ'+'は、ユーザが選択する権限を各指定ファイルに追加する(指定ファイルに選択した権限を追加する)
  • .
  • オペレータ'-'は、これらの権限を取り消す.'='指定したファイルにこれらの権限しか持たないようにします.

  • 文字列'rwxXstugo':ユーザーに新しい属性を選択
  • (r)読取り権限
  • (w)書き込み権限
  • (x)実行権(またはディレクトリへのアクセス権)
  • (X)x属性
  • は、ターゲットファイルが特定のユーザに対して実行可能であるか、またはそのターゲットファイルがディレクトリである場合にのみ追加される.
  • (s)ユーザまたはグループID
  • を同時に設定.
  • (t)ヒステリシスビット(プログラムのテキストを交換装置に保存する)
  • (u)ターゲットファイル属主
  • (g)ターゲットファイルが所有するグループ
  • (o)その他のユーザ
  • したがって,'chmod g-s file'はsgidビットを取り消し,'chmod ug+s file'はsuidとsgidビットを同時に設定し,'chmod o+s file'は何も設定しなかった

    Linuxの特殊な権限


    chmodのman Pageから,rwxの3つの基本権限のほかにs,tの2つの権限があることが分かった.展開は、setuid、setgid、stick bit(貼り付けビット)
  • setuid、setgidは簡単に言えば名前のようにset uid、set gidです.通常のユーザーがこの再属性のファイルを使用するとroot/rootグループの権限で実行されます.

  • 例:/etc/passwdファイルで、ユーザーパスワードを格納するファイルです.
    -rw-r–r–1 root root 2090 12月23 20:29/etc/passwd
    これはユーザーパスワードを格納するファイルであることは知っていますが、権限はrootで読み書きでき、他のユーザーは読み取り専用です.このファイルを読み書きするpasswdのプロパティは次のとおりです.
    -rwsr-xr-x 1 root root 47032 2月17 2014/usr/bin/passwd
    3番目のアルファベットsはsetuidを表し、権利の実行を表し、つまり普通のユーザーがpasswdを実行するときにrootとしてpasswdを実行します.tty 1で普通のユーザーでpasswdを起動し、tty 2でps -aux | grep passwdを実行すると、次の結果が得られます.
    root 20174 0.0 0.0 64680 1584 pts/23 S+ 23:37 0:00 passwd
    実行者はrootです.setpidという権限は,一般にパスワード修正のような敏感さに対応するために要求される権限が高いが,多くの一般ユーザが実行しなければならない操作に対応するために誕生した.
    setgidは同じ理屈で、ユーザーグループになったにすぎない.
  • stick bit Linuxでは、フォルダの権限の役割は以下の通りです:
  • r(read):フォルダのコンテンツリストを読み込むことができますが、x権限がない場合はファイル名のみが表示され、他のコンテンツ(サイズ、権限など)は表示できません
  • .
  • w(write):フォルダにはコンテンツのリストが記録されているため、x権限を持ってこのディレクトリに入ることができることを前提に、w権限を持ってこのリストを変更することができます.w具体的には、新しいファイルまたはフォルダの作成、既存のファイルまたはフォルダの削除(ファイルまたはフォルダの権限を無視)、既存のファイルまたはフォルダの名前変更、ディレクトリ内のファイルまたはフォルダの場所の変更
  • の権限があります.
  • x(execute):フォルダにアクセスでき、x権限がないとディレクトリの下のコマンド
  • を実行できません.
    stick bit(t)属性は一時的にディレクトリにのみ使用され、主に/tmpディレクトリであり、tmpはrootに属し、属性はdrwxrwxrwtであるが、誰もがファイルを書くことができる.ただし、各ユーザは他のユーザのファイルを削除できません(rootを除く).簡単に言えば、ユーザーがこの属性を持つディレクトリの下でファイルまたはディレクトリを作成すると、自分とrootだけが削除する権利があります.

    setuidとsudo


    Linuxではrootユーザの権利が大きすぎるため,誤操作による取り返しのつかない損失がしばしば発生する.root権限を制限するために,通常のユーザに必要なときだけroot権限を取得していくつかの操作を実行させ,通常のユーザ権限で動作させることを提案する.そこでsudoツールが誕生しました.sudoの簡単な説明:
    sudoが1980年前後に書かれる前に,一般ユーザ管理システムはsuを利用してスーパーユーザに切り替える方式であった.しかしsuを使用する欠点の1つは,スーパーユーザのパスワードを先に通知しなければならないことである.sudoは,一般ユーザがスーパーユーザのパスワードを知る必要がなく,権限を得ることができる.まず、スーパーユーザーは、一般ユーザーの名前、実行可能な特定のコマンド、どのユーザーまたはユーザーグループのアイデンティティに従って実行するかなどの情報を、特殊なファイル(通常は/etc/sudoers)に登録し、そのユーザーに対する権限を完了する(この場合、そのユーザーを「sudoer」と呼ぶ).一般ユーザが特殊な権限を取得する必要がある場合、コマンドの前に「sudo」を付けると、sudoはそのユーザ自身のパスワード(端末機の前にあるユーザ本人を確認する)を尋ね、回答するとシステムはそのコマンドのプロセスをスーパーユーザの権限で実行する.その後の期間(デフォルトは5分、/etc/sudoersでカスタマイズ可能)では、sudoを使用してパスワードを再入力する必要はありません.スーパーユーザーのパスワードが不要であるため、一部のUnixシステムでは、Ubuntu、Mac OS Xなどの管理アカウントとしてスーパーユーザーに代わって一般ユーザーをsudoを利用することもある.
    sudoの原理はsetuid属性を利用することです.
    -rwsr-xr-x 1 root root 155008 2月11 2014/usr/bin/sudo
    sudoのワークフローは大体以下の通りです.
  • sudo実行時、システムは/var/run/sudo/%HOME%/の下にユーザーのタイムスタンプファイルがあるかどうかを読み取り、存在してファイルが期限切れになると、システムはユーザーに自分のパスワード
  • を入力するように促す.
  • の検証に成功すると、システムは/etc/sudoersの関連構成を検索し続け、ユーザーのsudoの具体的な権限
  • を判断する.
  • 権限が存在する場合、現在のユーザから他のユーザまたはrootユーザに自動的に切り替える、権限操作
  • が実行される.
  • 実行が完了したら、現在のユーザに戻ります.

  • sudoの構成と使用:


    sudoのプロファイルの編集方法はcrontabと似ていますが、sudoersは直接編集するのではなく、visudoで編集します.Visudoはcrontab-eと同様に、コピー(/etc/sudoer.tmp)をコピーし、コピーを保存してから/etc/sudoerを更新します.
    sudoersの構文:
  • 権限構成:デフォルトの構成は次のとおりです:
  • root ALL=(ALL) ALL
    1つ目はユーザー名で、sudoを使用できるユーザーを示します.2つ目はログイン者のホスト名で,許容可能なリモートログインのホスト名を示す.ALLは、rootが任意のホストからrootとしてネイティブにログインし、sudoを使用できることを示します.3つ目はsudoによって切り替えられるアイデンティティを示し、ALLはsudoによって任意のアイデンティティを切り替えてコマンドを実行できることを示す.4つ目は実行可能なコマンドを表し、ALLはすべてのコマンドを表し、特にコマンドを宣言する場合は絶対パスを使用する必要があり、パラメータとワイルドカードもサポートされています.異なるコマンドは','分割を使用します.鳥の兄の本の例:
    myuser1 ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root # ! 実行できないことを示す(ブラックリスト)
    sudoを使用できるユーザーを追加する場合は、別の行を実行します.例えばwgjak 47 ALL=(ALL)ALL
  • 高度な構成1、グループ機能は、管理を容易にするために、sudoはユーザーグループの許可に基づいてサポートします.例:
  • %sudo ALL=(ALL) ALL
    このような構成の化は、sudoユーザグループ内のユーザがsudoを使用できる限り可能である.
    二、パスワードなし操作sudoのデフォルトはパスワードが必要で、インタラクティブな入力しかサポートされていません.もちろんexpectや有名なパイプでこのプロセスをシミュレートすることができます.しかし、パスワードの明文をスクリプトに書くのは安全ではありません(ソニーはこのように死んでいます)、すべての操作ではなく、いくつかの操作に対してパスワードを免除することを望んでいます.sudoerはNOPASWDキーワードをサポートしています.たとえば、サービス操作を実行するときにパスワードを設定します.
    username ALL=(ALL) NOPASSWD:/sbin/service
    これにより、足どりの中でsudoでサービスを実行するにはパスワードは必要ありません.
    三、ホスト、ユーザー、コマンド管理(alias)管理を便利にするために、ユーザー、ホスト名、コマンドを別名にパッケージ化することができ、管理を便利にする:鳥兄の例を変更する
    User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2 Cmnd_Alias ADMPWCOM = !/usr/bin/passwd,/usr/bin/passwd [A-Za-z], !/usr/bin/passwd root Host_Alias THO = .threebody.com ADMPW THO=(root) ADMPWCOM
    Linuxは大文字と小文字を厳格に区別しているので、冒頭のアルファベットの大文字に注意してください.