Tengo otro problema frustrante. Tengo un grupo de usuarios que pertenecen al grupo "testing". Tengo una carpeta ubicada en /var/log/projects con el bit setgid configurado. Esto es para que cualquier archivo o carpeta nuevo que se cree en /projects siempre conserve la propiedad del grupo de "pruebas".
[root@system log]# ll | grep projects
drwxr-s---. 4 root testing 4096 Jun 10 19:36 projects
Cuando toco un archivo o creo una carpeta en ese directorio, heredan los permisos y la propiedad correctos.
[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
Y cuando creo una nueva carpeta, funciona como se esperaba.
[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
Hasta ahora, todo bien. Sin embargo, estoy usando esta carpeta para registros del sistema remotos de otros sistemas. Cuando inicio el servicio rsyslogd, cualquier carpeta de archivos creada por ese proceso hereda la propiedad de root:root.
drwx--S---. 2 root root 4096 Jun 10 19:44 remotehost
Tenía la impresión de que el propósito del bit setgid era para mi caso de uso. ¿Alguien puede decirme qué estoy haciendo mal o cómo puedo solucionarlo para que las carpetas/archivos creados por el proceso rsyslogd tengan la propiedad del grupo "testing"? Esto está en un servidor RHEL 6.
Respuesta1
El método que creó funcionaría con programas que no administran específicamente sus permisos de salida y propiedad, pero rsyslogd sí.
Rsyslogd
página de documentación del módulo de salidamuestra que puede usar la fileGroup [groupName]
directiva de configuración para establecer el valor predeterminado para el grupo del archivo de salida.
Respuesta2
Dado que rsyslog ignora los bits adhesivos de setgid, pude corregir el problema utilizando las siguientes directivas en mi configuración de plantilla personalizada 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 y $FileCreateMode no funcionarán hasta que anule la umask predeterminada con la directiva $umask 0000.