ウェブサイト検索

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 リストの詳細については、次のガイドを参照してください。

  1. ACL (アクセス制御リスト) を使用してユーザー/グループのディスク クォータを設定する方法
  2. 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 の特定のディレクトリに対する読み取り/書き込みアクセスをユーザーに付与する方法を説明しました。問題がある場合は、以下のコメントセクションから質問してください。