I was just reading about the effect of Set-user-Id and Set-group-Id bits
on file creation, as they seem like they would be useful for me.
Unfortunately, most of the documentation I have managed to find is
related to GNU systems, and this could easily be different in OpenBSD.
https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html

It appears that they have no effect on file creation. Rather, they a
only "on execution", as specified in the manual.
https://man.openbsd.org/chmod

FreeBSD similarly seems to ignore these settings.
https://www.freebsd.org/doc/handbook/permissions.html

Perhaps this is why there is only GNU documentation on this feature;
it seems that it does not exist in OpenBSD. Am I correct in my
conclusion that files created in OpenBSD are always owned by the creator
and group-owned by the directory's group? That is, a GNU system would
mimic this behaviour when u-s,g+s (6000) is set on the directory?

Suppose, for example, I run this as root.

  mkdir /test
  chown root:wheel /test
  chmod a+rwx,u-s,g-s /test

And then this as tlevine

  touch /test/a

This is the result.

  $ ls -lhd /test{,/a}
  drwxrwxrwx  2 root     wheel   512B Jul  1 12:46 /test
  -rw-r--r--  1 tlevine  wheel     0B Jul  1 12:46 /test/a

I repeat the process, except that I set the user and group id this time. As 
root,

  rm -R /test
  mkdir /test
  chown root:wheel /test
  chmod a+rwx,u-s,g-s /test

As tlevine,

  touch /test/a

The resulting /test/a has the same owner and group as before.

  $ ls -lhd /test{,/a}
  drwsrwsrwx  2 root     wheel   512B Jul  1 12:48 /test
  -rw-r--r--  1 tlevine  wheel     0B Jul  1 12:48 /test/a

Very conveniently for me, this behaviour (u-s,g+s in GNU) is the mode
that I want. Perhaps this is by design.

Reply via email to