setgid sticky bit не работает

setgid sticky bit не работает

У меня еще одна досадная проблема. У меня есть группа пользователей, принадлежащих к группе "testing". У меня есть папка, расположенная в /var/log/projects с установленным битом setgid. Это сделано для того, чтобы все новые файлы или папки, которые создаются в /projects, всегда сохраняли групповое владение "testing".

[root@system log]# ll | grep projects
drwxr-s---. 4 root   testing     4096 Jun 10 19:36 projects

Когда я открываю файл или создаю папку в этом каталоге, они наследуют правильные права доступа и владельца.

[root@system log]# touch /var/log/projects/testfile
[root@system log]# ll /var/log/projects/
total 4
-rw-r--r--. 1 root testing    0 Jun 10 19:49 testfile

И когда я создаю новую папку, все работает так, как и ожидалось.

[root@system projects]# mkdir folder1
[root@system projects]# ll
total 8
drwxr-sr-x. 2 root testing 4096 Jun 10 19:52 folder1
-rw-r--r--. 1 root testing    0 Jun 10 19:49 testfile

Пока все хорошо. Однако я использую эту папку для удаленных системных журналов из других систем. Когда я запускаю службу rsyslogd, любые папки файлов, созданные этим процессом, наследуют владельца root:root.

drwx--S---. 2 root root 4096 Jun 10 19:44 remotehost

У меня сложилось впечатление, что бит setgid предназначен для моего варианта использования. Может ли кто-нибудь сказать, что я делаю неправильно или как это исправить, чтобы все папки/файлы, созданные процессом rsyslogd, имели групповое владение "testing"? Это на сервере RHEL 6.

решение1

Разработанный вами метод будет работать с программами, которые специально не управляют своими правами доступа и владельцами выходных данных, но rsyslogd это делает.

RsyslogdСтраница документации выходного модуляпоказывает, что можно использовать fileGroup [groupName]директиву конфигурации, чтобы задать значение по умолчанию для группы выходного файла.

решение2

Поскольку rsyslog игнорирует биты setgid sticky, мне удалось исправить проблему, используя следующие директивы в моей пользовательской конфигурации шаблона rsyslogd.conf:

$template TmplAuth, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/projects/%FROMHOST-IP%/%PROGRAMNAME%.log"
$umask 0000
$DirCreateMode 0750
$FileCreateMode 0640
$FileGroup testing
$DirGroup testing
authpriv.*   ?TmplAuth
*.info,mail.none,authpriv.none,cron.none   ?TmplMsg

ПРИМЕЧАНИЕ $DirCreateMode и $FileCreateMode не будут работать, пока вы не переопределите umask по умолчанию с помощью директивы $umask 0000.

Связанный контент