7 Jun 16:57
Re: Netatalk 2.1.1 Permission
Hiroyuki Sato <hiroysato <at> gmail.com>
2010-06-07 14:57:14 GMT
2010-06-07 14:57:14 GMT
Thanks HAT and Frank
Basically, dperm worked fine on netatalk 2.0.5 but 2.1.1 does not work fine.
Here is today's last trace.
I understand dperm depends on parent permission.
If parent of directory permission is 775, the child will be 775.
However, It seems modified by another place.
Here is mkdir results parent parmission was drwxrwxr-x
:DEFAULT: options:upriv,usedots dperm:0775 fperm:0664 maccharset:MAC_JAPANESE ea:sys
~
/local/shared shared
/local/timemachines TimeMachines
I don't know where is but the result is the following
drwxrwxr-x 4 owner group 4096 Jun 7 23:49 .
drwxr-sr-x 3 owner group 4096 Jun 7 23:49 new folder
/* ----------------
return access right and inode of path parent directory
*/
static int ad_mode_st(const char *path, int *mode, struct stat *stbuf)
{
if (*mode == 0) {
return -1;
}
if (ad_stat(path, stbuf) != 0) {
*mode &= DEFMASK;
return -1;
}
LOG(log_debug, logtype_default, "ad_mode_st: mode = %o path = %s, stbuf->st_mode = %o",
*mode, path, stbuf->st_mode);
*mode &= stbuf->st_mode;
LOG(log_debug, logtype_default, "mode: mode = %o",*mode);
return 0;
}
/*
* Use mkdir() with mode bits taken from ad_mode().
*/
int
ad_mkdir( const char *path, int mode)
{
int ret;
int st_invalid;
struct stat stbuf;
struct stat stbuf2;
LOG(log_debug, logtype_default, "ad_mkdir: creating ad-directory '%s/%s' with mode %04o",
getcwdpath(), path, mode);
st_invalid = ad_mode_st(path, &mode, &stbuf);
LOG(log_debug, logtype_default, "ad_mkdir (before mkdir): creating ad-directory '%s/%s' with mode %04o",
getcwdpath(), path, mode);
ret = mkdir( path, mode );
lstat( path, &stbuf2 );
LOG(log_debug, logtype_default, "mkdir result: %s with mode %04o",
path, stbuf2.st_mode);
if (ret || st_invalid)
return ret;
ad_chown(path, &stbuf);
return ret;
}
[root <at> elephant2 gfs]# cat /tmp/afpd.24075.vuT0df
Jun 07 23:49:22.050034 afpd[24075] {logger.c:390} (D5:Logger): Setup file logging: type: Default, level: LOG_MAXDEBUG, file: /tmp/afpd.24075.XXXXXX
Jun 07 23:49:22.050126 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.050187 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:20, name:'new folder', f/d:e93f/a33f) {cwd: /local/shared/afp}
Jun 07 23:49:22.050214 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFPERR_NOOBJ
Jun 07 23:49:22.050952 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.050990 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:20, name:'new folder', f/d:e93f/a33f) {cwd: /local/shared/afp}
Jun 07 23:49:22.051014 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFPERR_NOOBJ
Jun 07 23:49:22.051947 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_CREATEDIR
Jun 07 23:49:22.051985 afpd[24075] {ad_open.c:1089} (D5:Default): ad_mkdir: creating ad-directory '/local/shared/afp/new folder' with mode 2777
Jun 07 23:49:22.052009 afpd[24075] {ad_open.c:1017} (D5:Default): p: .
Jun 07 23:49:22.052034 afpd[24075] {ad_open.c:1060} (D5:Default): ad_mode_st: mode = 2777 path = new folder, stbuf->st_mode = 40775
Jun 07 23:49:22.052056 afpd[24075] {ad_open.c:1062} (D5:Default): mode: mode = 775
Jun 07 23:49:22.052082 afpd[24075] {ad_open.c:1093} (D5:Default): ad_mkdir (before mkdir): creating ad-directory '/local/shared/afp/new folder' with mode 0775
Jun 07 23:49:22.052152 afpd[24075] {ad_open.c:1097} (D5:Default): mkdir result: new folder with mode 40775
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
It seems 775
Jun 07 23:49:22.052191 afpd[24075] {cnid_dbd.c:550} (D5:CNID): cnid_dbd_add: CNID: 20, name: 'new folder', inode: 0x2e3000f, type: 1 (0=file, 1=dir)
Jun 07 23:49:22.052215 afpd[24075] {cnid_dbd.c:342} (D7:CNID): transmit: BEGIN
Jun 07 23:49:22.052237 afpd[24075] {cnid_dbd.c:302} (D10:CNID): dbd_rpc: BEGIN
Jun 07 23:49:22.052259 afpd[24075] {cnid_dbd.c:216} (D10:CNID): send_packet: BEGIN
Jun 07 23:49:22.052282 afpd[24075] {cnid_dbd.c:146} (D10:CNID): write_vec: request to write 67 bytes
Jun 07 23:49:22.052324 afpd[24075] {cnid_dbd.c:173} (D10:CNID): write_vec: wrote 67 bytes
Jun 07 23:49:22.052348 afpd[24075] {cnid_dbd.c:242} (D10:CNID): send_packet: OK
Jun 07 23:49:22.052597 afpd[24075] {cnid_dbd.c:331} (D10:CNID): dbd_rpc: END
Jun 07 23:49:22.052624 afpd[24075] {cnid_dbd.c:388} (D7:CNID): transmit: END OK
Jun 07 23:49:22.052646 afpd[24075] {cnid_dbd.c:561} (D5:CNID): cnid_dbd_add: got CNID: 96
Jun 07 23:49:22.052694 afpd[24075] {ad_open.c:1396} (D5:Default): ad_open: creating new adouble file: /local/shared/afp/new folder/./.AppleDouble/.Parent
Jun 07 23:49:22.052718 afpd[24075] {ad_open.c:1017} (D5:Default): p: ./.AppleDouble
Jun 07 23:49:22.052747 afpd[24075] {ad_open.c:1089} (D5:Default): ad_mkdir: creating ad-directory '/local/shared/afp/new folder/./.AppleDouble' with mode 0777
Jun 07 23:49:22.052770 afpd[24075] {ad_open.c:1017} (D5:Default): p: .
Jun 07 23:49:22.052795 afpd[24075] {ad_open.c:1060} (D5:Default): ad_mode_st: mode = 777 path = ./.AppleDouble, stbuf->st_mode = 40775
Jun 07 23:49:22.052817 afpd[24075] {ad_open.c:1062} (D5:Default): mode: mode = 775
Jun 07 23:49:22.052842 afpd[24075] {ad_open.c:1093} (D5:Default): ad_mkdir (before mkdir): creating ad-directory '/local/shared/afp/new folder/./.AppleDouble' with mode 0775
Jun 07 23:49:22.052896 afpd[24075] {ad_open.c:1097} (D5:Default): mkdir result: ./.AppleDouble with mode 40775
Jun 07 23:49:22.052919 afpd[24075] {ad_open.c:1017} (D5:Default): p: ./.AppleDouble
Jun 07 23:49:22.052944 afpd[24075] {ad_open.c:1060} (D5:Default): ad_mode_st: mode = 666 path = ./.AppleDouble/.Parent, stbuf->st_mode = 40775
Jun 07 23:49:22.052966 afpd[24075] {ad_open.c:1062} (D5:Default): mode: mode = 664
Jun 07 23:49:22.053067 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_CREATEDIR -> AFP_OK
Jun 07 23:49:22.053950 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.053986 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:20, name:'.', f/d:e93f/a33f) {cwd: /local/shared/afp/new folder}
Jun 07 23:49:22.054032 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether './.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.054080 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFP_OK
Jun 07 23:49:22.054944 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_SETDIRPARAM
Jun 07 23:49:22.054999 afpd[24075] {unix.c:343} (D5:AFPDaemon): setdirunixmode('/local/shared/afp/new folder/.', mode:40775) {v_dperm:0775}
Jun 07 23:49:22.055062 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether './.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.055169 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether './.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.055218 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_SETDIRPARAM -> AFP_OK
Jun 07 23:49:22.055950 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.055992 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:20, name:'.', f/d:e93f/a33f) {cwd: /local/shared/afp/new folder}
Jun 07 23:49:22.056034 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether './.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.056063 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFP_OK
Jun 07 23:49:22.056943 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.056982 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:2, name:'.', f/d:e93f/a33f) {cwd: /local/shared/afp}
Jun 07 23:49:22.057024 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether './.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.057068 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFP_OK
Jun 07 23:49:22.067933 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETVOLPARAM
Jun 07 23:49:22.067965 afpd[24075] {volume.c:1426} (D5:AFPDaemon): getvolparams: Volume 'shared'
Jun 07 23:49:22.067997 afpd[24075] {ad_open.c:1396} (D5:Default): ad_open: creating new adouble file: /local/shared/afp//local/shared/.AppleDouble/.Parent
Jun 07 23:49:22.068020 afpd[24075] {ad_open.c:1017} (D5:Default): p: /local/shared/.AppleDouble
Jun 07 23:49:22.068051 afpd[24075] {ad_open.c:1089} (D5:Default): ad_mkdir: creating ad-directory '/local/shared/afp//local/shared/.AppleDouble' with mode 0777
Jun 07 23:49:22.068075 afpd[24075] {ad_open.c:1017} (D5:Default): p: /local/shared
Jun 07 23:49:22.068101 afpd[24075] {ad_open.c:1060} (D5:Default): ad_mode_st: mode = 777 path = /local/shared/.AppleDouble, stbuf->st_mode = 40755
Jun 07 23:49:22.068123 afpd[24075] {ad_open.c:1062} (D5:Default): mode: mode = 755
Jun 07 23:49:22.068148 afpd[24075] {ad_open.c:1093} (D5:Default): ad_mkdir (before mkdir): creating ad-directory '/local/shared/afp//local/shared/.AppleDouble' with mode 0755
Jun 07 23:49:22.068180 afpd[24075] {ad_open.c:1097} (D5:Default): mkdir result: /local/shared/.AppleDouble with mode 0344
Jun 07 23:49:22.068586 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETVOLPARAM -> AFP_OK
Jun 07 23:49:22.069929 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.069967 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:96, name:'.', f/d:e92f/a12f, rc:20, i:1, max:5280)
Jun 07 23:49:22.070007 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFPERR_NOOBJ
Jun 07 23:49:22.073926 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.073989 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:20, name:'.', f/d:e92f/a12f, rc:20, i:1, max:5280)
Jun 07 23:49:22.074049 afpd[24075] {ad_open.c:228} (D10:Default): ad_update: checking whether 'new folder/.AppleDouble/.Parent' needs an upgrade.
Jun 07 23:49:22.074077 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFP_OK
Jun 07 23:49:22.075924 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.075953 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:20, name:'.', f/d:e92f/a12f, rc:19, i:2, max:5280)
Jun 07 23:49:22.075977 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFPERR_NOOBJ
Jun 07 23:49:22.076931 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_GETFLDRPARAM
Jun 07 23:49:22.076969 afpd[24075] {filedir.c:175} (D5:AFPDaemon): getfildirparams(vid:2, did:20, name:'.DS_Store', f/d:e93f/a33f) {cwd: /local/shared/afp}
Jun 07 23:49:22.076993 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETFLDRPARAM -> AFPERR_NOOBJ
Jun 07 23:49:22.078923 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.078959 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:96, name:'.', f/d:e92f/a12f, rc:20, i:1, max:5280)
Jun 07 23:49:22.078999 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFPERR_NOOBJ
Jun 07 23:49:22.079931 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.079959 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:96, name:'.', f/d:e92f/a12f, rc:20, i:1, max:5280)
Jun 07 23:49:22.079996 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFPERR_NOOBJ
Jun 07 23:49:22.080929 afpd[24075] {afp_dsi.c:437} (D5:AFPDaemon): <== Start AFP command: AFP_ENUMERATE_EXT2
Jun 07 23:49:22.080958 afpd[24075] {enumerate.c:270} (D5:AFPDaemon): enumerate(vid:2, did:96, name:'.', f/d:e92f/a12f, rc:20, i:1, max:5280)
Jun 07 23:49:22.080995 afpd[24075] {afp_dsi.c:444} (D5:AFPDaemon): ==> Finished AFP command: AFP_ENUMERATE_EXT2 -> AFPERR_NOOBJ
Jun 07 23:49:26.529060 afpd[24075] {cnid_dbd.c:500} (D5:CNID): closing database connection for volume '/local/shared'
Jun 07 23:49:26.533430 afpd[24075] {afp_dsi.c:85} (I:AFPDaemon): 2.43KB read, 3.36KB written
Jun 07 23:49:26.533509 afpd[24075] {afp_dsi.c:111} (I:AFPDaemon): Connection terminated
[root <at> elephant2 gfs]#
2010/6/7 Frank Lahm <franklahm <at> googlemail.com>
2010/6/7 Hiroyuki Sato <hiroysato <at> gmail.com>:
> Thank you HAT and Frank.We're applying (logical and) the parents mode to the new folder. The
> I deleted perm and umask option. try again.
> :DEFAULT: options:upriv,usedots dperm:0775 fperm:0664
> maccharset:MAC_JAPANESE ea:sys
> ~
> /local/shared shared
> /local/timemachines TimeMachines
> The result does not group writable.
> /local/shared/afp is drwxr-xr-x
> /local/shared/afp/new folder is drwxr-xr-x
> Jun 07 23:01:40.066438 afpd[443] {afp_dsi.c:437} (D5:AFPDaemon): <== Start
> AFP command: AFP_CREATEDIR
> Jun 07 23:01:40.066475 afpd[443] {ad_open.c:1087} (D5:Default): ad_mkdir:
> creating ad-directory '/local/shared/afp/new folder' with mode 2777
> Jun 07 23:01:40.066501 afpd[443] {ad_open.c:1059} (D5:Default): ad_mode_st:
> mode = 2777 path = new folder, stbuf->st_mode = 40755
parent happens to be 0755, so...
Is it a bug or a feature?
Cheers, F!
------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________ Netatalk-admins mailing list Netatalk-admins <at> lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/netatalk-admins
RSS Feed