Я администрирую сервер CVS (CVS 1.11.23 в CentOS 6.9 с отключенным SELinux).
Я установил бит setgid во всех каталогах репозитория, как эта страница предлагает, чтобы новые файлы и каталоги принадлежали cvs
группа, независимо от того, кто их совершает:
$ ls -al
drwxrwsr-x+ 407 root cvs 20480 Jun 19 05:34 .
drwxr-xr-x. 5 cvs cvs 4096 Nov 11 2014 ..
drwxrwsr-x+ 3 cvs cvs 4096 Aug 18 16:07 CVSROOT
drwxrwsr-x+ 20 cvs cvs 4096 Aug 18 16:00 test
Но начиная с недавнего времени, когда кто-то совершает коммит, новые каталоги создаются без бита setgid (обратите внимание на «x» вместо «s» в последней строке):
$ ls -al test
drwxrwsr-x+ 20 cvs cvs 4096 Aug 18 16:00 .
drwxrwsr-x+ 407 root cvs 20480 Jun 19 05:34 ..
drwxrwxr-x+ 2 jw cvs 4096 Aug 18 15:51 foo
В результате файлы, добавленные в эти каталоги, не принадлежат cvs
group, что в дальнейшем приводит к ошибкам разрешений.
Это происходит как с клиентом командной строки CVS, так и с клиентом Eclipse, используя методы подключения pserver и extssh.
Что могло заставить его игнорировать бит setgid?
Я попытался добавить сценарий commitinfo, чтобы распечатать некоторую информацию о пользователе, выполняющем фиксацию. В нем нет ничего необычного; umask - 0022, так что это не должно влиять на вещи.