On Wed, Apr 07, 2010 at 11:17:52AM -0400, Glenn Fowler wrote:
> can someone who can reproduce the failure do
>       {
>       df /tmp
>       rm -rf /tmp/command
>       umask
>       truss /bin/ksh93 -c 'mkdir -m 1777 /tmp/command'
>       } > test.out 2>&1
> and send me test.out

With 93t+ I see the sticky NOT set.  The truss shows:

umask(0)                                        = 022
mkdir("/tmp/command", 01777)                    = 0
umask(022)                                      = 0

Trussing the real /bin/mkdir I see:

umask(0)                                        = 022
umask(022)                                      = 0
mkdir("/tmp/cmd2", 01777)                       = 0
lxstat(2, "/tmp/cmd2", 0x080473E0)              = 0
chmod("/tmp/cmd2", 01777)                       = 0

It seems that the sticky bit cannot be set by the mkdir(2) system call?!
I see no indication in mkdir(2), chmod(2), umask(2), or intro(2) that
mkdir(2) cannot create directories with S_ISVTX or, for that matter,
S_ISGID (the ksh93 builtin also can't create directories with S_ISGID
set).

I think this must either be a bug in Solaris or, given the report from a
MacOS X user, perhaps a POSIX bug.  The inability to atomically create a
directory with S_ISVTX and/or S_ISGID set seems at least annoying.

Nico
-- 
_______________________________________________
ksh93-integration-discuss mailing list
ksh93-integration-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss

Reply via email to