403 Proibido para raiz da web no Apache no Mac OS X v10.7, mas pode acessar diretórios de usuários

2

Quando eu acesso link , recebo 403 Proibido, mas se eu acessar link serve páginas. Coisas que eu tentei:

  • Verificando os registros de erros
  • Trocando os arquivos conf do httpd original
  • Alterando DocumentRoot para meu diretório de usuários (afinal, isso deve funcionar se eu puder acessar ~username )

Eu já vi mais de 30 sites Q & A que apontam para pessoas com problemas com diretórios de usuários proibidos. Eu tenho o problema oposto, e por isso estou arrancando meu cabelo aqui.

    
por philipkd 19.03.2012 / 22:52

1 resposta

3

Eu realmente encontrei este mesmo problema (pelo menos os mesmos sintomas) apenas hoje. No meu caso, eu olhei para /var/log/apache2/error_log e vi um monte de erros como este:

[Mon Mar 19 15:30:30 2012] [error] [client ::1] Directory index forbidden by Options directive: /var/empty/

Então eu olhei em /etc/apache2/httpd.conf e vi estas duas linhas…

<IfDefine MACOSXSERVER>
DocumentRoot /var/empty

... e mais tarde, essas linhas ...

<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
# Some comments were here
DocumentRoot "/Library/WebServer/Documents"

… então imaginei que de alguma forma MACOSXSERVER estava sendo definida, quando não deveria, já que esta máquina não é uma máquina servidora. Então me lembrei que precisava instalar as ferramentas de administração do Lion Server nessa máquina, e a maneira como a documentação da Apple me disse para fazer isso foi instalar o pacote Lion Server da Mac App Store na minha máquina de administração, mesmo que não fosse destinado a ser uma máquina servidora. Então talvez isso realmente transmogrificou minha máquina de administração em uma máquina Mac OS X Server. Para verificar novamente, eu corri:

$ sw_vers
ProductName:    Mac OS X Server
ProductVersion: 10.7.3
BuildVersion:   11D50

Com certeza, minha máquina agora estava se reportando como Mac OS X Server, apesar de tudo o que eu queria fazer era colocar as Server Admin Tools nessa máquina.

Voltando ao problema do Apache, eu finalmente encontrei o /etc/apache2/ReadMe.txt , que explica sobre o Apache específico do Mac OS X (não deixe de ler por si mesmo para mais informações boas!), e então ele disse:

Those IfDefine settings – MACOSXSERVER, WEBSHARING_ON, WEBSERVICE_ON – are set or not set by Apache's launchd plist, which is present in /System/Library/LaunchDaemons/org.apache.httpd.plist.

Então, no meu caso, optei por corrigi-lo editando em que launchd plist para o Apache não definiu MACOSXSERVER , já que eu realmente não considero a minha máquina como um servidor, e quero controlar isso coisas da caixa Compartilhamento na Web no painel Compartilhamento de Preferências do Sistema, não de Server.app.

Então, eu editei este arquivo:

/System/Library/LaunchDaemons/org.apache.httpd.plist

Para remover ou comentar essas linhas, na ProgramArguments array:

<string>-D</string>
<string>MACOSXSERVER</string>

Eu escolhi comentá-los colocando marcadores de início / fim de comentários SGML antes e depois deles:

<!--
<string>-D</string>
<string>MACOSXSERVER</string>
-->

Depois de salvar minhas alterações no arquivo plist , reiniciei o Apache normalmente:

sudo apachectl graceful

... e foi tudo melhor!

Talvez eu tenha precisado recarregar a página em meu navegador uma ou duas vezes se meu navegador tivesse armazenado em cache um resultado "403 Proibido" para a página que eu estava tentando acessar.

Mesmo que não seja exatamente a mesma causa raiz do seu problema, espero que minha saga ajude você a descobrir sua situação.

    
por 20.03.2012 / 00:02