为 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 列表的更多信息,请查看我们的以下指南。
- 如何使用 ACL(访问控制列表)为用户/组设置磁盘配额
- 如何使用 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 中特定目录的用户授予读/写访问权限。如果有任何问题,请通过下面的评论部分提问。