setgid sticky bit não funciona

setgid sticky bit não funciona

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.

Rsyslogdpá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.

informação relacionada