I'm working with zfs-fuse as a way to provide filesystem compression on existing CentOS 5 servers. I'm dealing with a highly-compressible dataset (80%), so zfs-fuse comes in handy. I'm encountering file permission problems with the storage pools.
It appears that zfs-fuse is ignoring or only partially recognizing file permissions for non-owners.
Assuming a zfs-fuse filesystem mounted at: /app/november
comprised of files with permissions of 666 (-rw-rw-rw-) and owner "jack", I can read files and delete them as user "jill". However, I cannot write to those files or save them. Basically, everything is read-only if I'm not the owner of the files.
[jill@Vail /app/november]$ whoami
jill
[jill@Vail /app/november]$ ls -l testfile
-rw-rw-rw- 1 jack jack 27 Dec 18 12:12 testfile
[jill@Vail /app/november]$ touch testfile
touch: setting times of `testfile': Operation not permitted
[jill@Vail /app/november]$ rm testfile
[jill@Vail /app/november]$ touch testfile
[jill@Vail /app/november]$ ls -l
total 1
-rw-rw-rw- 1 jill jill 0 Dec 18 13:57 testfile
Any ideas? Is there a fix for this? I think this is a Fuse issue, as I've seen similar issues elsewhere for this and other Fuse filesystems...
The zfs-fuse
package was downloaded from the EPEL repository.
rpm info
...
fuse-2.7.4-8.el5
zfs-fuse-0.6.9_p1-6.20100709git.el5.1
Edit - The mount output is as follows, showing zpool mounts and the Fuse info.
[root@Vail ~]# mount
/dev/cciss/c0d0p2 on / type ext3 (rw,noatime)
/dev/cciss/c0d0p9 on /app type xfs (rw,noatime,logbufs=8,logbsize=256k,nobarrier)
/dev/cciss/c0d0p8 on /tmp type ext3 (rw,noatime)
/dev/cciss/c0d0p7 on /var type ext3 (rw,noatime)
/dev/cciss/c0d0p3 on /usr type ext3 (rw,noatime)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
kstat on /zfs-kstat type fuse (rw,nosuid,nodev,allow_other)
vol1 on /vol1 type fuse (rw,allow_other,default_permissions)
vol1/november on /app/november type fuse (rw,allow_other,default_permissions)
vol1/december on /app/december type fuse (rw,allow_other,default_permissions)
IMHO rights for remove file are given by rights for directory (remove is operation on the directory), not the file... And what will doing:
as a jill, when testfile is owned by jack?
Please try upgrading to a more recent fuse version. Fuse 2.8 introduced a new function (FUSE_VFS_HAS_DEFAULT_PERM) which if IIRC has to do with group permissions
Don't know the specifics any more, but I think the group perms were to slow to implement properly before that time.