Linux の特定のディレクトリに対する読み取り/書き込みアクセスをユーザーに割り当てる
前回の記事では、Linux で共有ディレクトリを作成する方法を説明しました。ここでは、Linux の特定のディレクトリに対する読み取り/書き込みアクセス権をユーザーに与える方法について説明します。
これを行うには 2 つの方法が考えられます。1 つ目は ACL (アクセス コントロール リスト) を使用する方法で、2 つ目は、以下で説明するように、ファイルのアクセス許可を管理するためのユーザー グループを作成する方法です。
このチュートリアルでは、次のセットアップを使用します。
Operating system: CentOS 7
Test directory: /shares/project1/reports
Test user: tecmint
Filesystem type: Ext4
すべてのコマンドが root ユーザーとして実行されていることを確認するか、同等の権限で sudo コマンドを使用してください。
まず、mkdir コマンドを使用して reports
というディレクトリを作成します。
mkdir -p /shares/project1/reports
ACL を使用してディレクトリ上のユーザーに読み取り/書き込みアクセスを付与する
重要: この方法を使用するには、Linux ファイルシステム タイプ (Ext3 および Ext4、NTFS、BTRFS など) が ACL をサポートしていることを確認してください。
1. まず、システム上の現在のファイル システム タイプと、次のようにカーネルが ACL をサポートしているかどうかを確認します。
df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep -i acl /boot/config*
以下のスクリーンショットから、ファイルシステムのタイプはExt4で、カーネルはCONFIG_EXT4_FS_POSIX_ACL=yオプションで示されているようにPOSIX ACLをサポートしています。
2. 次に、ファイル システム (パーティション) が ACL オプションでマウントされているかどうかを確認します。
tune2fs -l /dev/sda1 | grep acl
上記の出力から、デフォルトのマウント オプションがすでにACL をサポートしていることがわかります。有効になっていない場合は、特定のパーティション (この場合は/dev/sda3) に対して有効にすることができます。
mount -o remount,acl /
tune2fs -o acl /dev/sda3
3. 次に、次のコマンドを実行して、reports
という特定のディレクトリへの読み取り/書き込みアクセスをユーザー tecmint
に割り当てます。
getfacl /shares/project1/reports # Check the default ACL settings for the directory
setfacl -m user:tecmint:rw /shares/project1/reports # Give rw access to user tecmint
getfacl /shares/project1/reports # Check new ACL settings for the directory
上のスクリーンショットでは、2 番目の の出力からわかるように、ユーザー tecmint
はディレクトリ /shares/project1/reports に対する読み取り/書き込み (rw) 権限を持っています。 getfacl コマンド。
ACL リストの詳細については、次のガイドを参照してください。
- ACL (アクセス制御リスト) を使用してユーザー/グループのディスク クォータを設定する方法
- ACL (アクセス制御リスト) を使用してネットワーク共有をマウントする方法
次に、ディレクトリに読み取り/書き込みアクセスを割り当てる 2 番目の方法を見てみましょう。
グループを使用してディレクトリ上のユーザーに読み取り/書き込みアクセスを付与する
1. ユーザーがすでにデフォルトのユーザー グループ (通常はユーザー名と同じ名前) を持っている場合は、ディレクトリのグループ所有者を変更するだけです。
chgrp tecmint /shares/project1/reports
あるいは、次のように、複数のユーザー (特定のディレクトリに対する読み取り/書き込み権限が与えられるユーザー) 用の新しいグループを作成します。ただし、これにより共有ディレクトリが作成されます。
groupadd projects
2. 次に、次のようにユーザー tecmint
をグループ projects
に追加します。
usermod -aG projects tecmint # add user to projects
groups tecmint # check users groups
3. ディレクトリのグループ所有者をプロジェクトに変更します。
chgrp projects /shares/project1/reports
4. 次に、グループ メンバーの読み取り/書き込みアクセスを設定します。
chmod -R 0760 /shares/projects/reports
ls -l /shares/projects/ #check new permissions
それでおしまい!このチュートリアルでは、Linux の特定のディレクトリに対する読み取り/書き込みアクセスをユーザーに付与する方法を説明しました。問題がある場合は、以下のコメントセクションから質問してください。