Como permitir acesso a um link simbólico em ~ / Sites / para Apache no Mac OS X Lion 10.7.2

12

Eu preciso permitir o acesso a um diretório vinculado a sym em ~ / Sites do meu Apache. Eu linkei os diretórios assim

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

Agora, sempre que eu acionar uma solicitação GET, recebo uma resposta 403

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

Como posso dizer ao Apache para permitir acesso ao diretório com link simbólico e como digo ao Apache para permitir isso apenas para solicitações disparadas do host local.

Qualquer ajuda é muito apreciada.

Cumprimentos

robertj

robertj
fonte

Respostas:

10

Aqui está um post que escrevi quando estava tentando descobrir como fazer exatamente o que você está tentando fazer.

  1. Ative o compartilhamento na Web no MAC, vá para Preferências do sistema -> Compartilhamento -> Marque Ativar compartilhamento na Web
  2. Edite seu arquivo username.conf localizado em / private / etc / apache2 / users e adicione a diretiva "FollowSymLinks":

    <Diretório "/ Usuários / seunomeUsuário / Sites /">
        Opções Índices MultiViews FollowSymLinks
        AllowOverride None
        Ordem permitir, negar
        Permitir de todos
    </Directory>
    
  3. Edite o arquivo /private/etc/apache2/httpd.conf e verifique se a linha em "# Hosts Virtuais" não está comentada, assim:

    Inclua /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Edite o arquivo /private/etc/apache2/extra/httpd-vhosts.conf e adicione:

    <VirtualHost *: 80>  
        <Diretório / Usuários / seu Nome de Usuário / Sites / MyWebSite.com>
            Opções + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride All
        </Directory>
      DocumentRoot / Usuários / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </VirtualHost>
    
  5. Edite o arquivo / etc / hosts e adicione-o na parte superior:

    127.0.0.1 MyWebSite.local
    
  6. Faça um link simbólico para vincular seu diretório Code a um no diretório Sites.

    ln -s ~ / Código / MyWebSite ~ / Sites / MyWebSite
    
  7. Reinicie o apache

kelsmj
fonte
1
Bem-vindo ao Super Usuário! Seria bom incluir aqui as partes essenciais da resposta e fornecer o link apenas para referência futura.
slhck
Eu fui do ambiente xampp zend para a configuração padrão do mac / apache e depois que uma reinicialização estava inoperante na água. O passo 2 foi fundamental. Obrigado!
Shanimal
2

De fato, apenas os 2 primeiros passos da resposta de Emjay mais uma reinicialização do apache são necessários, eis o que funcionou para mim:

  1. Ative o Compartilhamento da Web no MAC, vá para Preferências do Sistema -> Compartilhamento -> Marque o Compartilhamento da Web ativado

  2. Edite seu username.confarquivo localizado /private/etc/apache2/userse adicione a diretiva FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. verifique sua configuração do apache

    sudo apachectl -t

  4. reinicie o apache

    sudo apachectl restart

Agora o Apache servirá os links simbólicos no seu Sitesdiretório.

espinielli
fonte
1

Eu estava recebendo 403 forbiddenerro. O que resolveu meu problema httpd-vhosts.conf, substituí a configuração abaixo

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

com

<Location "/modulename">
  Require all granted
</Location>

Fez o mesmo para todas as tags de localização. Resolveu o problema de permissão.

VINUTHA
fonte
0

Options FollowSymLinks no httpd.conf para o contêiner apropriado

  1. Encontre a string DocumentRoot em conf, lembre-se do valor. Verifique o conteúdo da <Directory "docroot here">...</Directory>seção para a cadeia de opções. Se Opções Options FollowSymLinksestiverem faltando - adicione a string , se existir, mas não tenha FollowSymLinks - adicione este parâmetro para ter o mesmo som Options Indexes FollowSymLinks. Reinicie o Apache depois de modificar a configuração. Resultado do teste, escreva aqui

  2. Leia os documentos do Apache

Lazy Badger
fonte
Oi, desculpe - Esta resposta não ajuda em nada.
Robertj #
Você tentou fazer isso? você FollowSymLinks com deficiência na configuração do Apache, você deve fazer com que pelo nível de diretório site ou para usar recursos simbolicamente
preguiçoso Badger
e verificar as permissões para arquivos dentro ~, presença de arquivo DirectoryIndex após ele: resolver tarefas sequencialmente, verificando todas as possibilidades
preguiçoso Badger
1
novamente - não consigo fazer nada com seus comentários. Sou um novato em relação ao Apache (além de pesquisar no Google nas últimas 6 horas) simplesmente não tenho idéia do que é o contêiner apropriado . O que seria realmente útil é um exemplo concreto de como configurar o httpd.conf e o httpd-vhost.conf.
22411 robertj
@robertj - Esta é a solução para o seu problema. Você precisa editar esse arquivo e modificá-lo adequadamente, como disse @Lazy_Badger. Deve estar localizado em <Directory /usr/share/web>. Note que depois, você precisa reiniciar o apache usandosudo /usr/sbin/apachectl restart
Steven Lu
0

Às vezes, está acontecendo se:

  • Sua pasta de origem está em um sistema de arquivos NTFS
  • Se você estiver usando uma pasta já criada, com permissões diferentes, provavelmente de um proprietário ou instalação anterior.

Eu resolvi esse problema criando uma nova pasta em um sistema de arquivos ext4 e criando um link simbólico para /var/www.

Aleksandr Leteckij
fonte
Como isso é relevante para o OP usando o OSX?
21712 JoshP