Tenho mais um problema frustrante. Tenho um grupo de usuários pertencentes ao grupo "testes". Eu tenho uma pasta localizada em /var/log/projects com o bit setgid definido. Isso ocorre para que quaisquer novos arquivos ou pastas criados em /projects sempre retenham a propriedade do grupo "testing".
[root@system log]# ll | grep projects
drwxr-s---. 4 root testing 4096 Jun 10 19:36 projects
Quando toco em um arquivo ou crio uma pasta nesse diretório, eles herdam as permissões e a propriedade corretas.
[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
E quando eu crio uma nova pasta, ela funciona conforme o esperado.
[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
Até agora tudo bem. No entanto, estou usando esta pasta para syslogs remotos de outros sistemas. Quando inicio o serviço rsyslogd, todas as pastas de arquivos criadas por esse processo herdam a propriedade de root:root.
drwx--S---. 2 root root 4096 Jun 10 19:44 remotehost
Fiquei com a impressão de que o propósito do bit setgid era para o meu caso de uso. Alguém pode me dizer o que estou fazendo de errado ou como posso corrigir isso para que quaisquer pastas/arquivos criados pelo processo rsyslogd tenham propriedade de grupo de "teste"? Isso está em um servidor RHEL 6.
Responder1
O método que você criou funcionaria com programas que não gerenciam especificamente suas permissões e propriedade de saída, mas o rsyslogd sim.
Rsyslogd
página de documentação do módulo de saídamostra que você pode usar a fileGroup [groupName]
diretiva de configuração para definir o valor padrão para o grupo do arquivo de saída.
Responder2
Como o rsyslog ignora os sticky bits do setgid, consegui corrigir o problema usando as seguintes diretivas na configuração do meu modelo personalizado 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
NOTA $DirCreateMode e $FileCreateMode não funcionarão até que você substitua o umask padrão pela diretiva $umask 0000.