Autoriza o “problema” usando o SCP para copiar para pasta raiz de propriedade local

3

Estou fazendo algumas incursões iniciais para configurar uma caixa LAMP básica. É a primeira vez que eu configuro o software que vou usar, ao invés de apenas ter um ambiente de trabalho, então vá com calma comigo:)

Eu instalei o Apache, e a pasta htdocs correspondente tem permissões de drwxr-xr-x. Eu posso copiar de remoto para local bem, mas ao tentar copiar um pequeno diretório eu recebo permissão negada.

Eu devo mencionar que estou logando usando minha própria conta de usuário admin na caixa, e é claro que o htdocs não é de minha propriedade.

Então eu acho que, na minha ingenuidade, eu preciso apenas sudo o comando - isso não funcionou. Ok, em seguida eu vou "corrigir" as permissões para 774 com base no que eu li na web. Não, isso não funcionou também. Eu estou pensando "eu preciso adicionar acesso de gravação para o terceiro" usuário "? Isso parece um estranho.

Então eu li um tópico do fórum onde o cara foi avisado que porque a pasta era de propriedade root, ele teria que scp os arquivos em sua home / dir no host remoto, então sudo cp eles para a pasta apache. / p>

Parece-me um método moroso, mas antes de tentar fazê-lo, pensei em perguntar se isso é verdade e se havia alguma melhor prática aqui e se alguma das minhas suposições estava errada?

Em segundo lugar - quais são as permissões apropriadas para o htdocs?

Ainda estou nos estágios iniciais e provavelmente configurarei algum acesso FTP, mas seria bom saber.

    
por Dan 18.07.2011 / 10:36

2 respostas

5

Existem muitas maneiras de esfolar esse gato. Aqui estão alguns para você considerar:

  1. A árvore htdocs quase certamente não precisa ser de propriedade do root. O que importa é que seja legível pelo usuário do Apache. Dependendo do sistema * ix em questão, pode ser apache , www-data ou outra coisa. O modo de arquivo padrão que você dá acima, drwxr-xr-x (abreviado 755) é bom para isso.

    Então, a pergunta é, quem deve possuir essa árvore e a qual grupo ela deve pertencer. Isso pode ser suficiente:

    $ sudo chown -R dan.apache /var/www
    

    Isso indica que o usuário dan possui /var/www e tudo sob ele ( -R , recursivo) e que o grupo apache também tem algumas permissões para ele. Se httpd estiver sendo executado como grupo apache , provavelmente obterá permissão suficiente para ler arquivos na árvore e alterar os diretórios dentro dela, o suficiente para a maioria dos sites.

  2. Outra maneira é usar as permissões que você tiver e simplesmente informar scp para representar o proprietário da /var/www/ tree:

    mybox$ scp ~/site-mirror/index.html [email protected]:/var/www/htdocs
    

    Isso copia a cópia local do arquivo raiz index.html para o local apropriado em example.com , efetuando login como usuário www . Você pode usar qualquer nome de usuário e nome de host necessários aqui. Você só precisa fazer login como o usuário do proprietário da árvore /var/www/ remotamente. Se você não puder fazer isso, considere usar a opção 1, pelo menos para configurar as coisas de uma forma que permita a você scp arquivos diretamente.

    Se você configurar as chaves pré-compartilhadas para o SSH, nem precisará fornecer uma senha.

    Em vez de scp , recomendo que você use rsync para desenvolvimento de sites:

    mybox$ rsync -ave ssh --delete ~/site-mirror [email protected]:/var/www/htdocs
    

    Isso espelha o conteúdo de ~/site-mirror on mybox (sua máquina de trabalho local) em /var/www/htdocs on example.com , efetuando login como usuário www . A vantagem de usar rsync sobre% rawscp é que você não precisa copiar e copiar novamente os arquivos que não foram alterados. O algoritmo Rsync calcula as alterações e envia apenas isso.

por 18.07.2011 / 11:27
2

De relance, seu problema provavelmente está na configuração de permissão 774 ; você basicamente configurou o diretório para ser legível, gravável e executável para seu proprietário e grupo, e legível, mas não executável para os outros.

Em outras palavras, as pessoas que não são o proprietário ou o grupo não podem cd no diretório ou acessar os arquivos dentro dele.

Eu recomendo que você leia algumas permissões de arquivo em seu tempo livre; por enquanto, tente configurar as permissões para 755 e veja se isso resolve o problema.

Crédito extra: pesquise rsync e scponly ... E tenha em mente que o usuário para isso precisa somente de ler da fonte, mas precisa escrever em> acesso ao destino.

    
por 18.07.2011 / 11:55