Socket UNIX de OpenDKIM y permisos para "otros"

Socket UNIX de OpenDKIM y permisos para "otros"

El procedimiento de instalación de Postfix creó un usuario del sistema postfixy su grupo principal, postfixmientras que el procedimiento de instalación de OpenDKIM creó un usuario del sistema opendkimy su grupo principal opendkim.

Para permitir que Postfix y OpenDKIM funcionen juntos, la mayoría de los administradores hacen dos cosas:

A

Añaden un grupo secundario opendkima Postfix.

B

Configuraron el archivo de configuración OpenDKIM /etc/opendkim.confpara crear un socket UNIX usando estas tres (dos) líneas:

UMask                   002
PidFile                 /var/run/opendkim/opendkim.pid
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

La documentación oficial de OpenDKIM indica esto para el parámetro de configuración UMask:

Solicita una máscara de permisos específica que se utilizará para la creación de archivos. En realidad, esto sólo se aplica a la creación del socket cuando Socket especifica un socket de dominio UNIX y al PidFile (si lo hay);

Sé que los sockets UNIX son convenientes porque pueden limitar los privilegios de los usuarios. En mi caso quiero que OpenDKIM funcione con Postfix de la forma más segura posible. Pero si UMaskse establece en 002UNIX, el socket se creará con propiedad opendkim:opendkimy privilegios 664= rw-rw-r--.

Entiendo que los miembros del grupo (Postfix) necesitan leer y escribir en el socket UNIX, pero no entiendo por qué casi todos los tutoriales en línea (A,B,C...) ¿dejar permisos de lectura para otros?

¿Es esto un error generalizado? ¿No UMasksería un valor razonable 007? Además, el archivo PID se crea utilizando los mismos privilegios...

Si reviso cualquier otro socket UNIX en mi sistema, algunos también tienen derechos para otros... ¿Por qué es importante tenerlo?

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ss -x -l | head -n 10
Netid State  Recv-Q Send-Q                               Local Address:Port                                   Peer Address:Port                                 
u_dgr UNCONN 0      0                              /run/systemd/notify 14848                                             * 0                                    
u_str LISTEN 0      128               /var/run/dovecot/director-userdb 13957121                                          * 0                                    
u_str LISTEN 0      128                           /run/systemd/private 14852                                             * 0                                    
u_str LISTEN 0      100                          /var/run/dovecot/dict 13957125                                          * 0                                    
u_str LISTEN 0      128                    /var/run/dovecot/dict-async 13957129                                          * 0                                    
u_str LISTEN 0      1                      /var/run/irqbalance568.sock 17673                                             * 0                                    
u_dgr UNCONN 0      0                      /run/systemd/journal/syslog 14859                                             * 0                                    
u_str LISTEN 0      128                        /var/run/dovecot/config 13957133                                          * 0                                    
u_str LISTEN 0      128                   /var/run/dovecot/login/login 13957135                                          * 0                                    

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ls -l /var/run/dovecot/config 
srw------- 1 root root 0 Dec 31 07:35 /var/run/dovecot/config

┌───┐
│ # │ root > mailer > ~
└─┬─┘
  └─> ls -l /var/run/dovecot/login/login 
srw-rw-rw- 1 root root 0 Dec 31 07:35 /var/run/dovecot/login/login

Respuesta1

El uso de una máscara de usuario 002de probable está influenciado por la máscara de usuario predeterminada común de 022, que también es la configuración de muestra de opendkim.cita.

Dado que opendkim usa una configuración de umask tanto para el archivo pidfileyel archivo de socket, puede ser necesario permitir el acceso de lectura en el archivo pid para otros, de modo que también el archivo de socket se cree con permiso de lectura para otros, como unefecto secundario.

Si ni siquiera habilita la creación de archivos pid (por ejemplo, con systemd no lo necesita) y agrega el usuario postfix al grupo opendkim, entonces una máscara umask 007tiene sentido.


Alternativamente, puede dejar que opendkim cree el socket en un directorio al que solo puede acceder opendkim y postfix de esta manera:

$ cat /etc/tmpfiles.d/opendkim.conf 
d /run/opendkim-postfix 0750 opendkim postfix -

Fragmento de configuración principal de opendkim:

UMask   000
Socket local:/run/opendkim-postfix/opendkim.sock

Lo que resulta en:

# find /run/opendkim-postfix -printf '%M %m %p\n'
drwxr-x--- 750 /run/opendkim-postfix
srwxrwxrwx 777 /run/opendkim-postfix/opendkim.sock

De esa manera no es necesario agregar el usuario postfix al grupo opendkim.


La calidad de los tutoriales que usted cita puede ser limitada, porque algunos proveedores de la nube subcontratan su documentación técnica a clientes que luego se ven incentivados por los créditos de la nube. Por lo tanto, como se puede imaginar, dicho tutorial puede utilizar otros tutoriales existentes y configuraciones de muestra sin mucha crítica.

información relacionada