Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.
> > You can get fairly verbose output by tracing the server, where > > it'll show you the searching logic (including what groups the > > user is in). > > I'll try this and post the results with a working (<=2.5.01.1910) > and non-working (>2.5.01.1910) version. The traces from build 1910 and 1969 look pretty much identical until where the problem comes up. I've only included the part that's interesting. If you look at the traces side by side it seems that where build 1910 does verify_perm(D:/cvsrepo/acltest,test.txt,write,(null),(null)) build 1969 does verify_perm(D:/cvsrepo/,test.txt,write,(null),(null)) instead. So it seems that the subdirectory is dropped from the permission check and as a result, only the top-level permissions are effective. Build 1910: ----- 15:09:08: S -> verify_valid_name(g-dev) 15:09:08: S -> matched ACL user=g-dev, branch=_default_, merge= 15:09:08: S -> calculated ACL priority is 0 15:09:08: S -> new max priority is 0 15:09:08: S -> matched ACL user=, branch=_default_, merge= 15:09:08: S -> calculated ACL priority is 0 15:09:08: S -> user_state = 0, group_state = 1 15:09:08: S -> fileattr_startdir(D:/cvsrepo/acltest) 15:09:08: S -> map_filename(D:/cvsrepo/acltest,test.txt) 15:09:08: S -> map_repository(D:/cvsrepo/acltest/test.txt) 15:09:08: S -> lookup_module2(acltest/test.txt,2) 15:09:08: S -> RCS_parse(test.txt,D:/cvsrepo/acltest) 15:09:08: S -> rcsbuf_open(D:/cvsrepo/acltest/test.txt,v) 15:09:08: S -> normalize_path(D:/cvsrepo/acltest/test.txt,v) 15:09:08: S -> ...returns D:/cvsrepo/acltest/test.txt,v 15:09:08: S -> rcsbuf_fill(00C65868,00000000,00000000,00000000) 15:09:08: S -> rcsbuf_fill: expanded to 8192l 15:09:08: S -> verify_access ,D:/cvsrepo/acltest,(null) 15:09:08: S -> verify_perm(D:/cvsrepo/acltest,test.txt,write,(null),(null)) 15:09:08: S -> verify_owner(D:/cvsrepo/acltest) 15:09:08: S -> cache_directory_permissions(D:/cvsrepo/acltest) 15:09:08: S -> ACL lookup on directory D:/cvsrepo/acltest 15:09:08: S -> verify_acl(write,HEAD,(null)) 15:09:08: S -> verify_valid_name(g-dev) 15:09:08: S -> matched ACL user=g-dev, branch=_default_, merge= 15:09:08: S -> calculated ACL priority is 0 15:09:08: S -> new max priority is 0 15:09:08: S -> matched ACL user=, branch=_default_, merge= 15:09:08: S -> calculated ACL priority is 0 15:09:08: S -> user_state = 0, group_state = 1 15:09:08: S -> Classify_File (test.txt) 15:09:08: S -> RCS_getversion((null),(null),1) 15:09:08: S -> wnt_stat(test.txt) 15:09:08: S -> _statcore(00000000,test.txt) 15:09:08: S -> Trying GetFileAttributesEx.... ----- Build 1969: ----- 15:01:12: S -> verify_valid_name(g-dev) 15:01:12: S -> matched ACL user=g-dev, branch=_default_, merge= 15:01:12: S -> calculated ACL priority is 0 15:01:12: S -> new max priority is 0 15:01:12: S -> matched ACL user=, branch=_default_, merge= 15:01:12: S -> calculated ACL priority is 0 15:01:12: S -> user_state = 0, group_state = 1 15:01:12: S -> fileattr_startdir(D:/cvsrepo/acltest) 15:01:12: S -> map_filename(D:/cvsrepo/acltest,test.txt) 15:01:12: S -> map_repository(D:/cvsrepo/acltest/test.txt) 15:01:12: S -> lookup_module2(acltest/test.txt,2) 15:01:12: S -> RCS_parse(test.txt,D:/cvsrepo/acltest) 15:01:12: S -> rcsbuf_open(D:/cvsrepo/acltest/test.txt,v) 15:01:12: S -> normalize_path(D:/cvsrepo/acltest/test.txt,v) 15:01:12: S -> ...returns D:/cvsrepo/acltest/test.txt,v 15:01:12: S -> rcsbuf_fill(00C85870,00000000,00000000,00000000) 15:01:12: S -> rcsbuf_fill: expanded to 8192l 15:01:12: S -> verify_access ,D:/cvsrepo/acltest,(null) 15:01:12: S -> verify_perm(D:/cvsrepo/,test.txt,write,(null),(null)) 15:01:12: S -> verify_owner(D:/cvsrepo/) 15:01:12: S -> cache_directory_permissions(D:/cvsrepo/) 15:01:12: S -> fileattr_read(D:/cvsrepo/) 15:01:12: S -> ACL lookup on directory D:/cvsrepo/ 15:01:12: S -> verify_acl(write,HEAD,(null)) 15:01:12: S -> verify_valid_name(g-adm) 15:01:12: S -> matched ACL user=, branch=_default_, merge= 15:01:12: S -> calculated ACL priority is 0 15:01:12: S -> new max priority is 0 15:01:12: S -> user_state = 0, group_state = -1 cvs server: User EMEA\jah is unable to write to /test.txt cvs server: Only admin group has access here 15:01:12: S -> fileattr_write() 15:01:12: S -> fileattr_free() 15:01:12: S -> close_directory() cvs [server aborted]: correct above errors first! ----- - Jari