Apache: O chmod 755 não é suficiente para configurar o link simbólico ou o alias no Apache httpd no Mac OS 10.5?

15

No meu 10,5 máquina Mac OS, eu gostaria de criar uma subpasta de ~/Documentscomo ~/Documents/foo/htmlser http: // localhost / foo .

A primeira coisa que pensei em fazer é usar o Alias ​​da seguinte maneira:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Isso me deixou 403 Proibido. No error_log, obtive:

[error] [client ::1] (13)Permission denied: access to /foo denied

A subpasta em questão tem acesso ao chmod 755. Tentei especificar gostos como http: //localhost/foo/test.php , mas isso também não funcionou. Em seguida, tentei a rota do link simbólico.

Entrou /Library/WebServer/Documentse fez um link simbólico para ~/Documents/foo/html. A raiz do documento possui

Options Indexes FollowSymLinks MultiViews

Isso ainda me deixou 403 Proibido:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

O que mais eu preciso para configurar isso?

Solução :

$ chmod 755 ~/Documents

Em geral, a pasta a ser compartilhada e todas as suas pastas ancestrais precisam ser visualizadas pelo wwwusuário do serviço.

Eugene Yokota
fonte
Muito obrigado por este destacamento solução - isso realmente me ajudou a sair depois de passar as idades procurando a resposta
Tomba
@Tomba Sem problemas.
31412 Eugene Yokota

Respostas:

24

Aposto que algum diretório acima do que você deseja acessar não tem permissões para permitir que o Apache o atravesse. Torne-se o usuário que o Apache está executando como ( sudo -i -u apacheou qualquer outra coisa) e tente mudar para o diretório de seu interesse ls. Se você não puder (conforme o esperado), tente entrar nos diretórios acima dele, um por um, até que um permita sua entrada. O subdiretório é o que precisa ser o+xdefinido. Espuma, enxágüe, repita conforme necessário.

mulher
fonte
1
Sim, se 'Sites' estiver funcionando, você provavelmente tem um problema certo em Documents, se 'Sites' não estiver funcionando, provavelmente você tem um problema correto no diretório de usuários (isso pode ser acrescentado ao arquivo)
raio
1
~ / Documents was 700. #
Eugene Yokota
Se eu rodar sudo -i -u _wwwno OS X (como o usuário do Apache está _www na configuração padrão do apache no OS X), então whoamicontinuo recebendo meu nome de usuário, e não _www
Jason S
Para mudar completamente para outro usuário com o sudo, eu uso '-' por si só: sudo - www-data(para Ubuntu).
Alexis Wilke #
2

Usar +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>
Dave Cheney
fonte
De acordo com httpd.apache.org/docs/2.0/en/mod/core.html#options , "se todas as opções na diretiva Opções forem precedidas por um símbolo + ou -, as opções serão mescladas". Como isso vai ajudar ~ / Documentos sendo 700?
Eugene Yokota
O AFAIK FollowSymLinks não ativa a opção, apenas permite que ela seja ativada em um nível inferior da hierarquia de diretórios.
Dave Cheney
1
Esta foi a resposta correta para mim. Modifiquei o arquivo conf em / etc / apache2 / users e permiti o FollowSymLinks (sem o +). Lembre-se de reiniciar.
superluminariano 29/05
1

Verifique se o cofre de arquivos não está ativado. Eu tive o mesmo problema. Eu tentei de tudo o que pude encontrar. Nada funcionou. Mas depois de uma hora tentando descobrir isso, lembrei que tinha o cofre de arquivos ativado.

Desativá-lo resolveu o problema.

Prumo
fonte
1

Verifique a propriedade do link simbólico. Como você está no Mac OS X, os proprietários de links simbólicos podem ser alterados. Em /Library/WebServer/Documentsfazerls -l

Se o seu link simbólico para ~/Documents/foo/htmlfor chamado fooe tiver permissões como

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Por padrão, no OS X, o Apache é executado como o grupo _www user e _www, portanto, no caso mencionado acima, não será possível atravessar o link simbólico para ~/Documents/foo/html

Execute man 8 chownno terminal do sistema ou veja online chown man

Você verá que o uso da -hopção alterará a propriedade do próprio link simbólico, em vez do arquivo para o qual ele aponta (sua origem). Então você pode fazer algo como

sudo chown -h :_www foo 

Isso mudará o simlink para

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

e o grupo Apache _www poderá atravessar o link.

Jason S
fonte
0

Verifique o diretório / Users (ls -l / Users) para ver os direitos do seu usuário (alguém).
O diretório 'Sites' também está disponível corretamente em localhost / ~ alguem?

raio
fonte
localhost / ~ alguém trabalha.
Eugene Yokota