1. 概要

このチュートリアルでは、ディレクトリまたはファイルシステム上に新しく作成されたファイルとサブディレクトリのデフォルトのアクセス許可を設定する方法について説明します。 まず、ACLの簡単な紹介と、ファイルシステムでACLを有効にする方法から始めます。 次に、ホームディレクトリに新しく作成されたファイルのアクセス許可を設定する作業を行います。

2. デフォルトの権限の設定

ファイルのアクセス許可は、ファイルに対して特定の操作を実行するための特権です。 これらの権限を特定のユーザーまたはユーザーのグループに付与できます。 ユーザーがファイルに対して実行できる操作は、読み取り、書き込み、実行、またはこれらの操作の組み合わせのいずれかです。

Linuxでは、デフォルトで、新しいファイルを作成するときに、 rw-rw-r–権限が付与されます。 r w 、および x は、それぞれ読み取り、書き込み、および実行のアクセス許可を示します。

ファイルに対するrw-rw-r–権限を分解してみましょう。

  • 最初のrw-は、ユーザーまたはファイルの所有者に対する読み取り/書き込み権限を示します
  • 2番目のrw-は、ファイルが属するグループの読み取り/書き込み権限を示します
  • 最後のr– 読み取り権限は、他のすべてのユーザーに対するものです

同様に、新しく作成されたディレクトリの場合、デフォルトの権限はrwxrwxr-x。です。

2.1. ACLとは何ですか?

アクセス制御リスト(ACL)は、ファイルシステムに複雑なアクセス許可を設定できるメカニズムです。それだけでなく、ACLを使用して特定のファイルまたはディレクトリにアクセス許可を適用することもできます。 ACLを使用すると、新しく作成されたファイルとディレクトリのデフォルトのアクセス許可を変更できます。

ext4では、ACLサポートはすでに有効になっています。ただし、他のファイルシステムタイプでも有効にすることができます。これについては、次のセクションで説明します。

2.2. ファイルシステムでACLを有効にする

fstabファイルのパーティションエントリにaclオプションを追加することで、ext3やfatなどの他のファイルシステムタイプでACLサポートを簡単に有効にできます。 fstabファイルは次の場所にあります。 / etc ディレクトリであり、パーティションの構成が含まれています。

fstab ファイルを開き、必要なパーティションのエントリにaclオプションを追加しましょう。

# <file system> <dir> <type> <options> <dump> <pass>
/dev/sda4    /home    ext3    rw,relatime,acl    0 1
.
.
.

この場合、aclオプションを/dev /sdaパーティションに追加しました。このパーティションは/homeディレクトリにマウントされています。 オプションを追加したら、 mount を使用してパーティションを再マウントするだけで、変更を有効にできます。

$ mount -oremount /dev/sda4

これで、ACLサポートが有効になり、 / dev /sda4パーティションに新しく作成されたファイルとディレクトリに必要なアクセス許可を適用できます。

2.3. setfaclを使用した権限の設定

Linuxでは、setfaclユーティリティを使用してディレクトリとファイルのACLを管理します。このユーティリティには acl パッケージが付属しており、デフォルトですでにマシンにインストールされているはずです。 ただし、何らかの理由でマシンにインストールされていない場合は、ディストリビューションの公式リポジトリからインストールできます。

次のコマンド構文を使用して、setfaclを使用してファイルとディレクトリにデフォルトのアクセス許可を適用できます。

$ setfacl [OPTIONS] [PERMISSIONS] [FILE|DIRECTORY]

次に、 / dev /sda4パーティションの下にあるファイルとディレクトリにデフォルトのアクセス許可を適用しましょう。これはたまたま/homeにマウントされています。

$ setfacl -PRdm u::rwx,g::rw,o::r /home

それを分解しましょう:

  • -d は、 /homeディレクトリのデフォルトの権限を設定します
  • -m は、ACLに変更を加えることを意味します
  • -R は、 /homeフォルダー内のすべてのファイルとサブディレクトリに再帰的にアクセス許可を適用します
  • -P は、操作がシンボリックリンクをたどるのを防ぎます—セキュリティを危険にさらすリスクを回避します
  • その後のパターンは、 /homeディレクトリのデフォルトのアクセス許可を指定します

ユーザーの各クラスの権限は、コンマで区切られます。 たとえば、 u :: rwx は、 /homeディレクトリのユーザーまたは所有者のデフォルトのアクセス許可を指定します。 この場合、所有者は / home ディレクトリに新しく作成されたファイルとディレクトリの読み取り、書き込み、および実行を行うことができます。 同様に、所有するグループは読み取り/書き込み権限を受け取りますが、他のグループは読み取り権限のみを受け取ります。

次に、 / home ディレクトリの下にファイルを作成して、新しいアクセス許可をテストします。

$ touch /home/hey/test
$ ls -l /home/hey/test
.rwxrw-r-- hey hey 0 B Fri Jan 21 22:42:01 2022 test

-R オプションを使用したため、 /home階層の下にある新しいファイルとフォルダーは適切なデフォルトのアクセス許可を受け取ります。

2.4. 別のユーザーまたはグループにデフォルトの権限を設定する

コロンの間にuid(ユーザーID)またはgid(グループID)を配置することもできます。 したがって、ファイルまたはディレクトリの所有者ではないユーザーにアクセス許可を割り当てる場合は、このアプローチを使用する必要があります。 例として、ユーザーに権限を設定する場合 doe 、 と uid 1001、パーミッションを次のように指定するだけです。

$ setfacl -PRdm u:1001:rw /home

2.5. アクセス許可を保持するツール

新しいファイルやディレクトリを作成するときにソースファイルのアクセス許可を保持しようとするcp、tar、unzip、rsyncなどのツールがあります。つまり、これらのツールはデフォルトのACLのアクセス許可をマスクします。 したがって、これらのツールを使用する場合は、 chmod を使用して、必要なアクセス許可を結果の新しいファイルとディレクトリに手動で適用する必要があります。

3. 結論

この記事では、Linuxパーティションまたはディレクトリに新しく作成されたファイルとディレクトリにデフォルトのアクセス許可を設定する方法を説明しました。 ACLとは何か、および setfacl ヘルパーユーティリティを使用して、新しく作成されたファイルとディレクトリのデフォルトのアクセス許可を設定する方法について説明しました。