Linuxの特定のディレクトリ上のユーザーに読み取り/書き込みアクセスを割り当てる


前回の記事では、Linuxで共有ディレクトリを作成する方法を紹介しました。ここでは、Linuxの特定のディレクトリにいるユーザーに読み取り/書き込みアクセスを許可する方法について説明します。

これを行うには、2つの方法があります。1つはACL(アクセス制御リスト)を使用する方法、もう1つはファイルのアクセス許可を管理するユーザーグループを作成する方法です(以下で説明します)。

このチュートリアルでは、次の設定を使用します。

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 u003d yオプションで示されるPOSIXACLをサポートしています。

2.次に、ファイルシステム(パーティション)がACLオプションでマウントされているかどうかを確認します。

# tune2fs -l /dev/sda1 | grep acl

上記の出力から、デフォルトのマウントオプションがすでにACLをサポートしていることがわかります。有効になっていない場合は、特定のパーティション(この場合は/ dev/sda3)に対して有効にできます。

# mount -o remount,acl /
# tune2fs -o acl /dev/sda3

3.次に、次のコマンドを実行して、ユーザー tecmint への読み取り/書き込みアクセスを reports という特定のディレクトリに割り当てます。

# 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番目のgetfaclコマンドの出力からわかるように、ユーザー tecmint がディレクトリ/ shares/project1/reportsに対する読み取り/書き込み(rw)権限を持っています。

ACLリストの詳細については、次のガイドを確認してください。

  1. How to Use ACLs (Access Control Lists) to Setup Disk Quotas for Users/Groups
  2. How to Use ACLs (Access Control Lists) to Mount Network Shares

次に、ディレクトリへの読み取り/書き込みアクセスを割り当てる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の特定のディレクトリにいるユーザーに読み取り/書き込みアクセスを許可する方法を示しました。問題がある場合は、以下のコメントセクションから質問してください。