ウェブサイト検索

RHCSA シリーズ: ACL (アクセス制御リスト) の使用と Samba/NFS 共有のマウント - パート 7


前回の記事 (RHCSA シリーズ パート 6) では、partedssm を使用してローカル システム ストレージをセットアップおよび構成する方法の説明を開始しました。

また、システム起動時にパスワードを使用して暗号化ボリュームを作成およびマウントする方法についても説明しました。さらに、マウントされたファイルシステムに対して重要なストレージ管理操作を実行しないように警告しました。これを念頭に置いて、Red Hat Enterprise Linux 7 で最も使用されているファイル システム形式を確認し、手動でのマウント、使用、 およびアンマウントのトピックに進みます。自動的にネットワーク ファイル システム (CIFS および NFS) を設定し、システムのアクセス制御リストを実装します。

前提条件

先に進む前に、Samba サーバーと NFS サーバーが利用可能であることを確認してください (NFSv2 ではサポートされなくなっていることに注意してください) RHEL 7)。

このガイドでは、両方のサービスがサーバーとして実行されている IP 192.168.0.10 のマシンを使用し、IP アドレス 192.168 のクライアントとして RHEL 7 ボックスを使用します。 .0.18です。この記事の後半では、クライアントにどのパッケージをインストールする必要があるかについて説明します。

RHEL 7 のファイル システム形式

RHEL 7 以降、XFS はその高いパフォーマンスとスケーラビリティにより、すべてのアーキテクチャのデフォルト ファイル システムとして導入されています。 Red Hat とそのパートナーがメインストリーム ハードウェアに対して実行した最新のテストによると、 現在、最大 500 TB のファイル システム サイズがサポートされています。

また、XFS では、ext3 や ext4 (ext2) とは異なり、user_xattr (拡張ユーザー属性) と acl (POSIX アクセス制御リスト) がデフォルトのマウント オプションとして有効になります。これは、RHEL 7 の時点では非推奨であると考えられています)。つまり、XFS ファイルシステムをマウントするときに、コマンドラインまたは /etc/fstab でこれらのオプションを明示的に指定する必要はありません(必要な場合)。この最後のケースでそのようなオプションを無効にするには、no_aclno_user_xattr を明示的に使用する必要があります)。

拡張ユーザー属性は、ファイルの MIME タイプ、文字セット、エンコーディングなどの任意の追加情報を保存するためにファイルやディレクトリに割り当てることができますが、ユーザー属性のアクセス許可は通常のファイル許可ビットによって定義されることに注意してください。

アクセス制御リスト

初心者でも専門家でも、すべてのシステム管理者は、特定の権限 (読み取り書き込み実行) を指定する、ファイルとディレクトリに対する通常のアクセス許可に精通しています。 )オーナー、グループ、そして「世界」(その他すべて)のために。ただし、記憶を少しリフレッシュする必要がある場合は、RHCSA シリーズのパート 3 を参照してください。

ただし、標準のugo/rwx セットではユーザーごとに異なるアクセス許可を設定できないため、ファイルとディレクトリに対するアクセス権をこれまでよりも詳細に定義するためにACL が導入されました。通常の権限で指定されたもの。

実際、ACL で定義された権限は、ファイル権限ビットで指定された権限のスーパーセットです。これらすべての変換が現実の世界でどのように適用されるかを見てみましょう。

1. ACL には 2 つのタイプがあります。アクセス ACL は特定のファイルまたはディレクトリに適用できます)。 > デフォルト ACL。これはディレクトリにのみ適用できます。そこに含まれるファイルに ACL が設定されていない場合、親ディレクトリのデフォルト ACL が継承されます。

2. まず、ACL はユーザーごと、グループごと、またはファイルの所有グループに属していないユーザーごとに設定できます。

3. ACL は、setfacl を使用し、-m または - を使用して設定 (および削除) されます。 x のオプションをそれぞれ指定します。

たとえば、tecmint という名前のグループを作成し、そこにユーザー johndoedavenull を追加してみましょう。

groupadd tecmint
useradd johndoe
useradd davenull
usermod -a -G tecmint johndoe
usermod -a -G tecmint davenull

そして、両方のユーザーが補助グループ tecmint に属していることを確認してみましょう。

id johndoe
id davenull

ここで、/mnt 内に playground というディレクトリを作成し、その中に testfile.txt という名前のファイルを作成しましょう。グループ所有者を tecmint に設定し、そのデフォルトの ugo/rwx 権限を 770 に変更します (両方に付与される読み取り、書き込み、および実行権限)ファイルの所有者とグループ所有者):

mkdir /mnt/playground
touch /mnt/playground/testfile.txt
chmod 770 /mnt/playground/testfile.txt

次に、ユーザーを johndoedavenull の順に切り替えて、ファイルに書き込みます。

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

ここまでは順調ですね。ここで、ユーザー gacanepa にファイルに書き込んでもらいましょう。書き込み操作は予想通り失敗します。

しかし、実際にユーザー gacanepa (グループ tecmint のメンバーではない) に /mnt/playground/testfile.txt への書き込み権限が必要な場合はどうなるでしょうか?< 最初に思いつくのは、そのユーザー アカウントをグループ tecmint に追加することです。しかし、これにより、グループに書き込みビットが設定されている場合、すべてのファイルに対する書き込み権限が与えられることになりますが、これは望ましくありません。彼が /mnt/playground/testfile.txt に書き込みできるようにしたいだけです。

touch /mnt/playground/testfile.txt
chown :tecmint /mnt/playground/testfile.txt
chmod 777 /mnt/playground/testfile.txt
su johndoe
echo "My name is John Doe" > /mnt/playground/testfile.txt
su davenull
echo "My name is Dave Null" >> /mnt/playground/testfile.txt
su gacanepa
echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

ユーザー gacanepa/mnt/playground/testfile.txt への読み取りおよび書き込みアクセス権を付与しましょう。

rootとして実行し、

setfacl -R -m u:gacanepa:rwx /mnt/playground

これで、gacanepa がテスト ファイルに書き込むことができるようにする ACL が正常に追加されました。次に、ユーザー gacanepa に切り替えて、ファイルへの書き込みを再度試みます。

echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

特定のファイルまたはディレクトリのACLを表示するには、getfacl を使用します。

getfacl /mnt/playground/testfile.txt

デフォルト ACL をディレクトリ (別の方法で上書きしない限り、その内容は継承されます) に設定するには、ルールの前に d: を追加し、ファイル名の代わりにディレクトリを指定します。

setfacl -m d:o:r /mnt/playground

上記の ACL により、所有者グループに属していないユーザーは、/mnt/playground ディレクトリの今後のコンテンツへの読み取りアクセスが許可されます。変更前と変更後の getfacl /mnt/playground の出力の違いに注目してください。

公式 RHEL 7 ストレージ管理ガイドの第 20 章には、さらに多くの ACL の例が記載されています。参照として手元に置いておくことを強くお勧めします。