
私はずっと前にUnixで次のことを学びましたchmod
。 Unixで権限を設定する従来の方法(そしてプログラムが権限を取得できるようにする方法はsetuidとsetgidを使用することです)。
私は最近GNU / Linuxでいくつかの新しいコマンドを見つけました:
setfacl
既存のビットugo:rwx
合計を拡張します。t
chmod
setcap
ug:s
よりきめ細かい権限制御を提供するよりも優れていますchmod
。chattr
ファイルの追加制御を許可します(少しハイブリッド)。
他の人はいますか?
答え1
chmod
:ファイルモードビット変更
使い方(8進モード):
chmodオクタルモード ドキュメント...
使い方(シンボルモード):
chmod [引用する][[オペレーター][モデル]]ドキュメント...
references
ugoa
どのユーザーがアクセスできるかを指定する文字の組み合わせです。files
修正されます:
u
それを所有しているユーザーg
ファイルグループの他のユーザーo
ファイルグループにない他のユーザーa
すべてのユーザー
省略すると、デフォルトはすべてのユーザーに設定されますが、許可された権限のみを変更しますumask
。
operator
次のキャラクターの一つです+-=
。
+
指定されたファイルモードビットを各ファイルの既存のファイルモードビットに追加します。file
-
各ファイルの既存のファイルモードビットから指定されたファイルモードビットを削除します。file
=
明示的に指定しない限り、ディレクトリに設定されたsetuid
合計ビットを除いて指定されたビットを追加し、指定されていないビットを削除します。setgid
mode
rwxXst
変更する権限ビットを指定する文字の組み合わせで構成されています。
r
読むw
書くx
(小文字X
)実行(またはディレクトリ検索)X
(大文字)ファイルがディレクトリの場合、または特定のユーザークラスに対して実行ビットが設定されている場合にのみ実行/トラバースします。s
setuidまたは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
。
attribute
acdeijmstuxACDFPST
属性に対応する文字の組み合わせです。
a
追加のみc
圧縮d
ダンプなしe
範囲形式i
不変j
データログm
圧縮しないでくださいs
安全削除t
尾マージなしu
削除できません。x
ファイルに直接アクセスA
atime
更新なし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
(または以下のように長い形式)。
u
、users
指定されたユーザーの権限は、次によって決定されます。param
、 省略した場合、デフォルトはファイル所有者UIDです。g
、group
指定されたグループの権限は、次によって決定されます。param
、 省略した場合、デフォルトは自分が属するグループのGIDです。m
、mask
有効権限マスクo
、other
他人の権限
perms
rwxX
権限に対応する文字の組み合わせです。
r
読むw
書くx
実装するX
ファイルがディレクトリである場合、またはすでに一部のユーザーに対する実行権限がある場合にのみ実行
または、perms
権限セットを表す 8 進数 (-) です0
。7
setcap
:変化ファイル機能
使用法:
セットキャップ容量規定 文書
ㅏcapability-clause
カンマで区切られたリストで構成されます。能力名前の後には演算子フラグペアのリストが続きます。
使用可能な演算子は=
、+
およびです-
。使用可能なフラグはおよびでe
、これは次のとおりです。i
p
効果的な、継承可能そして許可する能力値設定。
オペレータは、=
指定された機能セットを発展させ、他の機能セットをリセットします。演算子にフラグが設定されていない場合は、=
すべての機能セットがリセットされます。+
および演算子は、-
それぞれ1つ以上の指定された機能セットを増減します。
chcon
: ファイル変更SELinuxセキュリティコンテキスト
使用法:
chcon[-uユーザー][-r役割][-tタイプ]ドキュメント...
user
またはなどのSELinuxユーザーである必要がありますuser_u
。system_u
root
role
SELinuxの役割です(常にobject_r
ファイル用)。
type
SELinuxのトピックタイプですか?
chsmack
:変化スマーカー拡張属性
SMACKは単純化された必須アクセス制御カーネルです。
使用法:
chsmack -a値 文書
value
SMACK64
拡張ファイル属性にSMACKタグが設定されていますか?
セットリチャール:さまざまなアクセス制御リストの変更
リチャードこれはより高度なACLを追加する機能です。
現在進行中の作業なので、これについて詳しくお伝えできません。私はそれらを使用しませんでした。
この質問も参照してください既存の「rwx」およびPOSIX ACLに加えて、高度なファイルシステムACLはありますか? そしてマニュアルページ
答え2
高レベルで:
- サポートされるデフォルトのファイルシステム権限オリンクス
そして みんなUnixに優しいファイルシステム
-rwxrwxrwx
によって処理され、によって処理されたファイルchmod
システムの各ファイルまたはフォルダに関連付けられている所有者およびグループ識別子は、基本的にすべてが知っているものです。chown
chgrp
- 拡張ファイル属性、略称またはとして知られているプロパティ。これは、ユーザーがファイルをファイルシステムから解釈されないメタデータに関連付けることを可能にするファイルシステム機能です。一方、一般属性はファイルシステムによって厳密に定義された目的を持ちます。属性は、ファイルとディレクトリに関連付けられている名前と値のペアです。プロセスに関連する環境文字列です。単にこのメタデータをさまざまなファイル/フォルダに設定することに関連するいくつかの特定の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と
xattr
sはすべてを可能にします。 SELinuxはxattr
sを使用してファイル/フォルダのセキュリティラベルを保存します。 SELinuxでは、すべての下位レベルの操作がxattr
sで実行/定義されます。あなたの使用。したがって、古代のファイルシステムがSELinuxをサポートしていない場合は、xattr
SELinuxを使用しません。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つの特権レベルがあり、最小特権モデルを適用する簡単な方法はありません。ルートで始まる多くのプロセスは、制限されたユーザーとして実行される権限を放棄します。
xattr
Linux [カーネル]はすべてをファイル(ブロックデバイスまたはネットワークポート)として扱うので、xattr
SELinuxを使用するとほぼすべてのものにタグを付け、アクセス制御の種類を実行できるため、sとACLの使用を考慮することをお勧めします。ファイル/フォルダです。 https://wiki.centos.org/HowTos/SELinuxxattr
システムとファイルシステムだけでなく、NFS間でデータを移動するときに問題が発生する可能性があります。ここで、[最新]システムは以前のシステムよりも包括的なサポートを提供するため、xattr
[そうであれば]これらの拡張属性をすべて認識できない可能性があります。tar
on stuffを使用するxattr
と問題はありませんが、重要な場合は別の場所に移動すると問題が発生する可能性がありますxattr
(Samba、Windows 10 NTFS、Linux ext3 / 4、btrfs、XFSコピーの間など)。 NAS(Network Attached Storage)デバイス間でコピー)。xattr
sで定義されているものを使用してACLを実行するSELinuxやその他のメカニズムがない場合、xattr
理論的にはsは意味がなく、現時点では追加の手荷物に過ぎず、削除または削除できます。注意してください障害を負う
xattr
ファイルシステムのラベルが欠落している場合、SELinuxの再変更に問題があったため、SELinuxはRHEL / CentOS 7にあります。実装するまたは龍仁;これもLinuxのバージョンとxattr
SELinuxを介して使用される方法によって異なります。
SELinuxはデフォルトで必須に設定されているため、デフォルトのSamba共有はRHEL / CentOS 7では機能しません。 SELinuxは許可するまですべてを拒否するため、SELinuxを無効にするか(不良)許可に設定します。 SELinuxを適用したままにしておくと、SELinuxが共有を認識して受け入れるように、Sambaが共有するフォルダを拡張属性として表示する必要があります。したがって、SELinuxにすべてのSELinuxコマンドを強制させると、必要なxattr
sが設定されます。
# 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に加えて覚えておくべき潜在的な努力も考慮する必要があります。xattr
xattr
xattr
答え3
chmodを強くお勧めします
$chmod [オプション] [ファイル名]
$chmod [オプション1] [演算子] [オプション2] [ファイル名]
数値表現には次のオプションがあります。
「0」は「無許可」を意味する。
「1」は「実行権限」を示す。
「2」は「書き込み権限」を意味する。
「4」は「読取り権限」を意味する。
シンボルオプション:
「u」はファイル所有者を示す。
「g」はグループを意味する。
「o」はギターを意味します
「a」は、すべてのユーザーを所有者、グループ、その他(ugo)として意味します。
chmod コマンドは次の演算子を受け入れます。
"+": この演算子は、指定された権限を追加するために使用されます。
"-": この演算子は、指定された権限を削除するために使用されます。
"=":この演算子は、すべてのユーザーの正確なファイル権限を定義するために使用されます。