Come aggiungere un utente con accesso SFTP / FTP alla cartella '/ var / www / html / website_abc' su Amazon EC2 Centos?


19

Possibile duplicato:
autorizzazioni directory Linux

Sto lavorando con alcuni sviluppatori di terze parti e vorrei concedere a SFTP (o FTP) l'accesso alla cartella principale per un sito Web su cui stanno lavorando, in '/var/www/html/website_abc'modo che possano caricare i file lì. Nota che sto ospitando i miei altri siti Web lì sulla stessa istanza EC2 ad es '/var/www/html/website_xyz'.

Solo per sottolineare che sto lavorando con più siti Web su 1 singola istanza EC2, la struttura dei siti Web è la seguente:

/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz

I miei obiettivi sono i seguenti:

  • L'utente "adeveloper" ha accesso a "/ var / www / html / website_abc" e solo "/ var / www / html / website_abc"
    • Suppongo che l'utente "adeveloper" userà "adeveloper @ [il mio IP elastico]" come nome utente per accedere a SFTP (o FTP), giusto?
  • L'utente "adeveloper" non ha accesso a "/ var / www / html /" o ad altre directory nella mia istanza EC2
  • Che ne dici del file della chiave privata?
    • Devo trasferire il mio file di chiave privata agli sviluppatori di terze parti: è consigliabile farlo?
    • Esiste un modo per generare un diverso file di chiave privata per loro o consentire loro di accedere con nome utente e password?

Ho fatto ricerche ma la maggior parte delle persone parlava di come accedere a EC2 tramite SFTP, che sono già in grado di utilizzare WinSCP.

chiarimenti:

  • Avrei bisogno di "adeveloper" per poter caricare materiale su /var/www/html/website_abccui è permesso "scrivere"
  • Avrei bisogno di "adeveloper" per non avere il permesso di "scrittura" per qualsiasi file / directory /var/www/html/e, idealmente, nemmeno il permesso di "lettura"
  • Tuttavia, qui sembra esserci un grosso problema:
    • /var/www/html/ha già l'autorizzazione 777 poiché questa è la mia cartella DocumentRoot. Quindi, come posso impedire a "Adeveloper" di accedere al mio altro sito Web?

In parte risolto sono riuscito a raggiungere i miei obiettivi usando OpenSSH (creo la cartella .ssh all'interno di / var / www / html / website_abc / e genera la chiave privata e la do agli sviluppatori di terze parti). Ho anche imparato che non avrei mai dovuto fornire il file della chiave privata che mi ha fornito AWS. Sto ancora imparando a conoscere chroot.


1
Mi dispiace @lain ma devi avermi frainteso. Immagino che potresti passare il tempo a fare qualcos'altro di più significativo che dare un falso giudizio come questo. Forse se leggi attentamente la mia domanda, avresti davvero più a che fare con SSH / SFTP che con le autorizzazioni di file / cartelle di Linux o piuttosto era una confusione tra le due cose (perché ero confuso? Non lo so, ecco perché Avevo bisogno di aiuto). Questo non è un duplicato esatto dell'altro thread come hai ritenuto. Ad ogni modo, sono riuscito a raggiungere i miei obiettivi usando OpenSSH. Sto ancora imparando a conoscere chroot come suggerito da Tom H e alcuni risultati di ricerca. Grazie
ericn il

"Ho anche imparato che non avrei mai dovuto fornire il file della chiave privata che AWS mi ha dato" Perché .....
Michael Bailey,

Risposte:


11

Per impostazione predefinita, i servizi che forniscono una shell remota, come ssh o telnet, o una sessione remota interattiva per comandi come sftp, consentono a un utente locale di passare a qualsiasi directory per cui dispongono delle autorizzazioni e recuperare una copia di qualsiasi file a cui hanno accesso.

Come configurazione di sicurezza generale questo è un peccato perché ci sono molti file e directory che sono leggibili dal mondo per necessità. Per esempio, qui sono io un utente non root su un box CentOS remoto;

$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...

ad esempio, posso accedere a molte cose che idealmente vorresti limitare a un utente sconosciuto a cui desideri fornire l'accesso locale.

Qui sto guardando tutti gli utenti locali configurati nel /etc/passwdfile;

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

I sistemi Unix forniscono il chrootcomando che consente di reimpostare l' /utente su una directory nella gerarchia del filesystem, dove non possono accedere a file e directory "di livello superiore".

Tuttavia, nel tuo caso, sarebbe opportuno fornire un chroot virtuale implementato dal servizio di shell remoto. sftp può essere facilmente configurato per limitare un utente locale a un sottoinsieme specifico del filesystem usando una configurazione in

quindi nel tuo caso, vuoi chrootl' adeveloperutente nella /var/www/html/website_abcdirectory.

Puoi impostare una directory chroot per il tuo utente per confinarli nella sottodirectory in questo /var/www/html/website_abcmodo /etc/ssh/sshd_config;

Questa roba richiede openssh-server dopo 4.8?, Quindi probabilmente richiede CentOS 6.2

Match Group sftp
    ChrootDirectory %h
    AllowTcpForwarding no

(non testato, vedere man sshd_configper confermare la sintassi)

e quindi aggiungere quegli utenti al gruppo sftp;

 groupadd sftp
 usermod -d /var/www/html/website_abc adeveloper
 usermod -G sftp adeveloper

Riguardo alle chiavi condivise

dovresti creare una coppia di chiavi aggiuntiva per gli utenti esperti e inviarla al tuo consulente. (o in alternativa, chiedi loro di inviare la tua chiave pubblica e aggiungerla al file authorized_keys per adeveloper)

non mollare mai la tua chiave privata, ecco perché si chiama privato ;-)

alternative ftp tradizionali

vsftp / proftp etc supportano anche le configurazioni chroot, ma ai giorni nostri le configurazioni basate su ssh sono il modo normale e il supporto per ftp è solo storico.

ci sono un paio di collegamenti ai tutorial qui;
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


Finora non sono stato in grado di capire chroot ma sono ancora in fase di apprendimento e non mi sono ancora arreso. Sono riuscito a raggiungere i miei obiettivi sopra indicati usando OpenSSH però. Grazie ancora
ericn il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.