chmod:ファイルモードビット変更

chmod:ファイルモードビット変更

私はずっと前にUnixで次のことを学びましたchmod。 Unixで権限を設定する従来の方法(そしてプログラムが権限を取得できるようにする方法はsetuidとsetgidを使用することです)。

私は最近GNU / Linuxでいくつかの新しいコマンドを見つけました:

  • setfacl既存のビットugo:rwx合計を拡張します。tchmod
  • setcapug:sよりきめ細かい権限制御を提供するよりも優れています  chmod
  • chattrファイルの追加制御を許可します(少しハイブリッド)。

他の人はいますか?

答え1

chmod:ファイルモードビット変更

使い方(8進モード):

    chmodオクタルモード ドキュメント...

使い方(シンボルモード):

    chmod [引用する][[オペレーター][モデル]]ドキュメント...

referencesugoaどのユーザーがアクセスできるかを指定する文字の組み合わせです。files修正されます:

  • uそれを所有しているユーザー
  • gファイルグループの他のユーザー
  • oファイルグループにない他のユーザー
  • aすべてのユーザー

省略すると、デフォルトはすべてのユーザーに設定されますが、許可された権限のみを変更しますumask

operator次のキャラクターの一つです+-=

  • +指定されたファイルモードビットを各ファイルの既存のファイルモードビットに追加します。file
  • -各ファイルの既存のファイルモードビットから指定されたファイルモードビットを削除します。file
  • =明示的に指定しない限り、ディレクトリに設定されたsetuid合計ビットを除いて指定されたビットを追加し、指定されていないビットを削除します。setgid

moderwxXst変更する権限ビットを指定する文字の組み合わせで構成されています。

  • r読む
  • w書く
  • x(小文字X)実行(またはディレクトリ検索)
  • X(大文字)ファイルがディレクトリの場合、または特定のユーザークラスに対して実行ビットが設定されている場合にのみ実行/トラバースします。
  • ssetuidまたはsetgid(指定された項目によって異なります)references)
  • t削除フラグまたは固定ビット制限

または、mode文字のいずれかで構成できます。ugoこの場合、パターンは現在の所有者(u)、ファイルグループのメンバー(g)、または上記のカテゴリ(o)のユーザーに付与されている権限に対応します。

各部分の説明chmod

  • アクセス制御(参照setfacl
    • rwx— 読み取り( r)、書き込み( w)、実行/トラバース( x)権限
      • read(r)は、ファイルを読み取ることができるのか、ディレクトリを一覧表示できるのかに影響します。
      • 書き込み(w)は、ファイルに書き込むことができるのか、ディレクトリを変更できるのか(ファイルの追加、削除、名前変更)に影響します。
      • Execute(x)は、スクリプトや他の実行可能ファイルに対してファイルを実行できるかどうかに影響します。
      • 「検索」とも呼ばれるTraversal(x)は、ディレクトリを参照できるかどうか、つまりプロセスがディレクトリのエントリを介してファイルシステムオブジェクトにアクセスできるか(またはアクセスしようとするか)に影響します。
    • sと — ディレクトリの t固定ビット( t)と setgid()s
      • 固定ビットはディレクトリにのみ影響します。ファイル所有者とルートを除くすべての人は、ディレクトリ内のファイルを削除することはできません。
      • ディレクトリのsetgidビットは、新しいファイルとディレクトリを同じグループにグループ化し、新しいディレクトリにsetgidビットが設定されるようにします(のデフォルト値を参照setfacl)。
    • s— 実行可能ファイルの setuid, setgid
      • 現在行っていることがわからない場合は、セキュリティに重大な影響を与える可能性があります。
      • 実行可能ファイルの実行時にこれらのビットのいずれかが設定されると、実行可能ファイルのユーザー/グループがプロセスの有効なユーザー/グループになります。これによりプログラムが実行されます。〜のようにそのユーザー。setcapこれを行うためのより現代的な方法を確認してください。

chown chgrp:


chattr: ファイル属性の変更

使用法:

    シャテルオペレーター[プロパティ]ドキュメント...

operator次のキャラクターの一つです+-=

  • +選択した属性を既存の属性に追加attributes~のfiles
  • -選択したものを消去するattributes
  • =ファイルの現在の属性セットを指定された値で上書きします。attributes

attributeacdeijmstuxACDFPST属性に対応する文字の組み合わせです。

  • a追加のみ
  • c圧縮
  • dダンプなし
  • e範囲形式
  • i不変
  • jデータログ
  • m圧縮しないでください
  • s安全削除
  • t尾マージなし
  • u削除できません。
  • xファイルに直接アクセス
  • Aatime更新なし
  • C文章を書くとコピーはありません。
  • Dディレクトリ更新の同期
  • F大文字と小文字を区別しないディレクトリの検索
  • Pプロジェクト階層
  • S同期の更新
  • Tディレクトリ階層の最上位

これらの属性の多くは使用が制限されています。たとえば、その多くはスーパーユーザー(ルートなど)または他の権限を持つプロセスによってのみ設定または消去できます。


setfattr:変化拡張ファイル属性

使い方(プロパティ設定):

    setfattr-n名前-V ドキュメント...

使い方(削除):

    setfatr-x名前 ドキュメント...

name設定または削除する拡張属性の名前。

value拡張属性の新しい値。


setfacl:ファイルアクセス制御リストの変更

使用法:

    設定値オプション[基本:][ターゲット:][パラメータ][:パーマ]ドキュメント...

option次のいずれかを含める必要があります。

  • --setファイルまたはディレクトリのACLを設定し、古いACLを置き換えます。
  • -m|--modifyファイルまたはディレクトリのACLの変更
  • -x|--remove ファイルまたはディレクトリのACLエントリの削除

target文字の1つですugmo(または以下のように長い形式)。

  • uusers指定されたユーザーの権限は、次によって決定されます。param 省略した場合、デフォルトはファイル所有者UIDです。
  • ggroup指定されたグループの権限は、次によって決定されます。param 省略した場合、デフォルトは自分が属するグループのGIDです。
  • mmask有効権限マスク
  • oother他人の権限

permsrwxX権限に対応する文字の組み合わせです。

  • r読む
  • w書く
  • x実装する
  • Xファイルがディレクトリである場合、またはすでに一部のユーザーに対する実行権限がある場合にのみ実行

または、perms権限セットを表す 8 進数 (-) です07


setcap:変化ファイル機能

使用法:

    セットキャップ容量規定 文書

capability-clauseカンマで区切られたリストで構成されます。能力名前の後には演算子フラグペアのリストが続きます。

使用可能な演算子は=+およびです-。使用可能なフラグはおよびでe、これは次のとおりです。ip効果的な継承可能そして許可する能力値設定。

オペレータは、=指定された機能セットを発展させ、他の機能セットをリセットします。演算子にフラグが設定されていない場合は、=すべての機能セットがリセットされます。+および演算子は、-それぞれ1つ以上の指定された機能セットを増減します。


chcon: ファイル変更SELinuxセキュリティコンテキスト

使用法:

    chcon[-uユーザー][-r役割][-tタイプ]ドキュメント...

userまたはなどのSELinuxユーザーである必要がありますuser_usystem_uroot

roleSELinuxの役割です(常にobject_rファイル用)。

typeSELinuxのトピックタイプですか?


chsmack:変化スマーカー拡張属性

SMACKは単純化された必須アクセス制御カーネルです。

使用法:

    chsmack -a 文書

valueSMACK64拡張ファイル属性にSMACKタグが設定されていますか?


セットリチャール:さまざまなアクセス制御リストの変更

リチャードこれはより高度なACLを追加する機能です。

現在進行中の作業なので、これについて詳しくお伝えできません。私はそれらを使用しませんでした。

この質問も参照してください既存の「rwx」およびPOSIX ACLに加えて、高度なファイルシステムACLはありますか? そしてマニュアルページ

答え2

高レベルで:

  • サポートされるデフォルトのファイルシステム権限オリンクス そして みんなUnixに優しいファイルシステム-rwxrwxrwxによって処理され、によって処理されたファイル  chmodシステムの各ファイルまたはフォルダに関連付けられている所有者およびグループ識別子は、基本的にすべてが知っているものです。chownchgrp
  • 拡張ファイル属性、略称またはとして知られているプロパティ。これは、ユーザーがファイルをファイルシステムから解釈されないメタデータに関連付けることを可能にするファイルシステム機能です。一方、一般属性はファイルシステムによって厳密に定義された目的を持ちます。属性は、ファイルとディレクトリに関連付けられている名前と値のペアです。プロセスに関連する環境文字列です。単にこのメタデータをさまざまなファイル/フォルダに設定することに関連するいくつかの特定のLinuxコマンドがあります。
  • セキュリティが強化されたLinux(通常は次のように知られています。SELinux)。バラより selinuxproject.orgそしてウィキペディア。また、AppArmorなどのSELinuxに代わるものがあることに注意してください。この時点で、MAC(Mandatory Access Control)を実行する機能とメカニズムを提供するカーネルモジュールは次のとおりです。 SELinux は xattr を使用して、ファイルセキュリティラベルを xattrs に保存します。。そして、特定のSELinux関連のコマンドがあります。

その他:

  • GNU/Linuxの時代とバージョンは、利用xattr 可能で機能的なSELinuxにとって重要です。

  • すべてのファイルシステムがサポートされているわけではありませんxattr。使用されているLinuxディストリビューションとバージョン(RHEL / SUSE / Debian、IRIX、Solaris、AIX、1960s Unix)に基づいて個別に調査するのが最善です。

  • 実際、一意の基本ファイル/フォルダ権限とUID / GIDとxattrsはすべてを可能にします。 SELinuxはxattrsを使用してファイル/フォルダのセキュリティラベルを保存します。 SELinuxでは、すべての下位レベルの操作がxattrsで実行/定義されます。あなたの使用。したがって、古代のファイルシステムがSELinuxをサポートしていない場合は、xattrSELinuxを使用しません。

  • SELinux(またはAppArmorまたは他のカーネルモジュール)を有効または無効にできます。

  • Linuxのバージョンによっては、特定のxattrマウントされたファイルシステムに対して有効または無効にすることができます。 SLES 11には、インストール時にルートファイルシステムで使用できないfstabマウントuser_xattr オプションがあったことが記憶されていますxattr。現在のRHEL / CentOS 7は次のとおりです。xattrデフォルトでは存在し、削除できません。

  • を実行しているときにls -lこれが表示された場合は、拡張ファイル属性がオブジェクトに存在することを示します-rwxrwxrwx++

  • アクセス制御リスト(ACL) は、オブジェクトに関連付けられた権限のリストです。 ACLは、オブジェクトへのアクセスが許可されているユーザーまたはシステムプロセスと、そのオブジェクトに対して許可されるアクションを指定します。

  • CentOS Wikiからに関する記事SELinux:

    SELinuxはカーネルに実装されたMACセキュリティメカニズムです。 ...SELinuxを使用しない場合は、ファイル権限やアクセス制御リスト(ACL)などの既存のランダムアクセス制御(DAC)方式のみを使用してユーザーのファイルアクセスを制御できます。ユーザーとプログラムの両方が他の人に安全でないファイル権限を付与したり、逆に通常の操作に必要でないシステム部分へのアクセス権を取得したりできます。 ...デフォルトでは、既存のDACモデルにはrootとuserという2つの特権レベルがあり、最小特権モデルを適用する簡単な方法はありません。ルートで始まる多くのプロセスは、制限されたユーザーとして実行される権限を放棄します。

    xattrLinux [カーネル]はすべてをファイル(ブロックデバイスまたはネットワークポート)として扱うので、  xattrSELinuxを使用するとほぼすべてのものにタグを付け、アクセス制御の種類を実行できるため、sとACLの使用を考慮することをお勧めします。ファイル/フォルダです。 https://wiki.centos.org/HowTos/SELinux

  • xattrシステムとファイルシステムだけでなく、NFS間でデータを移動するときに問題が発生する可能性があります。ここで、[最新]システムは以前のシステムよりも包括的なサポートを提供するため、xattr[そうであれば]これらの拡張属性をすべて認識できない可能性があります。taron stuffを使用するxattrと問題はありませんが、重要な場合は別の場所に移動すると問題が発生する可能性がありますxattr(Samba、Windows 10 NTFS、Linux ext3 / 4、btrfs、XFSコピーの間など)。 NAS(Network Attached Storage)デバイス間でコピー)。

  • xattrsで定義されているものを使用してACLを実行するSELinuxやその他のメカニズムがない場合、xattr理論的にはsは意味がなく、現時点では追加の手荷物に過ぎず、削除または削除できます。

  • 注意してください障害を負うxattrファイルシステムのラベルが欠落している場合、SELinuxの再変更に問題があったため、SELinuxはRHEL / CentOS 7にあります。実装するまたは龍仁;これもLinuxのバージョンとxattrSELinuxを介して使用される方法によって異なります。

SELinuxはデフォルトで必須に設定されているため、デフォルトのSamba共有はRHEL / CentOS 7では機能しません。 SELinuxは許可するまですべてを拒否するため、SELinuxを無効にするか(不良)許可に設定します。 SELinuxを適用したままにしておくと、SELinuxが共有を認識して受け入れるように、Sambaが共有するフォルダを拡張属性として表示する必要があります。したがって、SELinuxにすべてのSELinuxコマンドを強制させると、必要なxattrsが設定されます。

# from CentOS 7.6 /etc/samba/smb.conf.example

# Turn the samba_domain_controller Boolean on to allow a Samba PDC to use
# the useradd and groupadd family of binaries.
# Run the following command as the root user to turn this Boolean on:

setsebool -P samba_domain_controller on

# If you create a new directory, such as a new top-level directory, label it
# with samba_share_t so that SELinux allows Samba to read and write to it.
# Do not label system directories, such as /etc/ and /home/, with samba_share_t,
# as such directories should already have an SELinux label.


# the xattr having the name "samba_share_t" is labelled onto "/mydatashare"
# this xattr of syntax "samba_share_t" is recognized by an existing rule in SELinux
# if the folder does not have the xattr "samba_share_t" then the rule in SELinux
# (when enforced) will prevent access via Samba to the folder.

chcon -t samba_share_t /mydatashare

このSamba共有を含むLinuxシステムでは、SELinuxをさらに使用して、Samba共有の下のファイル/フォルダに制限を適用できます(拡張属性を使用)。これらのファイル/フォルダは共有されるため、ユーザーは一部のファイル/フォルダをWindows 10 PCに正当にコピーし、再度コピーして拡張属性を失う可能性があります。これで、Linuxシステムから前後にコピーした後に必要xattrなファイルがもう存在しなくなるため、SELinuxはそのファイルへのアクセスを制限し、ユーザー/管理者はなぜ何かが機能したのだろうかと思いますが、そうではありません。今すぐ作業してください... SELinuxを設定すると、監査ログにsが欠落している問題が許可され認識されますが、正しいsに基づいてセキュリティを強化したい場合は、コピーの損失によるものかどうかをxattr直接示していません。データのバックアップと回復も考慮し、UID / GIDに加えて覚えておくべき潜在的な努力も考慮する必要があります。xattrxattrxattr

答え3

chmodを強くお勧めします

$chmod [オプション] [ファイル名]

$chmod [オプション1] [演算子] [オプション2] [ファイル名]


数値表現には次のオプションがあります。

「0」は「無許可」を意味する。

「1」は「実行権限」を示す。

「2」は「書き込み権限」を意味する。

「4」は「読取り権限」を意味する。

シンボルオプション:

「u」はファイル所有者を示す。

「g」はグループを意味する。

「o」はギターを意味します

「a」は、すべてのユーザーを所有者、グループ、その他(ugo)として意味します。

chmod コマンドは次の演算子を受け入れます。

"+": この演算子は、指定された権限を追加するために使用されます。

"-": この演算子は、指定された権限を削除するために使用されます。

"=":この演算子は、すべてのユーザーの正確なファイル権限を定義するために使用されます。

関連情報