savannah-hackers-public
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-hackers-public] New VM vcs1 to hold CVS data with working file


From: Bob Proulx
Subject: [Savannah-hackers-public] New VM vcs1 to hold CVS data with working file ACLs
Date: Tue, 18 Jun 2019 16:46:39 -0600
User-agent: Mutt/1.10.1 (2018-07-13)

Savannah Hackers.

Two things are happening.  To not totally "bury the lead"...  We are
getting an additional vcs1 VM for the cvs files.

First problem is that previously all of the vcs files were rolled off
of the old vcs system and onto the new nfs1 for storage and the new
vcs0 was the frontend server for it.  All mostly good.  Things
appeared to work great for a while.  But the "mostly" part was the
problem.  Things worked for a bit but then we discovered that the www
team was then unable to update web pages.  The file ACLs were not
working from nfs1+vcs0.  Therefore had to roll the CVS data back onto
the old vcs+vcs0 combination again where ACLs worked.  All of the
other data remains on nfs1.  Only the CVS data, needing file ACLs, was
bungied back onto the old vcs system.  And currently that is the only
data requiring the old vcs system as a dependency.

The files of trouble are the web page cvs directories plus the web
team's cvs womb project directory.  (This is not a cvs problem but an
access problem and it just happens to be that it is cvs.  If the files
were in git then it would be the same problem for git.)  The thousand
plus projects all have their web pages in cvs.  Every project has a
Unix project group.  Each project member is a member of that project's
Unix group and accesses their files by being in their project group.
There are thousands of Unix project groups, one per project.

  vcs:/# ls -l /web | head
  total 15496
  drwxrwsr-x+  4 root 3dldf        4096 Jan  1  2004 3dldf
  drwxrwsr-x+  4 root 7pages       4096 Jan  8  2005 7pages
  drwxrwsr-x+  4 root 8sync        4096 Mar  9  2016 8sync
  drwxrwsr-x+  4 root 9box         4096 Jan  8  2005 9box
  drwxrwsr-x+  4 root AutismTools  4096 Aug 26  2014 AutismTools
  drwxrwsr-x+  4 root a2ps         4096 Dec 30  2003 a2ps
  drwxrwsr-x+  4 root aasm         4096 Dec 30  2003 aasm
  drwxrwsr-x+  4 root abcsh        4096 Aug  2  2004 abcsh
  drwxrwsr-x+  4 root abdabi       4096 Dec 30  2003 abdabi
  ls: write error: Broken pipe

(And there is that pesky SIGPIPE being ignored problem too.)
Note that each project exists in its own group.

Now enter the GNU www team.  There are a dozen people in the www team
such as Therese <th_g> that need to make global changes to all of the
web files.  How do they access those web pages?  If the same access
controls were applied to them then they would need to be in ten
thousand groups.  That is not practical.

Sylvain Beucler made this ChangeLog entry concerning the solution
implemented for the www team.

  2006-05-10  Beuc
        * Allowing group 'www' to edit GNU projects' webpages: switched
        from the webgroup model to ACLs:
        perl -MSavane -e 'print join("\n", GetGroupList("(type=1 or type=3
        or type=6) and status=\"A\"","unix_group_name"))' | while read i;
        do find $i/$i -type d -print0 | xargs -0 setfacl -m
        default:group:www:rwx -m group:www:rwx; done

Note the "+" in the sample listing above.  File ACLs are in effect.
Looking at a sample of one.

  root@vcs0:~# getfacl /net/oldvcs/web/coreutils
  getfacl: Removing leading '/' from absolute path names
  # file: net/oldvcs/web/coreutils
  # owner: root
  # group: coreutils
  # flags: -s-
  user::rwx
  group::rwx
  group:www:rwx
  mask::rwx
  other::r-x
  default:user::rwx
  default:group::rwx
  default:group:www:rwx
  default:mask::rwx
  default:other::r-x

The file ACL gives additional access to the www group.  With this
configuration members of the www team can make changes to the web
pages.  Additionally they make use of the /sources/womb project too,
apparently, and it needs the same file ACL configuration.

The directories of interest are:

  root@vcs0:~# ll /srv/cvs/
  total 0
  lrwxrwxrwx 1 root root 25 Apr 10 16:27 sources -> ../../net/vcs/cvs/sources
  lrwxrwxrwx 1 root root 20 Apr 10 17:41 web -> ../../net/oldvcs/web

  vcs:/# du -sh /web /sources /sources/womb
  23G     /web
  29G     /sources
  3.2M    /sources/womb

In /sources only /sources/womb uses file ACLs.  But being located in
/sources I moved them together.  However all of /web uses file ACLs.

It seems to be a difference between NFSv3 between vcs0-vcs and NFSv4
between vcs0-nfs1.  File ACLs work with vcs0-vcs but fail with
vcs0-nfs1.  Here is a test showing it working and failing.

  root@vcs0:/# sudo -u th_g tee -a /net/oldvcs/web/test-project/CVSROOT/history 
< /dev/null
  root@vcs0:/# echo $?
  0

That shows a success.  But this fails for the nfs1 copy.

  root@vcs0:/# sudo -u th_g tee -a 
/net/vcs/cvs/web/test-project/CVSROOT/history < /dev/null
  tee: /net/vcs/cvs/web/test-project/CVSROOT/history: Permission denied
  root@vcs0:/# echo $?
  1

Fails.

  root@nfs1:~# getfacl /srv/vcs/cvs/web/test-project/CVSROOT/history
  getfacl: Removing leading '/' from absolute path names
  # file: srv/vcs/cvs/web/test-project/CVSROOT/history
  # owner: root
  # group: test-project
  user::rw-
  group::rw-
  group:www:rw-
  mask::rw-
  other::r--

This shows that on nfs1 it thinks there are file ACLs.  But on vcs0
these do not show up.

  root@vcs0:/# ll /net/vcs/cvs/web/test-project/CVSROOT/history
  -rw-rw-r-- 1 root test-project 257 Nov 14  2017 
/net/vcs/cvs/web/test-project/CVSROOT/history

No "+".

  root@vcs0:/# getfacl /net/vcs/cvs/web/test-project/CVSROOT/history
  getfacl: Removing leading '/' from absolute path names
  # file: net/vcs/cvs/web/test-project/CVSROOT/history
  # owner: root
  # group: test-project
  user::rw-
  group::rw-
  other::r--

No file ACL.  But...  Look at this:

  root@vcs0:/# nfs4_getfacl /net/vcs/cvs/web/test-project/CVSROOT/history
  A::OWNER@:rwatTcCy
  A::GROUP@:rwatcy
  A:g:1018:rwatcy
  A::EVERYONE@:rtcy

  root@vcs0:/# getent group 1018
  www:x:1018:amachutechie,andriykopanytsia,araech,...,th_g,...

So it seems to know about the file acl and seems to include the www
group.  But it does not work.

However this also fails on nfs1 too.

  root@nfs1:~# sudo -u th_g tee -a 
/srv/vcs/cvs/web/test-project/CVSROOT/history < /dev/null
  tee: /srv/vcs/cvs/web/test-project/CVSROOT/history: Permission denied

  root@nfs1:~# ll /srv/vcs/cvs/web/test-project/CVSROOT/history
  -rw-rw-r--+ 1 root test-project 257 Nov 14  2017 
/srv/vcs/cvs/web/test-project/CVSROOT/history

But:

  root@nfs1:~# getfacl /srv/vcs/cvs/web/test-project/CVSROOT/history
  getfacl: Removing leading '/' from absolute path names
  # file: srv/vcs/cvs/web/test-project/CVSROOT/history
  # owner: root
  # group: test-project
  user::rw-
  group::rw-
  group:www:rw-
  mask::rw-
  other::r--

  root@nfs1:~# id th_g
  uid=123774(th_g) gid=1003(svusers) 
groups=1003(svusers),1018(www),1458(audio-video),2312(trans-coord),6337(www-fr)

So shouldn't that be working on nfs1 too?

This is the point where I am stuck.  WAT?  Why isn't this working?

But on to the second problem which is forcing the workaround.  Because
we are back on the old vcs and everything is working there.  But that
system really, really, *REALLY* must be obsoleted.  It has severe OS
problems.  It won't reboot on it's own.  Time to retire it.  And that
system is the last VM on the underlying host.  That hardware needs to
be repurposed.  And there is the upcoming datacenter move which is
also applying time pressure.  So must apply a workaround for this in
order to keep moving forward.  We will still need to figure out the
file ACL problem because eventually this will be a need for the git
repositories too.

And this is enough for this message.  I'll continue in the next message.

Bob



reply via email to

[Prev in Thread] Current Thread [Next in Thread]