Como obter o nome de usuário (somente) do Apache?

0

Eu estou tentando escrever um script Bash para arquivos chown'in automáticos para o usuário do Apache2. Mas preciso antes de ter 100% de certeza qual é o nome de usuário dele? Eu sei que geralmente é www-data. Mas, preciso ter certeza se, digamos, antes que o nome de usuário tenha sido alterado de alguma forma.

Estou procurando uma string que retornará APENAS o nome de usuário do Apache2.

Conheço # ps -aux | grep apache2 e muitos outros, mas eles retornam uma grande quantidade de dados e eu só preciso de um nome de usuário.

Qualquer ajuda é muito apreciada!

Obrigado.

    
por Arsenii 05.09.2016 / 23:11

3 respostas

1

Encontrei uma ótima solução fácil, que retorna APENAS o nome de usuário do apache2:

ps -ef | egrep '(httpd|apache2|apache)' | grep -v 'whoami' | grep -v root | head -n1 | awk '{print $1}'

Obrigado.

    
por Arsenii 06.09.2016 / 00:16
3

O nome de usuário e o ID do grupo do Apache2 são definidos por uma diretiva no arquivo de configuração. Está localizado no arquivo /etc/apache2/envvars .

Você pode examinar esse arquivo e perceber que, por padrão, como você suspeitava, é www-data . Além disso, como você pode ver no arquivo, o grupo de usuários é definido por padrão com o mesmo nome.

Agora que você tem o usuário efetivo de apache , você pode usar isso para alterar os arquivos para esse usuário:

$ sudo chown -R www-data:www-data myhtmldirectory

Isso mudará o usuário e o proprietário do grupo myhtmldirectory e todos os arquivos e diretórios abaixo dele para www-data .

Se você quiser apenas alterar o proprietário do usuário, elimine a parte :www-data , que é para o grupo.

Uma maneira muito certa de ter o usrID correto é:

$ awk -F= '$1 == "export APACHE_RUN_USER" {print $2}' /etc/apache2/envvars

Esta linha irá analisar o arquivo envvars para a sessão atual que foi iniciada.

    
por L. D. James 05.09.2016 / 23:19
2

Para encontrar os nomes do usuário efetivo de qualquer processo que corresponda a apache2 , use:

ps -o euser= -C apache2

A opção -o define o formato de saída. No nosso caso, pedimos apenas pelo nome efetivo do usuário, euser . O trailing = informa ps para suprimir a linha de cabeçalho normal. Dessa forma, a saída consiste apenas em nomes de usuários correspondentes a apache2 .

Eu não tenho o apache2 em execução, por exemplo:

$ ps -o euser= -C mount.ntfs
root
$ ps -o euser= -C atd
daemon
    
por John1024 05.09.2016 / 23:25