Problema de solo permisos de lectura del directorio Httpd

Problema de solo permisos de lectura del directorio Httpd

En mi caso, necesito que el directorio 'httpd' en '/var/log/' sea legible por los usuarios del grupo 'devs' (Amazon Linux 2). ¿Alguien podría guiarme sobre cómo lograr esto?

Tenemos algunos desarrolladores que mantienen el sistema y quiero que lean fácilmente los archivos de registro en /var/log/httpd sin necesidad de acceso root.

¿Puede esto ayudar?

chmod -R go+r /var/log/httpd

ochmod -R go+rX /var/log/httpd

o necesito ir con:

chmod 644 /var/log/httpd

chgrp -R apache /var/log/httpd
chmod 02750 /var/log/httpd
chmod 0640 /var/log/httpd/*
create 0640 root apache

es

[root@ip-10-0-10-165 httpd]# ls -la
total 48
drwx------ 19 root   devs   4096 Apr  3 03:42 .
drwxr-xr-x 11 root   devs   4096 Apr  8 07:45 ..
-rw-r--r--  1 root   root      0 Feb 15 14:55 access_log
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u1-dev.qwerty.com
-rw-r--r--  1 root   root   1648 Apr  3 03:42 error_log
-rw-r--r--  1 root   root    883 Mar 13 03:41 error_log-20220313
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u4-dev.qwerty.com
drwxr-xr-x  2 root   root     41 Mar  1 20:44 langs.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u8-dev3.qwerty.com
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_access_log
-rw-r--r--  1 root   root    314 Apr  3 03:42 ssl_error_log
-rw-r--r--  1 root   root    157 Mar  6 03:50 ssl_error_log-20220313
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_request_log
drwxr-xr-x  2 apache apache  253 Apr  3 03:42 www.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u13-dev.qwerty.com
[root@ip-10-0-20-173 httpd]#

¿Cómo modificar esos conjuntos de permisos? ¿Cuál es el mejor enfoque aquí?

Respuesta1

Puede usar acl para este directorio y otorgar permisos para el grupo de desarrolladores. Por ejemplo:

setfacl -m g:devs:rx httpd/

Puede configurar la lista de acceso a archivos para un directorio. En su ejemplo, tiene el directorio httpd con permisos establecidos solo para usuario/grupo raíz.

# ls -la| grep httpd
drwx------   2 root     root        4096 Apr  8 10:11 httpd

Puede verificar que este directorio no tenga una lista de ACL:

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
other::---

Establecemos permisos para el grupo de desarrolladores con permisos de lectura y ejecución:

setfacl -m g:devs:rx httpd/

Después de configurar los permisos, se verá así:

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
group:devs:r-x
mask::r-x
other::---

Tenga en cuenta el signo adicional (+) sobre cualquier ACL existente en el comando ls.

# ls -la| grep httpd
drwxr-x---+  2 root     root        4096 Apr  8 10:11 httpd

Podría ser una buena idea repetir el comando setfacl con el modificador -b para configurar los permisos predeterminados. Normalmente hago eso.

-d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning  is  issued
           if that happens).

Saludos

Respuesta2

Según cómo etiquetó la pregunta, está utilizando un entorno estilo Redhat. Suponiendo que está utilizando la instalación httpd estándar de Apache, probablemente esté, detrás de escena, lidiando con logrotate. De fábrica, logrotate se ejecuta diariamente fuera de /etc/cron.daily. Quitará sus archivos de registro actuales, creará otros nuevos y se reiniciará httpdde modo que comience a utilizar los archivos de registro vacíos recién creados.

Controlar /etc/logrotate.d/httpd. Por ejemplo, la versión estándar muestra:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

Si agrega una línea como esta dentro de las llaves, logrotate rotará y recreará correctamente sus archivos de registro con el propietario y las membresías de grupo correctos:

    create 0640 root devs

Esto le indica a logrotate que cree los nuevos archivos de registro como rootpropietario, devscomo grupo, con permisos de lectura/escritura de propietario y lectura de grupo.

Luego puede configurar su directorio de registro httpd con permisos y propiedades de esta manera:

chown root:devs /var/log/httpd
chmod 0750 /var/log/httpd

Para el primer día, es posible que también desees configurar manualmente los permisos en los archivos de registro y logrotate se retomará en los días siguientes:

chown root:devs /var/log/httpd/*log
chmod 0640 /var/log/httpd/*log

Puede ser sofisticado con las ACL como lo demostró @KuchnMar anteriormente, pero esta solución mantiene las cosas simples y compatibles entre varios *nix y tipos de sistemas de archivos.

Esto puede ser similar en un host estilo Debian, pero apache2en su lugar se puede llamar a su archivo de configuración logrotate.

Puede encontrar más información aquí:

información relacionada