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

前回の記事(RHCSAシリーズPart 6)では、partedssmを使用してローカルシステムストレージの設定と構成方法を説明しました。

RHCSA Series:: Configure ACL’s and Mounting NFS / Samba Shares – Part 7

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

前提条件

さらに進む前に、SambaサーバーとNFSサーバーが利用可能であることを確認してください(NFSv2RHEL 7でサポートされなくなりました)。

このガイドでは、サーバーとして両方のサービスを実行しているIP 192.168.0.10のマシンと、クライアントとしてRHEL 7ボックス(IPアドレス192.168.0.18)を使用します。記事の後半では、クライアントにインストールする必要があるパッケージをお知らせします。

RHEL 7のファイルシステムフォーマット

RHEL 7から、XFSが高性能とスケーラビリティのためのデフォルトのファイルシステムとしてすべてのアーキテクチャで導入されました。最新のRed Hatとそのパートナーによる一般的なハードウェア向けのテストによると、現在の最大ファイルシステムサイズは500 TBをサポートしています。

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

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

アクセス制御リスト

システム管理者であれば、初心者であろうとエキスパートであろうと、ファイルとディレクトリの通常のアクセス許可によく精通しており、所有者、グループ、および「世界」(その他すべて)の特定の権限(読み取り書き込み、および実行)を指定しています。ただし、少し思い出したい場合は、RHCSAシリーズのパート3を参照してください。

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

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

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

2. まず、ACLはユーザーごと、グループごと、または所有グループではないユーザーごとに構成できます。

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

たとえば、tecmintというグループを作成し、ユーザーjohndoedavenullを追加してみましょう:

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

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

# id johndoe
# id davenull
Verify Users

次に、/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にファイルに書き込ませてみましょう – 予想されていたように、書き込み操作は失敗します。

しかし、実際には、グループtecmintのメンバーではないユーザーgacanepa/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
Manage User Permissions

ユーザーgacanepa/mnt/playground/testfile.txtへの読み書きアクセス権を与えましょう。

rootユーザーとして実行すると、

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

ACLが追加され、gacanepaがテストファイルに書き込めるようになります。その後、ユーザーgacanepaに切り替えてファイルに再度書き込んでみてください。

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

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

# getfacl /mnt/playground/testfile.txt
Check ACLs of Files

ディレクトリにデフォルトACLを設定するには(上書きされない限り、その中身に適用されます)、ルールの前にd:を追加し、ファイル名の代わりにディレクトリを指定します。

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

上記のACLにより、所有者グループに属さないユーザーが将来の/mnt/playgroundディレクトリの内容に読み取りアクセスできるようになります。変更前後のgetfacl /mnt/playgroundの出力の違いに注意してください。

Set Default ACL in Linux

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

Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/