rpodgorny / unionfs-fuse

union filesystem using fuse
Other
309 stars 76 forks source link

Unable to create files in subdirectories under unionfs-fuse mountpoint: `Permission Denied` #135

Open nukemiko opened 1 year ago

nukemiko commented 1 year ago

Hello! Can you help me. I'm getting what may be some unexpected behavior. While I trying to create a file in subdirectories under unionfs-fuse mountpoint, I got an error Permission Denied:

miketsu@Miketsu:/dev/pts/3 → ~ (0)
$ > unionfs /home/miketsu/__delta__=RW:/home/miketsu/__stock__=RO /home/miketsu/__mount__
miketsu@Miketsu:/dev/pts/3 → ~ (0)
$ > l __stock__ __delta__ __mount__
__delta__:
total 4.0K
-rwxr-xr-x 1 miketsu miketsu 371 Mar  5 17:48 app_install.vdf*
drwxr-xr-x 1 miketsu miketsu  18 Mar 14 23:31 this-is-another-directory-in-__delta__/

__mount__:
total 4.0K
-rwxr-xr-x 1 miketsu miketsu 371 Mar  5 17:48 app_install.vdf*
drwxr-xr-x 1 miketsu miketsu  18 Mar 14 23:31 this-is-another-directory-in-__delta__/
drwxr-xr-x 1 miketsu miketsu   0 Mar 14 23:26 this-is-directory-in-__stock__/

__stock__:
total 0
drwxr-xr-x 1 miketsu miketsu 0 Mar 14 23:26 this-is-directory-in-__stock__/
miketsu@Miketsu:/dev/pts/3 → ~ (0)
$ > touch __mount__/test1
miketsu@Miketsu:/dev/pts/3 → ~ (0)
$ > touch __mount__/this-is-directory-in-__stock__/test2
touch: cannot touch '__mount__/this-is-directory-in-__stock__/test2': Permission denied
miketsu@Miketsu:/dev/pts/3 → ~ (1)
$ > echo 'Changed' >> __mount__/this-is-another-directory-in-__delta__/test-edit 
miketsu@Miketsu:/dev/pts/3 → ~ (0)
$ >

As you can see, I am the owner of these directories and files, and their all have read and write permission. The following debug output (unionfs -d):

FUSE library version: 3.14.0
nullpath_ok: 0
Ignoring invalid max threads value 4294967295 > max (100000).
unique: 2, opcode: INIT (26), nodeid: 0, insize: 104, pid: 0
INIT: 7.38
flags=0x73fffffb
max_readahead=0x00020000
   INIT: 7.38
   flags=0x4040f039
   max_readahead=0x00020000
   max_write=0x00100000
   max_background=0
   congestion_threshold=0
   time_gran=1
   unique: 2, success, outsize: 80
unique: 4, opcode: GETATTR (3), nodeid: 1, insize: 56, pid: 14346
getattr[NULL] /
   unique: 4, success, outsize: 120
unique: 6, opcode: LOOKUP (1), nodeid: 1, insize: 71, pid: 14346
LOOKUP /this-is-directory-in-__stock__
getattr[NULL] /this-is-directory-in-__stock__
   NODEID: 2
   unique: 6, success, outsize: 144
unique: 8, opcode: LOOKUP (1), nodeid: 2, insize: 46, pid: 14346
LOOKUP /this-is-directory-in-__stock__/test2
getattr[NULL] /this-is-directory-in-__stock__/test2
   unique: 8, error: -2 (No such file or directory), outsize: 16
unique: 10, opcode: CREATE (35), nodeid: 2, insize: 62, pid: 14346
create flags: 0x8841 /this-is-directory-in-__stock__/test2 0100644 umask=0022
   unique: 10, error: -13 (Permission denied), outsize: 16
unique: 12, opcode: LOOKUP (1), nodeid: 2, insize: 46, pid: 14346
LOOKUP /this-is-directory-in-__stock__/test2
getattr[NULL] /this-is-directory-in-__stock__/test2
   unique: 12, error: -2 (No such file or directory), outsize: 16

Is this a bug? Is there any solution for this?

xandaaah commented 3 months ago

You set stock to use read only. Just change the RO to an RW next to the path of stock in the mount command and it should work just fine.