pw keeps setting /etc/group to 0600
Ryan Stone
rysto32 at gmail.com
Sat Nov 17 16:20:22 UTC 2012
Wow. So apparently things are even more broken than I though. Let's play,
"What group am I in?"
root at group-testing:/usr/home/rstone # cd /tmp
root at group-testing:/tmp # pw groupadd testing
root at group-testing:/tmp # mkdir testdir
root at group-testing:/tmp # chown root:testing testdir/
root at group-testing:/tmp # chmod g+rwx testdir/
root at group-testing:/tmp # pw usermod
root at group-testing:/tmp # pw groupmod testing -m rstone
root at group-testing:/tmp # id rstone
uid=1001(rstone) gid=1001(rstone) groups=1001(rstone),0(wheel),1002(testing)
root at group-testing:/tmp # exit
$ id
uid=1001(rstone) gid=1001 groups=1001,0
$ id rstone
uid=1001(rstone) gid=1001 groups=1001
$ touch /tmp/testdir/testfile
touch: /tmp/testdir/testfile: Permission denied
$ ls -ld /tmp/testdir/
drwxrwxr-x 2 root 1002 512 Nov 17 11:07 /tmp/testdir/
My original complaint that /etc/group gets permissions of 0600 is a result
of a bug in libutil, which bapt@ ported pw to use in r242349. The new
group manipulation API using mktemp to create a temporary file, writes the
new group database to the temp file and then renames the temp file to
/etc/group. The problem here is that mktemp creates a file with a mode of
600, and libutil never chmods it. That should be pretty trivial to fix. I
have no idea what's happening in my example above, though. Baptiste, I
have to ask: how much testing did r242349 receive before it was committed?
More information about the freebsd-current
mailing list