No meu cenário, preciso que o diretório 'httpd' em '/var/log/' possa ser lido pelos usuários do grupo 'devs' (Amazon Linux 2). Alguém poderia me orientar como fazer isso?
Temos alguns desenvolvedores que mantêm o sistema e quero que eles leiam facilmente os arquivos de log em /var/log/httpd sem precisar de acesso root.
isso pode ajudar?
chmod -R go+r /var/log/httpd
ouchmod -R go+rX /var/log/httpd
ou eu preciso ir com:
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
eu
[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]#
Como modificar esse conjunto de permissões? qual é a melhor abordagem aqui?
Responder1
Você pode usar acl para este diretório e conceder permissões para o grupo de desenvolvedores. Por exemplo:
setfacl -m g:devs:rx httpd/
Você pode definir a lista de acesso a arquivos para um diretório. No seu exemplo, você tem o diretório httpd com permissões definidas apenas para usuário/grupo root.
# ls -la| grep httpd
drwx------ 2 root root 4096 Apr 8 10:11 httpd
Você pode verificar se este diretório não possui lista acl:
getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
other::---
Definimos permissões para o grupo de desenvolvedores com permissões de leitura e execução:
setfacl -m g:devs:rx httpd/
Depois de definir as permissões, ficará assim:
getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
group:devs:r-x
mask::r-x
other::---
Observe o sinal extra (+) sobre qualquer acl existente no comando ls.
# ls -la| grep httpd
drwxr-x---+ 2 root root 4096 Apr 8 10:11 httpd
Pode ser uma boa ideia repetir o comando setfacl com a opção -b para definir as permissões padrão. Eu costumo fazer isso.
-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).
Cumprimentos
Responder2
De acordo com a forma como você marcou a pergunta, você está usando um ambiente estilo Redhat. Supondo que você esteja usando a instalação padrão do Apache httpd, provavelmente você está, nos bastidores, lidando com o logrotate. Pronto para uso, o logrotate é executado diariamente em /etc/cron.daily
. Ele moverá seus arquivos de log atuais para fora do caminho, criará novos e reiniciará httpd
de forma que começará a usar os arquivos de log vazios recém-criados.
Verificar /etc/logrotate.d/httpd
. Por exemplo, a versão stock mostra:
/var/log/httpd/*log {
missingok
notifempty
sharedscripts
delaycompress
postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
}
Se você adicionar uma linha como esta entre chaves, o logrotate girará e recriará corretamente seus arquivos de log com o proprietário e as associações de grupo corretos:
create 0640 root devs
Isso instrui o logrotate a criar os novos arquivos de log como root
proprietário, devs
como grupo, com permissões de leitura/gravação de proprietário e leitura de grupo.
Você pode então definir seu diretório de log httpd com permissões e propriedades da seguinte forma:
chown root:devs /var/log/httpd
chmod 0750 /var/log/httpd
No primeiro dia, você também pode definir manualmente as permissões nos arquivos de log e o logrotate será ativado nos dias seguintes:
chown root:devs /var/log/httpd/*log
chmod 0640 /var/log/httpd/*log
Você pode se divertir com ACLs, conforme demonstrado por @KuchnMar acima, mas esta solução mantém as coisas simples e compatíveis entre vários tipos *nix e de sistema de arquivos.
Isso pode ser semelhante em um host estilo Debian, mas seu arquivo de configuração logrotate pode ser chamado apache2
.
Mais informações podem ser encontradas aqui:
- logrotate:https://linux.die.net/man/8/logrotate
- mod_log_config:https://httpd.apache.org/docs/current/mod/mod_log_config.html