Como hospedar arquivos de public_html enquanto ainda preserva a segurança de ~ / .ssh /

1

Eu tenho duas necessidades conflitantes. Gostaria de exibir arquivos com o Apache em /home/steve/public_html/ , o que, de acordo com a documentação que li, exige que eu defina a+rwx em / home / steve /.

Eu também gostaria de usar o SSH para me conectar a essa conta, mas se eu definir meu diretório home como legível para o mundo, o SSH reclama (com razão) e não me permite conectar.

Existe uma maneira de eu poder servir arquivos de public_html enquanto ainda permitir acesso SSH?

EDIT: Depois de ler as respostas e fazer um pouco de pensamento crítico, percebi que estava fazendo a pergunta errada. O que eu deveria ter perguntado era:

  • como eu desenvolvo e testo com segurança o código php no meu diretório pessoal, quando este código requer que o Apache escreva em um banco de dados SQLite. A resposta, obviamente, é: colocar o banco de dados em /var/www/ e tudo mais em public_html .
por Steve V. 20.01.2011 / 02:19

2 respostas

6

I have two conflicting needs. I'd like to serve files with Apache out of /home/steve/public_html/ which according to the documentation I've read, requires me to set a+rwx on /home/steve/.

Se você estiver lendo uma documentação sugerindo que precisa dar a todos permissão de gravação para o seu diretório pessoal para veicular arquivos somente leitura de public_html , sugiro que encontre o incêndio mais próximo e gravar a documentação.

Se o seu diretório pessoal for /home/steve , para que o servidor da Web acesse seu diretório public_html , será necessário o seguinte:

  • Anônimo executa o acesso no seu diretório pessoal ( chmod a+x /home/steve ). Isso permite que o usuário do servidor da web altere o diretório para o diretório public_html (mas não permite que o usuário do servidor da web veja uma lista de arquivos em seu diretório pessoal).

  • Acesso anônimo de leitura e execução ao diretório public_html ( chmod a+rx /home/steve/public_html ).

Para preservar a segurança do seu diretório .ssh , você precisa do seguinte:

  • Permitir somente que você (e mais ninguém) acesse o diretório: chmod 700 /home/steve/.ssh
  • Permitem somente acesso de leitura / gravação a arquivos críticos: chmod 600 /home/steve/.ssh/{authorized_keys,id_rsa}
por 20.01.2011 / 02:43
3

Você não deseja um + rwx em / home / steve /: que permitiria que todos no sistema fizessem qualquer coisa, até mesmo alterassem seu diretório pessoal. Está correto para o ssh reclamar.

O que você precisa é que o Apache consiga acessar / home / steve / public_html; Para fazer isso, ele precisa acessar as coisas dentro de / home / steve, que é o bit de execução. Então "chmod a + x ~" deve ser suficiente.

(Se você não estiver familiarizado com isso, "~" é uma abreviação para o seu diretório pessoal.)

Você provavelmente deseja definir as permissões em sua casa assim:

chmod u=rwx,go=x ~    # go+rx if you want others to be able to ''ls /home/steve''

E conceda a todos a capacidade de {ler arquivos, ler diretórios e percorrer diretórios} em tudo em public_html recursivamente:

chmod -R a+rX ~/public_html

Serviço da web feliz!

~ jon.

    
por 20.01.2011 / 02:45