ACL 在 ubuntu 16.04,ext3 中不起作用?

ACL 在 ubuntu 16.04,ext3 中不起作用?

我对 Linux 中的 ACL 还不熟悉(但从 Windows 中了解它们),并尝试设置对不同用户主文件夹(mr_blue)中文件夹的写入访问权限(针对 mr_green)。结果 mr_green 一直收到“权限被拒绝”错误。我很确定我已经正确设置了所有内容,但我不确定这是我的问题还是我的文件系统配置的问题......

以下是 getfacl 返回的内容:

mr_blue@vps_machine:~$ whoami
mr_blue

mr_blue@vps_machine:~$ umask
0022

mr_blue@vps_machine:~$ getfacl shared_dir
# file: shared_dir
# owner: mr_blue
# group: mr_blue
user::rwx
user:mr_green:rwx
group::r-x
group:mr_green:rwx
mask::rwx
other::---
default:user::rwx
default:user:mr_green:rwx
default:group::r-x
default:group:mr_green:rwx
default:mask::rwx
default:other::---

mr_blue@vps_machine:~$ ls -al .
...
drwxrwx---+  2 mr_blue mr_blue 4096 Dec 15 13:34 shared_dir

该文件夹的内容如下:

mr_blue@vps_machine:~$ ls -al shared_dir
total 16
drwxrwx---+  2 mr_blue mr_blue 4096 Dec 15 13:34 .
drwxr-x---  21 mr_blue mr_blue 4096 Dec 15 11:58 ..
-rw-rwxr--+  1 mr_blue mr_blue    6 Dec 15 16:42 ok.txt


mr_blue@vps_machine:~$ getfacl shared_dir/ok.txt
# file: shared_dir/ok.txt
# owner: mr_blue
# group: mr_blue
user::rw-
user:mr_green:rwx
group::r-x
group:mr_green:rwx
mask::rwx
other::r--

当我以 mr_green 身份登录时,出现权限被拒绝错误:

mr_green@vps_machine:~$ whoami
mr_green

mr_green@vps_machine:~$ umask
0022

mr_green@vps_machine:~$ cat /home/mr_blue/shared_dir/ok.txt
cat: /home/mr_blue/shared_dir/ok.txt: Permission denied

在网上查找各种问题指标,似乎它应该可以正常工作……但我不明白为什么它不行。欢迎提供任何帮助或建议!

以下是可能相关的各种配置的结果:

# mount | grep vda1
/dev/vda1 on / type ext3 (rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered)

# mount -v -o remount,acl /dev/vda1
mount: /dev/vda1 mounted on /.

# mount | grep vda1
/dev/vda1 on / type ext3 (rw,relatime,quota,usrquota,grpquota,errors=remount-ro,data=ordered)

# tune2fs -l /dev/vda1 | grep "Default mount options"
Default mount options:    user_xattr acl

# cat /etc/fstab 
...
UUID=xxx       /       ext3    defaults,acl,errors=remount-ro,rw,grpquota,usrquota    0

# cat /boot/config-4.4.0-170-generic | grep ACL
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_HFSPLUS_FS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

我注意到最后一条命令没有列出任何内容,CONFIG_EXT3...所以这可能是原因......?但我不知道是否如此,也不知道该如何进行......

答案1

即使有 ACL,用户也只有在可以访问每个路径组件的情况下才能访问目录,因此此处访问/home/mr_blue/shared_dir需要访问//home/homr/mr_blue和 的所有内容/home/mr_blue/shared_dir。当然,不需要对父目录具有写访问权限,因为用户不需要在其中写入,只需read 和 e xecute(浏览)即可。

如果mr_blue不想授予访问权限/home/mr_blue,则必须在系统的其他位置创建共享目录,作为两个用户都可以访问的目录的子目录。当然,可以限制只有这两个用户(和 root)才能访问该目录。如果用户愿意,还可以在其主目录中创建指向该目录的符号链接,以便于访问

相关内容