Problema apenas com permissões de leitura do diretório Httpd

Problema apenas com permissões de leitura do diretório Httpd

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á httpdde 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 rootproprietário, devscomo 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:

informação relacionada