Como fazer o Apache funcionar como usuário atual

44

Eu acho que para uma máquina de desenvolvimento, é mais conveniente executar o Apache como o usuário atual para simplificar o problema de permissões? Como faço isso? Eu acho que é suexec, mas como faço para configurá-lo no Ubuntu + Apache?

Jiew Meng
fonte

Respostas:

28

Eu mesmo adicionaria o usuário ao www-datagrupo com ...

sudo adduser {username} www-data

Simples e eficaz. Não mexa com arquivos de configuração ou permissões.

Rinzwind
fonte
6
Fiz isso o tempo todo, mas isso não corrigirá alguns dos problemas de permissão negada, pois os direitos do grupo não são iguais aos direitos do usuário para todos os arquivos.
Kostanos
1
Isso não será corrigido se o CHMOD não permitir que o grupo escreva.
GusDeCooL
o problema para mim é que tenho instalação local. Quando crio arquivos com o meu IDE, eles têm o meu 'usuário / grupo' e, em algum momento, o apache não consegue ler esses arquivos.
Postadelmaga
isso por si só não resolve muitos problemas de permissão porque seu grupo principal normalmente não é www-data e alguns aplicativos php exigem permissões de gravação em grupo. (Joomla, WordPress)
Eric
2
Isso não resolve o problema onde você cria arquivos e www-data não pode remover / editar-los porque o seu grupo principal não é www-data
billy
56

Edite o seguinte arquivo como raiz: / etc / apache2 / envvars

usando o comando:

sudo nano /etc/apache2/envvars

altere o usuário e o grupo para si mesmo se houver apenas um usuário e você nunca mais terá problemas com permissões.

IE, se você estiver apenas efetuando login e executando o servidor como usuário 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Caramba, para esse assunto, você pode mudar esse usuário para o usuário atual, tenho certeza de alguma forma. Em seguida, instale user_dir, todos os quais você possui webs, dos quais você pode ter controle total (a menos que modifique isso).

Reinicie o servidor (se não tiver certeza, basta reiniciar ou goole) e você estará pronto.

Eric
fonte
3
Isso funciona como um encanto! obrigado. a única que eu gostaria de acrescentar:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos
3
Provavelmente, você também precisarásudo chown big_dog.big_dog -R /var/log/apache2
Kostanos
No OpenSUSE-Tumbleweed (e provavelmente em algum outro) o arquivo está em/etc/apache2/uid.conf
Dilawar 7/16
Você não precisa necessariamente alterar o arquivo envvars, apenas atualizei as variáveis ​​de ambiente antes de iniciar o Apache com um script. Dessa forma, você não está bloqueado para um único usuário, mas quem executa o script, executa o apache. Eu costumava export APACHE_RUN_USER=#$(id -u)dar o ID do usuário e usar similarmente o id -ggrupo no script e, no final, chamei o apache para executar.
inblueswithu 12/04
1

por que você faria isso? Eu estava lutando com esses problemas de perm no passado, mas este é o meu processo de desenvolvimento a partir de hoje:

  • instale uma nova caixa linux (virtual ou local, como laptop)
  • executar sudo apt-get install lamp-server^proc padrão para acender a lâmpada
  • faça um link sym para o meu diretório home, onde os projetos são assim:

    ln -s /home/user/html /var/www/html

  • faça o link sym para o arquivo de configuração de hosts

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

é isso aí :)

Funciona como aspecto, sem problemas com permissões de usuário ou algo semelhante com o servidor apache, para o mysql eu tenho um processo pouco mais longo ..

felicidades

Kresimir Pendic
fonte
Isso não resolve nenhum dos problemas de permissão abordados na maioria das outras respostas.
HörmannHH
0

Evitando o problema "você deve fazer isso", você pode encontrar onde o usuário do apache está definido executando:

grep www- /etc/apache2/apache2.conf

É então o caso de editar essas instâncias /etc/apache2/apache2.confe recarregar o Apache ( sudo /etc/init.d/apache2 reload).

Oli
fonte
apache2.confnão contém www-para mim
Jiew Meng
Tenho a sensação de que você quis dizer algo assim grep -HR "www-" /etc/apache2/. Se você já sabe que está no apache2.conf, edite esse arquivo. No meu caso, não estava lá, mas em / etc / apache2 / envvars, como aponta a resposta de Eric.
Mike
Isso porque apache.confprocura ${APACHE_RUN_USER}e ${APACHE_RUN_GROUP}. Não www-datadiretamente.
Yahya Uddin
0

crie um novo grupo de usuários webdeve adicione o www-datausuário a ele.

sudo addgroup webdev
sudo adduser www-data webdev

Em seguida, adicione seu usuário a esse grupo e faça dele o grupo padrão para o seu usuário.

sudo adduser {your-user} webdev
sudo addgroup webdev

A última coisa a fazer é garantir que o grupo webdev tenha direitos rwx nos arquivos

sudo chmod 775 -R /path/to/project

Agora, a única coisa que pode ocorrer é que, por exemplo, www-data cria um novo arquivo de log e você não pode executá-lo novamente.

Thomas Venturini
fonte
1
Qual é a vantagem disso, ao adicionar meu próprio usuário ao www-datagrupo, principalmente porque estamos falando de um ambiente de desenvolvimento?
Dan
bem, se você fizer dessa maneira, e definir os direitos do 775 como, por exemplo, public_html ou / var / www, você não terá problemas com os direitos em sua máquina de desenvolvimento. as outras abordagens, deixam você com etapas adicionais para fazer ou não são tão eficazes quanto eu não quero. Então, na minha opinião, esta é a melhor maneira de lidar com isso em uma máquina de desenvolvimento. para servidores produtivos eu recomendaria uma configuração diferente. também com essa abordagem, você pode adicionar usuários facilmente.
Thomas Venturini