Como compartilhar logs do nginx sem sudo para outro usuário?

10

Eu tenho 2 usuários no meu servidor. Um com sudo acessa outro sem. Como posso dar acesso aos logs do nginx

/var/log/nginx/error.log

Para outro usuário sem sudopermissão para usar cat /var/log/nginx/error.log? Posso criar algo como um link simbólico para fazer login no diretório / home / username?

Portanto, minha pergunta é: como um usuário sem sudopermissão pode verificar os logs do nginx?

Alexander Kim
fonte
sudoacesso a quê? Não está claro em sua pergunta. Eu sei que algumas pessoas fazem 'acesso sudo' como 'acesso root', mas isso não é tecnicamente preciso. Por favor, elabore.
Davud
1
Sim, você poderia usar sudopara conceder as permissões, dependendo de como você deseja configurá-lo.
gparent
Você poderia usar ACLs. por exemplo setfacl -m 'user:someuser:r' /var/log/nginx/error.log. Não tenho certeza de como isso funcionaria com o logrotate. sudoacesso a cat / tail / etc o log provavelmente é uma opção melhor de qualquer maneira. '
Greg Bowser
@GregBowser IMHO, usar ACLs sem entender ACLs é uma receita para o problema.
Paul

Respostas:

16

Por exemplo, assim:

chmod 755 /var/log/nginx && chmod 644 /var/log/nginx/*.log && chmod 644 /var/log/nginx/*.gz

dessa forma, qualquer pessoa poderá codificar e ler o conteúdo do diretório / var / log / nginx e ler os arquivos * .log.

Você também deve verificar a configuração de rotação do log para que as permissões não sejam alteradas novamente. Nas últimas versões do Nginx, até a versão 1.6.2, o arquivo /etc/logrotate.d/nginxusou a linha create 0640 www-data admpara definir permissões ao girar logs. Isso deve ser alterado para algo como create 0644 www-data adm. Note-se que esta solução permite que todos os usuários no servidor leiam todos os logs do Nginx.

Atualização: as configurações do logrotate também devem ser atualizadas para incluir osu www-data admpara permitir que o utilitário logadm funcione sem reclamar das permissões de diretório incorretas.

drookie
fonte
3
A configuração padrão do Nginx em /etc/logrotate.d/nginxé create 0640 www-data adm. Isso está na versão 1.6.2, mas não acho que essa linha tenha mudado há algum tempo.
Paul
1
Esta resposta é escrita, por isso seria universal e genérica, ao invés de específica do ubuntu-nginx-1.6.2-20141110.
drookie
1
A configuração do nginx no logrotate d foi redefinida. Corrigido, alterando-o.
Sdkks
Não há outra maneira de resolver isso, como quando um usuário diferente tenta iniciar o nginx e usa um caminho de log diferente? Eu tentei adicionar-lo ao meu novo arquivo nginx.conf mas quando executando nginx -c newnginx.conf sobre esse novo usuário, ele ainda tenta acessar o / var / log / nginx ...
Poul K. Sørensen