网站搜索

为 Linux 中特定目录的用户分配读/写访问权限


在上一篇文章中,我们向您展示了如何在 Linux 中创建共享目录。在这里,我们将描述如何授予用户对 Linux 中特定目录的读/写访问权限。

有两种可能的方法可以执行此操作:第一种是使用 ACL(访问控制列表),第二种是创建用户组来管理文件权限,如下所述。

出于本教程的目的,我们将使用以下设置。

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,并且内核支持 POSIX ACL,如 CONFIG_EXT4_FS_POSIX_ACL=y 选项所示。

2.接下来,检查文件系统(分区)是否使用ACL选项挂载:

tune2fs -l /dev/sda1 | grep acl

从上面的输出中,我们可以看到默认挂载选项已经支持ACL。如果未启用,您可以为特定分区启用它(在本例中为 /dev/sda3):

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

3. 现在,通过运行以下命令为用户 howtoing 分配对名为 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

在上面的屏幕截图中,用户 howtoing 现在对目录 /shares/project1/reports 具有读/写 (rw) 权限,如第二个 的输出所示getfacl 命令。

有关 ACL 列表的更多信息,请查看我们的以下指南。

  1. 如何使用 ACL(访问控制列表)为用户/组设置磁盘配额
  2. 如何使用 ACL(访问控制列表)挂载网络共享

现在让我们看看第二种分配目录读/写访问权限的方法。

使用组授予用户对目录的读/写访问权限

1.如果用户已有默认用户组(通常与用户名同名),只需更改目录的组所有者即可。

chgrp tecmint /shares/project1/reports

或者,为多个用户创建一个新组(将被授予对特定目录的读/写权限),如下所示。但是,这将创建一个共享目录:

groupadd projects

2. 然后将用户 howtoing 添加到组 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 中特定目录的用户授予读/写访问权限。如果有任何问题,请通过下面的评论部分提问。