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.