我对 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
。当然,不需要对父目录具有写访问权限,因为用户不需要在其中写入,只需r
ead 和 e x
ecute(浏览)即可。
如果mr_blue
不想授予访问权限/home/mr_blue
,则必须在系统的其他位置创建共享目录,作为两个用户都可以访问的目录的子目录。当然,可以限制只有这两个用户(和 root)才能访问该目录。如果用户愿意,还可以在其主目录中创建指向该目录的符号链接,以便于访问