Possíveis permissões de diretório duplicado:
Linux
Estou trabalhando com alguns desenvolvedores de terceiros e gostaria de conceder acesso ao SFTP (ou FTP) à pasta raiz de um site no qual eles estão trabalhando, ou seja, '/var/www/html/website_abc'
para que eles possam fazer upload dos arquivos lá. Observe que estou hospedando meus outros sites na mesma instância do EC2, por exemplo '/var/www/html/website_xyz'
.
Apenas para enfatizar que estou trabalhando com vários sites em uma única instância do EC2, a estrutura dos sites é a seguinte:
/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz
Meus objetivos são os seguintes:
- O usuário 'adeveloper' tem acesso a '/ var / www / html / website_abc' e apenas '/ var / www / html / website_abc'
- Suponho que o usuário 'adeveloper' use 'adeveloper @ [meu IP elástico]' como nome de usuário para fazer login no SFTP (ou FTP), estou certo?
- O usuário 'adeveloper' não tem acesso a '/ var / www / html /' ou a outros diretórios na minha instância do EC2
- E o arquivo de chave privada?
- Eu passo meu arquivo de chave privada para desenvolvedores de terceiros - é aconselhável fazer isso?
- Existe uma maneira de gerar um arquivo de chave privada diferente para eles ou permitir que eles façam login com nome de usuário e senha?
Eu fiz pesquisas, mas a maioria das pessoas estava falando sobre como acessar o EC2 via SFTP, que eu já consigo usar o WinSCP.
Esclarecimentos:
- Eu precisaria de 'adeveloper' para poder fazer upload de itens para os
/var/www/html/website_abc
quais a permissão 'write' - Eu precisaria do 'adeveloper' para não ter permissão de 'gravação' para todos os arquivos / diretórios abaixo
/var/www/html/
e, idealmente, nem mesmo a permissão de 'leitura' - No entanto, parece haver um grande problema aqui:
/var/www/html/
já tem permissão 777, pois esta é minha pasta DocumentRoot. Então, como faço para parar o 'adeveloper' de acessar meu outro site?
Em parte resolvido , consegui alcançar meus objetivos usando o OpenSSH (eu crio a pasta .ssh em / var / www / html / website_abc / e giro a chave privada e a dou a desenvolvedores de terceiros). Também aprendi que nunca deveria fornecer o arquivo de chave privada que a AWS me deu. Ainda aprendendo sobre chroot.
Respostas:
Por padrão, os serviços que fornecem um shell remoto, como ssh ou telnet ou uma sessão remota interativa para comandos como sftp, permitem que um usuário local mude para qualquer diretório ao qual tenha permissão e recupere uma cópia de qualquer arquivo ao qual tenha acesso.
Como uma configuração geral de segurança, isso é lamentável, pois existem muitos arquivos e diretórios que são legíveis mundialmente por necessidade. Por exemplo, aqui sou eu um usuário não root em alguma caixa remota do CentOS;
por exemplo, eu posso acessar muitas coisas que, idealmente, você deseja restringir de algum usuário desconhecido ao qual deseja fornecer acesso local.
Aqui está eu, olhando todos os usuários locais configurados no
/etc/passwd
arquivo;Os sistemas Unix fornecem o
chroot
comando que permite redefinir o/
usuário para algum diretório na hierarquia do sistema de arquivos, onde eles não podem acessar arquivos e diretórios "superiores".No entanto, no seu caso, seria apropriado fornecer um chroot virtual implementado pelo serviço de shell remoto. O sftp pode ser facilmente configurado para restringir um usuário local a um subconjunto específico do sistema de arquivos usando uma configuração no
portanto, no seu caso, você deseja que
chroot
oadeveloper
usuário entre no/var/www/html/website_abc
diretórioVocê pode definir um diretório chroot para o seu usuário confiná-lo ao subdiretório da seguinte
/var/www/html/website_abc
maneira/etc/ssh/sshd_config
;Esse material requer o openssh-server posterior a 4,8?; Portanto, provavelmente requer o CentOS 6.2
(não testado, consulte
man sshd_config
para confirmar a sintaxe)e adicione esses usuários ao grupo sftp;
Em relação às chaves compartilhadas
você deve criar um par de chaves adicional para os usuários do desenvolvedor e enviá-lo ao seu consultor. (ou, alternativamente, peça que eles enviem sua chave pública e a adicionem ao arquivo allowed_keys para
adeveloper
)nunca desista da sua chave privada, é por isso que é chamada de privada ;-)
alternativas tradicionais de ftp
O vsftp / proftp etc também suporta configurações chroot, mas atualmente as configurações baseadas em ssh são a maneira normal, e o suporte para ftp é apenas histórico.
existem alguns links para tutoriais aqui;
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229
http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny
fonte