The key point I picked up is that it is up to the client to do the
right thing wrt directories' group and setgid bit. Despite the unusual
ls output on all systems, IRIX was the one that was behaving worse... or
so I thought.
The terms SYSV and BSD semantics were offered. From what I gather and
through testing:
BSD (tru64): directories inherit their group from the parent
regardless of the setgid bit, which is not inherited by
children.
SYSV (irix,linux): directories get the login group of the creator
unless the setgid bit is set on the parent, in this case the
group is set to that of the parent and the setgid bit is also
set.
Since it is up to the client to set the group and mode correctly, IRIX
was behaving as it's semantics specify. The prgid mount option mentioned
by Bob Vickers causes IRIX to set the group of directories in the BSD
manner. So I set this option in our autofs maps and that seems to be
a reasonable fix.
Linux on the other hand masks the setgid bit and leaves it up to the
server to set. Since tru64 does not propogate the bit, it is lost. But
I think that since BSD semantics specify that the directory inherit it's
parent's group, the group is set correctly.
What a mess! But I know more than I did when I started, and the prgid
option has solved the worst of the problems.
Thanks to:
system administration account
Bård Tesaker
Bob Vickers
Steve
On Tue, Feb 05, 2002 at 09:06:35PM -0500, Steve Feehan wrote:
> I have a Tru64 5.1a system that exports an AdvFS via NFS. The filesystem
> is mounted by Linux and IRIX clients.
>
> First, it seems that Tru64 handles the setgid bit on directories somewhat
> strangely. If I create a directory and set the setgid bit, then do an ls:
>
> tru64> mkdir foo
> tru64> chgrp admins foo
> tru64> chmod g+s foo
> tru64> ls -ld foo
> drwxrwsr-x 2 sfeehan admins 8192 Feb 5 20:52 foo
>
> ok, so far, so good... now I do this:
>
> tru64> cd foo
> tru64> mkdir bar
> tru64> ls -ld bar
> drwxrwxr-x 2 sfeehan admins 8192 Feb 5 20:53 bar
>
> The group of the directory bar/ was set correctly, but where is the 's'
> in the group execute bit? Now do:
>
> tru64> cd bar
> tru64> mkdir baz
> tru64> ls -ld baz
> drwxrwxr-x 2 sfeehan admins 8192 Feb 5 20:54 baz/
>
> So the setgid bit is being inherited by new directories, but it doesn't
> show up in the mode. Why?
>
> Now the really bad part... on Linux it is the same as Tru64, but on Irix
> we get:
>
> irix> ls -ld foo
> drwxrwsr-x 3 sfeehan admins 8192 Feb 5 20:53 foo/
> irix> cd foo
> irix> mkdir buz
> irix> ls -ld buz
> drwxrwxr-x 2 sfeehan admins 8192 Feb 5 20:58 buz
>
> Looks ok... well, the 's' is missing from the mode, but it's missing on
> tru64 and linux as well...
>
> irix> cd buz
> irix> mkdir bad
> irix> ls -ld bad
> drwxrwxr-x 2 sfeehan sfeehan 8192 Feb 5 21:00 bad
>
> The setgid bit was lost on buz/ so bad/ is created with my login group.
> This is really evil, becuase a) it's unexpected behaviour and b) there
> is no way to tell from the ls output what the modes of a directory are.
>
> Has anyone else seen this before? Am I missing something really simple?
>
> Thanks in advance.
>
> --
> Steve Feehan
> Unix Systems Administrator
> Structural Biology and Bioinformatics Group
> University of Vermont
--
Steve Feehan
Unix Systems Administrator
Structural Biology and Bioinformatics Group
University of Vermont
Received on Wed Feb 06 2002 - 18:32:03 NZDT