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á httpd
de 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 root
propietario, devs
como 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 apache2
en su lugar se puede llamar a su archivo de configuración logrotate.
Puede encontrar más información aquí:
- logrotate:https://linux.die.net/man/8/logrotate
- mod_log_config:https://httpd.apache.org/docs/current/mod/mod_log_config.html