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.
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.
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.
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.
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