Назад | Перейти на главную страницу

CVS игнорирует бит setgid в каталогах

Я администрирую сервер 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, так что это не должно влиять на вещи.