Posible duplicado:
permisos de directorio de Linux
Estoy trabajando con algunos desarrolladores externos y me gustaría otorgar acceso SFTP (o FTP) a la carpeta raíz de un sitio web en el que están trabajando, es decir, '/var/www/html/website_abc'
para que puedan cargar los archivos allí. Tenga en cuenta que estoy alojando mis otros sitios web allí en la misma instancia EC2, por ejemplo '/var/www/html/website_xyz'
.
Solo para enfatizar que estoy trabajando con varios sitios web en una sola instancia de EC2, la estructura de los sitios web es la siguiente:
/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz
Mis objetivos son los siguientes:
- El usuario 'adeveloper' tiene acceso a '/ var / www / html / website_abc' y solo '/ var / www / html / website_abc'
- Supongo que el usuario 'adeveloper' usará 'adeveloper @ [mi IP elástica]' como nombre de usuario para iniciar sesión en SFTP (o FTP), ¿estoy en lo cierto?
- El usuario 'adeveloper' no tiene acceso a '/ var / www / html /' ni a ningún otro directorio en mi instancia EC2
- ¿Qué tal el archivo de clave privada?
- ¿Debo pasar mi archivo de clave privada a los desarrolladores externos? ¿Es recomendable hacerlo?
- ¿Hay alguna forma de generar un archivo de clave privada diferente para ellos o permitirles iniciar sesión con nombre de usuario y contraseña?
He realizado búsquedas, pero la mayoría de la gente hablaba sobre cómo acceder a EC2 a través de SFTP, que ya puedo usar WinSCP.
Aclaraciones:
- Necesitaría 'un desarrollador' para poder subir cosas a las
/var/www/html/website_abc
cuales es permiso de 'escritura' - Necesitaría 'un desarrollador' para no tener permiso de 'escritura' para ningún archivo / directorio
/var/www/html/
, e idealmente ni siquiera permiso de 'lectura' - Sin embargo, parece haber un gran problema aquí:
/var/www/html/
ya tiene permiso 777 ya que esta es mi carpeta DocumentRoot. Entonces, ¿cómo evito que 'adeveloper' acceda a mi otro sitio web?
Parcialmente resuelto , logré mis objetivos usando OpenSSH (creo la carpeta .ssh dentro de / var / www / html / website_abc / y genero una clave privada y se la doy a los desarrolladores externos). También aprendí que nunca debería dar el archivo de clave privada que me dio AWS. Todavía estoy aprendiendo sobre chroot.
Respuestas:
Por defecto, los servicios que proporcionan un shell remoto, como ssh o telnet, o una sesión remota interactiva para comandos como sftp, permiten que un usuario local cambie a cualquier directorio para el que tenga permisos y recupere una copia de cualquier archivo al que tenga acceso.
Como configuración de seguridad general, esto es desafortunado porque hay muchos archivos y directorios que son legibles por necesidad. Por ejemplo, aquí soy yo un usuario no root en alguna caja remota de CentOS;
por ejemplo, puedo acceder a muchas cosas, que idealmente querrías restringir a algún usuario desconocido a quien deseas proporcionar acceso local.
Aquí estoy mirando a todos los usuarios locales configurados en el
/etc/passwd
archivo;Los sistemas Unix proporcionan el
chroot
comando que le permite restablecer el/
usuario a algún directorio en la jerarquía del sistema de archivos, donde no pueden acceder a archivos y directorios "superiores".Sin embargo, en su caso, sería apropiado proporcionar un chroot virtual implementado por el servicio de shell remoto. sftp se puede configurar fácilmente para restringir a un usuario local a un subconjunto específico del sistema de archivos mediante una configuración en
por lo tanto, en su caso, desea que
chroot
eladeveloper
usuario ingrese al/var/www/html/website_abc
directorio.Puede establecer un directorio chroot para que su usuario los confine al subdirectorio de esta
/var/www/html/website_abc
manera/etc/ssh/sshd_config
;Esto requiere un servidor openssh posterior a 4.8 ?, entonces probablemente requiera CentOS 6.2
(no probado, ver
man sshd_config
para confirmar la sintaxis)y luego agregue esos usuarios al grupo sftp;
En cuanto a claves compartidas
debe crear un par de claves adicional para los usuarios expertos y enviarlo a su asesor. (o, alternativamente, pídales que le envíen su clave pública y la agreguen al archivo autorizado_claves para
adeveloper
)nunca renuncies a tu clave privada, por eso se llama privada ;-)
alternativas de ftp tradicionales
vsftp / proftp, etc. también admiten configuraciones chroot, pero en la actualidad las configuraciones basadas en ssh son la forma normal, y el soporte para ftp es solo histórico.
hay un par de enlaces a tutoriales aquí;
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
fuente