From: James R. <jr...@re...> - 2012-02-09 03:18:18
|
Hi all, I'm trying to test my filesystem for conformance to POSIX standards, however I'm encountering some issues when doing so. Here is an example report of running the mkdir/05.t test against the filesystem: ok 1 ok 2 ok 3 not ok 4 - -u 65534 -g 65534 mkdir fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 0755 not ok 5 - -u 65534 -g 65534 rmdir fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 ok 6 ok 7 ok 8 not ok 9 - -u 65534 -g 65534 mkdir fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 0755 not ok 10 - -u 65534 -g 65534 rmdir fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 ok 11 ok 12 Failed 4/12 subtests Test Summary Report ------------------- /home/james/Projects/AppTools/appfs/../fstest/tests/mkdir/05.t (Wstat: 0 Tests: 12 Failed: 4) Failed tests: 4-5, 9-10 Files=1, Tests=12, 8 wallclock secs ( 0.12 usr 0.06 sys + 0.54 cusr 1.56 csys = 2.28 CPU) Result: FAIL Note that it fails only the tests that change the UID / GID (this test is being run as root and the filesystem is mounted as root). I am supplying the filesystem with no mount options (so neither default_permissions nor allow_other) however the mkdir and rmdir requests never hit my user code. Is there something I'm not understanding about FUSE that's going to prevent this from working correctly (is it even possible to fully test a FUSE filesystem for POSIX compliance given the security requirements)? Regards, James Rhodes. Redpoint Software http://about.me/james.rhodes |
From: James R. <jr...@re...> - 2012-02-09 03:34:58
|
Hi all, I just thought it might be useful to also include a list of operations that the filesystem test suite is actually running. The mkdir/05.t scripts is as such (where nX is a generated unique filename): cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} In this case, expect is a function that underneath directly performs the requested filesystem operation and checks the result of the operation. The -u and -g parameters cause it to setuid / setgid before performing the operation. Regards, James Rhodes. Redpoint Software http://about.me/james.rhodes On Thu, Feb 9, 2012 at 2:17 PM, James Rhodes < jr...@re...> wrote: > Hi all, > > I'm trying to test my filesystem for conformance to POSIX standards, > however I'm encountering some issues when doing so. > > Here is an example report of running the mkdir/05.t test against the > filesystem: > > ok 1 > ok 2 > ok 3 > not ok 4 > - -u 65534 -g 65534 mkdir > fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 > 0755 > not ok 5 > - -u 65534 -g 65534 rmdir > fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 > ok 6 > ok 7 > ok 8 > not ok 9 > - -u 65534 -g 65534 mkdir > fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 > 0755 > not ok 10 > - -u 65534 -g 65534 rmdir > fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 > ok 11 > ok 12 > Failed 4/12 subtests > > Test Summary Report > ------------------- > /home/james/Projects/AppTools/appfs/../fstest/tests/mkdir/05.t (Wstat: 0 > Tests: 12 Failed: 4) > Failed tests: 4-5, 9-10 > Files=1, Tests=12, 8 wallclock secs ( 0.12 usr 0.06 sys + 0.54 cusr > 1.56 csys = 2.28 CPU) > Result: FAIL > > Note that it fails only the tests that change the UID / GID (this test is > being run as root and the filesystem is mounted as root). > > I am supplying the filesystem with no mount options (so neither > default_permissions nor allow_other) however the mkdir and rmdir requests > never hit my user code. Is there something I'm not understanding about > FUSE that's going to prevent this from working correctly (is it even > possible to fully test a FUSE filesystem for POSIX compliance given the > security requirements)? > > Regards, James Rhodes. > Redpoint Software > > http://about.me/james.rhodes > > > |
From: James R. <jr...@re...> - 2012-02-09 06:01:50
|
Hi everyone, It seems that the options "allow_other,default_permissions,use_ino,attr_timeout=0,entry_timeout=0" fix this issue. Regards, James Rhodes. Redpoint Software http://about.me/james.rhodes On Thu, Feb 9, 2012 at 2:34 PM, James Rhodes < jr...@re...> wrote: > Hi all, > > I just thought it might be useful to also include a list of operations > that the filesystem test suite is actually running. The mkdir/05.t scripts > is as such (where nX is a generated unique filename): > > cd ${n0} > expect 0 mkdir ${n1} 0755 > expect 0 chown ${n1} 65534 65534 > expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 > expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} > expect 0 chmod ${n1} 0644 > expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 > expect 0 chmod ${n1} 0755 > expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 > expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} > expect 0 rmdir ${n1} > cd ${cdir} > expect 0 rmdir ${n0} > > In this case, expect is a function that underneath directly performs the > requested filesystem operation and checks the result of the operation. The > -u and -g parameters cause it to setuid / setgid before performing the > operation. > > Regards, James Rhodes. > Redpoint Software > > http://about.me/james.rhodes > > > > > On Thu, Feb 9, 2012 at 2:17 PM, James Rhodes < > jr...@re...> wrote: > >> Hi all, >> >> I'm trying to test my filesystem for conformance to POSIX standards, >> however I'm encountering some issues when doing so. >> >> Here is an example report of running the mkdir/05.t test against the >> filesystem: >> >> ok 1 >> ok 2 >> ok 3 >> not ok 4 >> - -u 65534 -g 65534 mkdir >> fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 >> 0755 >> not ok 5 >> - -u 65534 -g 65534 rmdir >> fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 >> ok 6 >> ok 7 >> ok 8 >> not ok 9 >> - -u 65534 -g 65534 mkdir >> fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 >> 0755 >> not ok 10 >> - -u 65534 -g 65534 rmdir >> fstest_2d073a008fe0cefa4b6b60fa0a939995/fstest_bbefd481ec972e7d9e1ee36e7b804ff7 >> ok 11 >> ok 12 >> Failed 4/12 subtests >> >> Test Summary Report >> ------------------- >> /home/james/Projects/AppTools/appfs/../fstest/tests/mkdir/05.t (Wstat: 0 >> Tests: 12 Failed: 4) >> Failed tests: 4-5, 9-10 >> Files=1, Tests=12, 8 wallclock secs ( 0.12 usr 0.06 sys + 0.54 cusr >> 1.56 csys = 2.28 CPU) >> Result: FAIL >> >> Note that it fails only the tests that change the UID / GID (this test is >> being run as root and the filesystem is mounted as root). >> >> I am supplying the filesystem with no mount options (so neither >> default_permissions nor allow_other) however the mkdir and rmdir requests >> never hit my user code. Is there something I'm not understanding about >> FUSE that's going to prevent this from working correctly (is it even >> possible to fully test a FUSE filesystem for POSIX compliance given the >> security requirements)? >> >> Regards, James Rhodes. >> Redpoint Software >> >> http://about.me/james.rhodes >> >> >> > |
From: Jean-Pierre A. <jea...@wa...> - 2012-02-09 08:21:33
|
Hi again, James Rhodes wrote: > Hi everyone, > > It seems that the options > "allow_other,default_permissions,use_ino,attr_timeout=0,entry_timeout=0" > fix this issue. default_permissions is needed if you do not check the permissions in the file system driver (which is a better option for a network file system). attr_timeout=0 and entry_timeout=0 are required at the high level interface to fuse, to manage hard links correctly. Sample test : rm -rf dir mkdir dir echo first > dir/file1 ln dir/file1 dir/file2 echo more >> dir/file1 ls -li dir sleep 1 ls -li dir This results in the following : root@dimension ntfslowprof]# ./testtwin.sh total 1 86 -rw-r--r-- 2 root root 11 Feb 9 08:35 file1 86 -rw-r--r-- 2 root root 6 Feb 9 08:35 file2 total 1 86 -rw-r--r-- 2 root root 11 Feb 9 08:35 file1 86 -rw-r--r-- 2 root root 11 Feb 9 08:35 file2 To escape this issue, you can use the low level interface (and use_ino, so that the files have a single reference). Regards Jean-Pierre |
From: Jean-Pierre A. <jea...@wa...> - 2012-02-09 07:47:23
|
Hi James, James Rhodes wrote: > Hi all, > > I'm trying to test my filesystem for conformance to POSIX standards, > however I'm encountering some issues when doing so. > [...] > (is it even > possible to fully test a FUSE filesystem for POSIX compliance given the > security requirements)? > ntfs-3g passes all the tests, both at the fuse high level and low level, both with permissions checked by kernel and checked by the file system. However currently the Posix ACLs cannot be checked by kernel without a specific patch to fuse. Regards Jean-Pierre |