GNU/Linux >> Linux の 問題 >  >> Linux

UNIX/Linux :アクセス制御リスト (ACL) の基本

ACL が必要な理由

UNIX ファイル システム上のすべてのファイルには、所有者/グループと一連のアクセス許可があります。複数のユーザーが同じファイルにアクセスする必要があり、ユーザーが異なるグループに属している場合を想像してください。ファイル アクセス制御リスト (FACL) または単に ACL は、追加のユーザー/グループとそのファイルへのアクセス許可のリストです。

ファイルに ACL が添付されているかどうかを知る方法

ファイルに ACL が添付されているかどうかは、非常に簡単にわかります。 ls -l コマンドは、以下に示すような出力を生成します。

# ls -l
-rw-r--r-+ 1   root   root  0  Sep  19  14:41  file

+ に注意してください 許可の最後に署名します。これにより、ファイルに ACL が添付されていることが確認されます。

ACL の表示

ファイルの詳細 ACL 情報を表示するには、getfacl を使用します 指図。

# getfacl /tmp/test
# file: test
# owner: root
# group: root
user::rw-
user:john:rw-
user:sam:rwx
group::r--
mask::rwx
other:---

3 人の異なる user: に注目してください:行。最初の行には、ファイルの所有者の標準的なファイル許可がリストされています。他の 2 つのユーザー権限は、ユーザー john と sam の個別の権限です。ここでのマスク フィールドは、ユーザーとグループに付与した追加のアクセス許可にのみ適用されます。マスクが rwx に設定されている場合、読み取り、書き込み、および実行のパーミッションが追加のユーザー/グループに付与されます。マスクが r-x に設定されている場合、書き込み権限は追加のユーザー/グループに付与されません。一般的に、しない mask を rwx 以外に設定します。マスク値は、標準の UNIX ユーザー/グループ/その他のアクセス許可には影響しません。

ACL のないファイル
ACL のないファイルに対して getfacl コマンドを実行すると、追加の「user:」行と「mask」行は表示されず、標準のファイル許可が表示されます。

# getfacl test
# file: test
# owner: root
# group: root
user::rw-
group::r--
other::r--

FACL の作成と管理

setfacl コマンドは、指定されたファイルに ACL を設定するために使用されます。ファイル /tmp/test でユーザー john に rw アクセス権を付与するには:

# setfacl -m u:john:rw /tmp/test

-m オプションは、コマンド ラインで指定されたファイルの ACL を変更するように setfacl に指示します。ユーザー john の代わりに、ファイルに対する特定の権限を持つグループを持つことができます:

# setfacl -m g:accounts:rw /tmp/test

複数のユーザーとグループの FACL も 1 つのコマンドで設定できます:

# setfacl -m u:john:rw,g:accounts:rwx /tmp/test

ディレクトリのデフォルト FACL

デフォルトの ACL はディレクトリでのみ作成されます。ディレクトリにデフォルトの ACL を設定すると、そのディレクトリ内に作成されたすべてのファイルにも、そのデフォルトの FACL が自動的に割り当てられます。

ディレクトリにデフォルトの FACL を作成するには:

# setfacl -m default:u:john:rw /accounts
# getfacl accounts/
# file: accounts/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:john:rw-
default:group::r-x
default:mask::rwx
default:other::r-x

ここで、accounts ディレクトリに新しいファイルを作成し、そのファイルに FACL をリストします:

# touch /accounts/test
# getfacl test
# file: test
# owner: root
# group: root
user::rw-
user:john:rw-
group::r-x			#effective:r--
mask::rw-
other::r--

FACL の削除

FACL を削除するには、-x オプションを指定して setfacl コマンドを使用します:

# setfacl -x u:john /tmp/test

上記のコマンドは、ファイル /tmp/test のユーザー john の ACL を削除します。他のユーザー/グループの ACL (影響を受けない場合)。

ファイルに関連付けられたすべての ACL を削除するには、setfacl で -b オプションを使用します。

# setfacl -b /tmp/test

FACL のバックアップ

多くの場合、バックアップ ソフトウェアはファイルの FACL に関連するメタデータをコピーしない場合があります。その場合、ファイルの FACL 情報をバックアップすることをお勧めします。現在、ディレクトリ内のすべてのファイル (すべてのサブディレクトリを含む) の FACL を 1 つのファイルにコピーできます。

# cd /accounts
# getfacl -R * > accounts_facl        ( -R -> recursive )

FACL の復元

/accounts ディレクトリ内のファイルを復元する場合、そのディレクトリ内のファイルに関連付けられている FACL を復元する必要があります。これを行うには、FACL バックアップ ファイル accounts_facl を使用します –restore とともに オプション:

# setfacl --restore=accounts_facl


Linux
  1. Linuxファイルパーミッションの基本

  2. Linuxアクセス制御リスト(ACL)の概要

  3. Linux/Unixでの入力/出力リダイレクト

  1. Linux – Unixのアクセス許可とファイルタイプを理解していますか?

  2. Linuxファイルアクセスモニタリング?

  3. RHEL 7 – RHCSA に関する注意事項 – アクセス制御リスト (ACL) の作成と管理

  1. Linux でファイル アクセスを監査する方法

  2. UNIX/Linux でファイルの行数を数える方法

  3. UNIX/Linux での tail コマンドの例