rpodgorny / unionfs-fuse

union filesystem using fuse
Other
309 stars 76 forks source link

add access() support #62

Closed ghost closed 7 years ago

ghost commented 7 years ago

access() is not implemented and return false positives for commands like: test -x file_without_execute

bsbernd commented 7 years ago

Could you please explain first how you run into it? access() is not called if the fuse option default_permissions() is specified. But default_permissions() is always set, unless the unionfs-fuse option "-o relaxed_permissions" is given and also only if not run as root. And with "-o relaxed_permissions" and as user it also should not matter, as the underlying file system should catch permissions issue (although I was not entirely sure about corner cases and therefore made it optional).

Thanks, Bernd

ghost commented 7 years ago
unionfs -ocow,relaxed_permissions rw=RW:ro=RO u
touch u/x
test -x u/x && echo x

Running with -d -f shows that access is not implemented.

I'm interested in running something like non-root chroot against ro dir and keep all the changes in rw dir (even when the files touched are owned by root - in ro). Using cow+relaxed_permissions is the only way, from what I see.

It is possible that this case is not triggered on every machine (kernel, fs, etc.). I might have limited access on one machine which didn't triggered this case, but this is not so important, as I have full access to one which always triggers this problem.

Tell me if you need logs or other details.

bsbernd commented 7 years ago

Hmm, ok, this is a bit cosmetic.

rpodgorny commented 7 years ago

hi. would you be able to also write a test for that?

ghost commented 7 years ago

I've added a test case, but I didn't know how to update this pull request, so I've made another one: #67.

rpodgorny commented 7 years ago

PRs are automatically updated as you update your branch so next time just commit keep committing and it will be fine...