altere a raiz do documento do apache para /

1

Eu sei que esta é uma das idéias mais idiotas de que você já ouviu falar, mas meu cliente, como parte de seu projeto de tese, ele quer ser capaz de transmitir qualquer mídia, incluindo mídia em disco rígido externo.

O proxy é uma opção, mas terminamos o script e ele só quer mudar a raiz do documento para / , depois de tudo isso ser apenas um projeto universitário.

No windows, fomos capazes de mudar a raiz do documento para C: e funcionou, ubuntu, sem sorte de configurá-lo para / , então como deixar o apache rodar em toda a máquina /

    
por Lynob 07.06.2016 / 20:07

3 respostas

7

  

Eu sei que esta é uma das idéias mais idiotas de que você já ouviu falar, mas meu cliente.

É.

E você não pode com uma instalação normal. O Apache seria necessário para ser executado como "root" e o Apache tem uma verificação de segurança interna. Aviso de erro, você verá ...

  

O Apache não foi projetado para exibir páginas durante a execução como raiz. Existem condições de corrida conhecidas que permitirão que qualquer usuário local leia qualquer arquivo no sistema. Se você ainda desejar servir páginas como raiz, adicione -DBIG_SECURITY_HOLE à variável env CFLAGS e, em seguida, recrie o servidor. É altamente recomendável que você modifique a diretiva User em seu arquivo httpd.conf para listar um usuário não-root.

Então, para fazer o que você quer, você precisa ...

  1. adicione -DBIG_SECURITY_HOLE à variável CFLAGS env.
  2. reconstrua o servidor apache.
  3. configuração http.conf com raiz como usuário.

Eu deixo isso para você sobre como fazer isso e sugiro que você esqueça isso, use um usuário normal (restrito) como pretendido e armazene arquivos em um subdiretório de propriedade daquele usuário.

    
por Rinzwind 07.06.2016 / 20:19
4

Você pode realizar um pouco do que você pode querer com FollowSymLinks e as permissões corretas nos arquivos.

Esse método só criará links para os dados onde você especificar, ele não fornecerá todo o sistema de arquivos, a menos que você crie links simbólicos para cada caminho, e mesmo assim, você pode encontrar problemas com caminhos específicos do sistema.

Por padrão, o Apache2 tem FollowSymLinks ativado por padrão, portanto, nenhuma configuração adicional do Apache foi necessária. Para responder a essa questão, criei uma instância de openstack e executei as etapas a seguir.

Eu mencionarei, eu teria presumido que mais seria necessário para configurar permissões, na verdade um pouco assustador.

Talvez o root tenha uma instância em execução do apache2 para funcionar? Eu não acho que www-data teria acesso ao / home / ubuntu por padrão. Estranho.

ubuntu@test:/home/ubuntu# sudo su
root@test:/home/ubuntu# apt-get install apache2
root@test:/home/ubuntu# ps awux | grep apache2
root     30862  0.0  0.1  71300  2572 ?        Ss   12:17   0:00 /usr/sbin/apache2 -k start
www-data 30865  0.0  0.2 360464  4252 ?        Sl   12:17   0:00 /usr/sbin/apache2 -k start
www-data 30866  0.0  0.2 557344  5024 ?        Sl   12:17   0:00 /usr/sbin/apache2 -k start
root@test:/home/ubuntu# cd /var/www/html/
root@test:/var/www/html# ls
index.html
root@test:/var/www/html# ln -s /tmp tmp-symlink
index.html  tmp-symlink
root@test:/var/www/html# cd tmp-symlink
root@test:/var/www/html/tmp-symlink# ls
hsperfdata_ubuntu
root@test:/var/www/html# ln -s /home/ubuntu/ ubuntu-user
root@test:/var/www/html# cd /home/ubuntu/
root@test:/home/ubuntu# ls
file  test  test_directory  test.sh

    
por bc2946088 08.06.2016 / 14:35
-1

Primeiro de tudo, aqui está a minha solução, que pode trabalhar com o apache2-2.4.10 (como resultado, você terá que substituí-lo pela versão que está em suas fontes de software).

apt-get -y install dpkg-dev debhelper libaprutil1-dev libapr1-dev libpcre3-dev liblua5.1-0-dev autotools-dev
apt-get source apache2.2-common
cd apache2-2.4.10
export DEB_CFLAGS_SET="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -DBIG_SECURITY_HOLE"
dpkg-buildpackage -b
cd ..
dpkg -i "name of the package apache2-bin* you generated with dpkg-buildpackage -b"
dpkg -i "name of the package apache2-common* you generated with dpkg-buildpackage -b"

Em seguida, modifique o arquivo httpd.conf ou / etc / apache2 / envvars para definir root em vez de www-data (você pode procurar por www-data string e substituí-lo por root) e reiniciar o apache.

Em segundo lugar, aqui está a explicação:

  1. Dependências instaladas para usar o dpkg-buildpackage e o dpkg
  2. Obtém a fonte do repositório
  3. Variáveis de ambiente modificadas CFLAGS usadas pelo dpkg-buildpackage e adicionadas -DBIG_SECURITY_HOLE a ele
  4. Navegou para o diretório gerado pelo apache e executou o dbkg-buildpackage para recompilar o pacote com o CFLAGS modificado
  5. Retornado no diretório pai para usar os pacotes gerados
  6. Eu instalo os pacotes apache2-bin e apache2-common

    sudo apt-get install apache2-bin apache2-common
    
por Wiwi 20.03.2017 / 21:58