403 Erro Proibido no Mac OS X Localhost

22

Configurei o Compartilhamento da Web nas Preferências do Sistema no Mac OS X 10.6 e cliquei no link que ele me deu lá. Infelizmente, o Apache me deu este erro 403:

Proibido

Você não tem permissão para acessar /~myusername/index.html neste servidor.

O log de acesso é exibido: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

O log de erros é exibido: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Curiosamente, acessar http: // localhost funciona bem. É apenas com duas das pastas de usuário com as quais estou tendo problemas, a outra pasta de usuário, que é mais recente que a minha atualização do sistema, está funcionando bem.

Eu já tinha esse trabalho em minha máquina no Leopard antes, então alterei tudo ~/Sitespara 755, o que não adiantou. Alguma sugestão? Eu presumo que fiz algo na minha máquina que causou isso, pois não consigo imaginar a Apple estragando algo assim.

Eu configurei o PEAR com essas instruções , mas não tenho idéia se isso poderia ser a causa disso.

waiwai933
fonte
Desculpe se esta é uma pergunta idiota, mas exatamente para qual URL você está indo? Eu pergunto porque a URL "/~myusername/index.html" é estranha - deve ser "~ myusername / index.html" ou deve ser " localhost / ~ myusername / index.html " ou algo assim semelhante. Simplesmente começando em / e adicionando ~ myusername cheira engraçado. Além de (ou em vez de responder), você pode acessar o Console.app (/Applications/Utilities/Console.app) e encontrar o apache2 access_log e error_log. Faça isso, talvez limpe a exibição e tente novamente seu URL para ver o que o log de erros informa.
Michael H.
@khedron: A URL é localhost / ~ myusername / index.html , mas o erro exibe a parte /~myusername/index.html
waiwai933
OK, apenas verificando. O que o log do apache diz no console (console.app)?
Michael H.
@khedron: Publiquei o acesso e o log de erros na pergunta. Existe outro?
precisa
1
Eu tenho o mesmo problema que você, e eu apenas fazer: chmod 777 / Applications / XAMPP / htdocs / myusername, que trabalham é para mim
Wassim Sboui

Respostas:

22

A Apple possui um documento de suporte para esse problema . Corrigir o problema envolve a criação de um arquivo /etc/apache2/users/yourusername.conf(seu nome de usuário é o nome abreviado da conta , por exemplo danielbeck- geralmente é o nome da sua pasta pessoal /Users) com o seguinte conteúdo:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Depois, execute sudo chown root:wheel /etc/apache2/users/yourusername.confe reinicie o Apache.

Daniel Beck
fonte
e também reinicie o seu apache, basta executar sudo apachectl restartno seu terminal.
nil
15

Para que o Apache veja o arquivo, o usuário que o Apache executa como (provavelmente wwwou _www) deve ter acesso aos diretórios de Sites desses usuários. Ter acesso de leitura / execução ao conteúdo de ~/Sitesnão é suficiente, pois é necessário permitir que ele atravesse /o caminho para ~/Sites. Então certifique-se /, /Users, /Users/myusername, e /Users/myusername/Sitestodos têm pelo menos a+xpermissão (o bit de execução em diretórios permite que classe de usuário para percorrer o diretório, mesmo que o acesso de leitura não é permitido).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

Se algum desses diretórios não mostrar o último xconjunto (aquele para "outros"), use algo parecido chmod a+x ...para defini-lo para esse diretório.

Se a ACL de qualquer um desses diretórios mostrar que o wwwacesso foi negado especificamente ao usuário, use os argumentos apropriados chmodpara corrigir as ACLs.

Spiff
fonte
O bit de execução está definido para todos esses diretórios, mas não sei como verificar se um usuário específico teve acesso negado.
Waiwai933
É para isso que serve o "e" em "ls -lde". Ele lista as ACLs (se houver) para cada um dos arquivos.
Spiff
2
Alterar as permissões em / Users / myusername para chmod 755 corrigiu o problema para mim.
Mark
Este comando não dá ao usuário _www permissão para acessar seu diretório raiz, assim como o diretório / Users, etc? Isso não pode estar certo, não é? Todas essas falhas de segurança para compartilhar uma página em uma pasta? Esse comportamento está documentado em algum lugar?
Tom Lianza
Respondendo a minha própria comentário, achei esta resposta ( serverfault.com/a/293063/14970 ), que fornece um link para a documentação fidedigna sobre este comportamento: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza
5

Para referência, eu apenas lidei com isso, e nenhuma das respostas aqui funcionou no meu caso específico. Eu estava configurando hosts virtuais, mas o mais importante era que meus arquivos htaccess realmente funcionavam.

Mudei em "AllowOverride None" para "AllowOverride All" no meu arquivo /etc/apache2/users/USERNAME.conf, e todos os meus sites começaram a ser proibidos.

Eu mudei de volta e depois mudei apenas para um site no meu arquivo httpd-vhosts.conf, e somente esse site foi proibido.

Depois de examinar os logs e ver que o problema estava na reescrita de URL e na falta de FollowSymLinks, voltei ao arquivo USERNAME.conf. Alterno "AllowOverride None" para "AllowOverride All" e adicionei "Options + FollowSymLinks" na próxima linha.

As coisas começaram a funcionar. Eu vim usando o xampp no ​​Windows e muitas dessas configurações já estavam definidas em todo o servidor para manequins como eu.

Jake
fonte
1
muito obrigado, passei algum tempo para descobrir o que está acontecendo, não tinha a tilintar com Apache / PHP há algum tempo
Misha Reyzlin
1
Sim, Options +FollowSymLinksfuncionou como um encanto.
agarie
2

Eu tinha o mesmo problema: minha conta (antiga) não estava acessível, mas a conta de outro usuário criada após a atualização para o Lion funcionou perfeitamente.

Depois de garantir que o seu /etc/apache2/users/USERNAME.conf fique assim:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

faça uma raiz do sudo chown: wheel /etc/apache2/users/USERNAME.conf

parece que essa configuração de permissão não foi definida durante a atualização do sistema operacional, e o usuário do Apache não pode ler o arquivo de configuração e gera um erro.

Pelo menos isso resolveu para mim.

Arve Nygård
fonte
1
E talvez corra sudo apachectl restartdepois disso.
Arjan8
Isso funciona para mim executando 10.7.5. O caminho do diretório não estava apontando para minha raiz da web local, uma vez que eu atualizei e reiniciei o apache, tudo funcionou. O estranho é que o caminho está incorreto há mais de um ano e estava funcionando o tempo todo. Acabei de receber o erro hoje do nada.
supajb
2

atualização para Lion em 10/2011 eu tive que adicionar também

UserDir ativado para que meu /etc/apache2/extra/httpd-userdir.conf fique assim:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>
nunya
fonte
1

Continuando a conversa a partir dos comentários iniciais da pergunta - Confira seu /etc/apache2/httpd.confarquivo. Na minha máquina, eu tenho o seguinte:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

Eu suspeito que o seu está comentado. Lembro-me vagamente de mudar isso manualmente quando passava de 10,5 para 10,6 e o ​​padrão foi alterado.

Provavelmente isso é óbvio, mas você precisará usar sudopara editar o arquivo, pois ele será de propriedade do root.

Michael H.
fonte
1
Não, o meu se parece exatamente com o seu.
waiwai933
1

Meu caso é o diretório XAMPP + Mac OS X 10.7 + na pasta Dropbox (fazendo referência cruzada a minha outra pergunta no Stack Overflow)

403 O Acesso Proibido é relatado pelo Apache; portanto, segui o comentário acima para alterar Usuário no /XAMPP/xamppfiles/etc/httpd.conf, de User nobodypara User my_user_name. Reinicie o Apache e ele funciona bem.

Raptor
fonte
0

Você provavelmente não tem os índices ativados. Caso contrário, você precisará criar um arquivo de índice ( index.htmlou index.php) ou especificar o arquivo explicitamente, ou seja http://localhost/~me/mypage.html.

Josh K
fonte
Desculpe, só para checar, eu deveria visitar localhost / ~ nome_do_usuário / index.html e ter um arquivo chamado index.html na minha pasta Sites, certo? Nesse caso, o 403 ainda está acontecendo.
Whawai933
Você não deveria estar visitando ~myusernametudo o que acredito. http://localhost/deve apontar para /Users/youruser/Sites/.
Josh K