技術ノート Linux Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

重要なポイント

  • ファイルのすべての ACL エントリを表示するには、コマンド「getfacl filename」を使用します。ただし、「filename」をファイルの名前に置き換えます。
  • ファイルに新しい ACL エントリを設定するには、コマンド「setfacl -mu:username:rwx filename」を使用します。
  • ディレクトリにデフォルト ACL エントリを設定するには、コマンド「setfacl -d -mu:username:rwx dirname」を使用します。

あなたは、全員が異なるアクセスを必要とする複数のグループ間の共有ファイル サーバーを担当していますか?このチュートリアルでは、ACL の基本を説明し、架空のオフィス シナリオで ACL を使用します。

ACLとは何ですか?

アクセス コントロール リスト (ACL) は 、Linux および Unix 上の標準のファイル システム アクセス許可モデル を補完します。一言で言えば、「ユーザー/グループ/その他」の概念を超えて、ファイルとディレクトリに対する追加のアクセス許可のセットを作成できるようになります。また、新しいファイルやディレクトリにアクセス許可を自動的に適用するなど、優れた機能も備えています。その前に、ACL が連携して機能する Linux ファイル システムの基本的なアクセス許可の概念について説明します。

標準のファイル システム権限

Linux でのファイル システムのアクセス許可を理解するには、まず Linux が「マルチユーザー オペレーティング システム」であることを知る必要があります。これは、基本的に複数の人がシステムにログインできるようにする複数の ユーザー アカウント が存在し、それぞれに独自の自由と制限があることを意味します。

一部のユーザー アカウントは「システム」アカウントです。それは人によって使用されるものではなく、たとえばソフトウェアによって使用されます。プロセスはこれらの特別なアカウントで実行され、通常のユーザー アカウントと同様に、OS のさまざまな部分に対してプロセスを許可および制限します。

ユーザーを理解したところで、「グループ」について説明します。グループは非常に理解しやすく、単に既存のユーザーのコレクションです。リソースに対するアクセス許可を多数のユーザーに同時に割り当てるには、新しいグループを作成し、特定のユーザーにそのグループのメンバーシップを付与します。次に、リソースに対するアクセス許可を、個々のユーザーではなくグループに割り当てます。これにより、管理がより簡単かつ合理化されます。

さて、ファイルとディレクトリについて話しましょう。これらは、私たちがアクセスの許可と保護を重視しているリソースです。

ほとんどの Linux ファイル システム (EXT4、XFS、ZFS など) では、ファイルとディレクトリに 3 つの主要なアクセス許可を適用できます。これらの権限は次のとおりです。

  • 読み取り: ファイルの読み取りを許可します (またはディレクトリ内の内容を一覧表示します)。
  • 書き込み: ファイルへの書き込みまたは変更を許可します (または、ディレクトリ 内に ファイルとサブディレクトリを作成します)。
  • 実行: プログラムまたはスクリプトの実行を許可します (または、たとえば cd コマンド を使用してディレクトリに入ります)。

ファイル システム上のすべてのファイルとディレクトリには、そのファイルを所有するユーザー、グループ所有者、およびその他すべてのユーザーという 3 つの異なるエンティティに割り当てられた標準のアクセス許可があります。各エンティティには、読み取り、書き込み、および実行 (r/w/x) 権限の組み合わせが割り当てられている場合があります。 ls コマンドを使用する と、この情報をすべて確認できます。

 ls -l mysupersecretfile.txt

  1. [ユーザー] (所有者) 権限
  2. [G]グループの権限
  3. 他のすべてのユーザーの権限
  4. 所有ユーザー名
  5. 所有グループ名

デフォルトでは、新しく作成された各ユーザーは、同じ名前の新しいプライマリ グループにも割り当てられます。上記の例では、#4 はユーザー名「user」、#5 はグループ名「user」です。最初は混乱するかもしれないので、このような出力を見るときはそのことに留意してください。

ユーザーが変更を許可されるファイルとディレクトリは、ユーザーがそのファイルを「所有」しているかどうか、またはグループ メンバーシップを通じて適切なアクセス許可を持っているかどうかなど、いくつかの要因によって異なります。 root ユーザーは 、所有権に関係なく、システム上の任意のファイルを変更できることに注意してください。

ファイル システムのアクセス許可に対するこのアプローチは、ほとんどの在宅セットアップやスタンドアロン セットアップでうまく機能します。もちろん、複数のユーザーが同じファイル階層にアクセスするシステムを操作していて、特定のユーザーに一部の領域へのアクセスを許可する (そして他のユーザーからのアクセスを制限する) 必要がある場合、標準的な「1 人の所有者、1 人の所有者、 1 グループ」の方法論では少し不十分です。

ACL が標準のアクセス許可モデルを強化する方法

アクセス制御リストを使用すると、ファイルとディレクトリに対するアクセス許可エントリを複数のユーザーとグループに適用する機能が追加されます。 ACL が適切なオプションの例としては、既に特定の所有者およびグループ所有者のアクセス許可が割り当てられているファイルに、特定のユーザーのアクセス許可を割り当てる場合があります。

ディレクトリの ACL は、標準のアクセス許可 r / w / x モデルに従い、ディレクトリを ( r ) 読み取り (内容をリストするが、入力はしない)、 ( w ) ディレクトリ 内に 新しいファイルとディレクトリを書き込み (作成) する機能を提供します。 、および e( x ) でディレクトリを実行 (入力) します。

例としてはどうでしょうか?ユーザー Peter が所有し、読み取りと書き込みの権限を持つファイル report.pdf があるとします。さらに、このファイルのグループ所有権を会計グループに付与しました。これで、lumberg という名前のユーザーに読み取りアクセスを許可するリクエストを受け取りました。

標準のアクセス許可モデルを使用していると仮定します。このリクエストを完了するための (無駄な) アイデアをいくつか示します。

  • Lumberg に会計グループのメンバーシップを付与することはできません (これにより、彼は見てはいけない他のあらゆる種類のファイルにアクセスできるようになります)。
  • また、適切な管理慣行として、このファイルのためだけに、会計グループのユーザーと lumberg を加えたまったく新しいグループを作成することも望ましくありません。
  • 特に、 明らかなセキュリティ上の理由から、他のすべてのユーザーにアクセス許可を公開したくないでしょう。

 ls -l レポート.pdf

何をするか?まあ、早めにお昼休憩を取っても いいでしょう 。ただし、代わりに ACL を使用しましょう。

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

システムでの ACL サポートの確認

最新の Linux ディストリビューションのほとんどは、すぐに使用できる ACL をサポートしています。ほとんどの一般的なファイル システムはそれらをサポートしており、デフォルトのマウント オプションには ACL サポートが含まれており、デフォルトのインストールには適切なパッケージが含まれている必要があります。

ext2/3/4 ファイル システムで検証するには、tune2fs を使用します。たとえば、/dev/sda1 (ext4 ファイル システムが含まれている) を確認する場合は、次のようにします。

 sudotune2fs -l /dev/sda1 | grep "デフォルトのマウント オプション"

参考までに、 IBM によって作成された、プラットフォームごとにグループ化された ACL のさまざまなファイル システム サポートのリストを 次に示します。

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

getfacl コマンド

getfacl コマンドは、ファイルとディレクトリのファイル アクセス制御リストを表示 (取得) します。上記のレポート ファイルに対して getfacl を実行すると、次のように表示されます。

 getfacl レポート.pdf

現時点では、出力にはファイルの 最小 ACL が表示されています。最小の ACL は、所有者、所有グループ、およびその他すべてのユーザーに対する標準のアクセス許可で構成されます。

別のユーザー (マイケルとします) の 拡張 ACL エントリがあった場合、次のように表示されます。

 getfacl レポート.pdf

最小限の ACL に加えて、ユーザー michael 用の拡張 ACL エントリ (読み取り+書き込み権限) が追加されました。拡張 ACL を含むファイルを再度リストすると、「その他のユーザー」権限の右側にプラス (+) 記号が表示され、拡張 ACL エントリが存在することがわかります。

 ls -l レポート.pdf 

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

setfacl コマンド

setfacl コマンドは、実際にファイルとディレクトリの ACL を設定する コマンドです。ユーザーとグループのエントリの追加と削除、権限の変更、ディレクトリへのデフォルト ACL の設定やマスクの操作などのその他のタスクを実行します。これを使用して、lumberg ユーザーに report.pdf への読み取りアクセスを許可することで、上記のリクエストを完了します。

新しいユーザー ACL エントリを追加するには、次の構文で setfacl を使用します (詳細は以下で説明します)。

 sudo setfacl -mu:lumberg:r レポート.pdf 

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

ファイルの ACL エントリを変更する setfacl コマンドを表示する端末ウィンドウ。

  • -m は 、ファイルの ACL エントリを変更していることを意味します
  • u: 追加するユーザーであることを意味し、その後にコロン (:) 区切り文字が続きます ( g: はグループを追加し、 o: は 他のすべてのユーザーの権限を追加します)
  • lumberg: は 追加するユーザー名で、その後に別のコロン区切り文字が続きます
  • r は 、エントリに読み取り権限 (のみ) を追加することを意味します
  • report.pdf は、ACL エントリを追加するファイルの名前です。

これで設定が完了したので、もう一度 getfacl を使用して確認してみましょう。

 getfacl レポート.pdf

私たちの新しいエントリーに気づきましたか?

Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法

デフォルトのACL

デフォルトの ACL はディレクトリ (フォルダー) にのみ適用されます。ディレクトリにデフォルトの ACL を設定すると、作成者に関係なく、指定したエントリがその中の すべて の新しいファイルとディレクトリに自動的に適用されます。これは一種の包括的で再帰的なアプローチであり、ファイル システム階層を計画するときに非常に役立ちます。

Lumberg が新しいファイルを読み取り、Accounting の下に作成された新しいディレクトリに入力できることを確認しましょう。 デフォルトの ACL を追加するには -d オプションを使用します。

 sudo setfacl -d -mu:lumberg:rX アカウンティング

大文字の X は 、新しいサブディレクトリに対してのみ実行権限を適用します。ファイルではありません。

「 Linux でファイルシステム ACL (アクセス制御リスト) を使用する方法」に関するベスト動画選定!

【#101 CCNA 】【10章 ACL】ACLのきほん
ファイル共有サービス、システムのセキュリティ(Linux学習)

アクセス制御リストは、ファイル システムのアクセス許可を次のレベルに引き上げたい場合に最適です。標準のユーザー/グループ/その他のアクセス許可を使用して多くのことを回避できますが、おそらく、ACL を使用する方がはるかに合理的になる段階が発生するでしょう。