La modifica delle autorizzazioni di scrittura per SFTP in jail nega l'accesso


14

Ho esplorato molti siti Web e forum su come configurare un utente SFTP imprigionato in una determinata directory usando CHROOT. Ecco i passaggi che ho seguito ma non riesco a ottenere i permessi di scrittura per funzionare.

Impostare

sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

Creare una cartella

mkdir /var/www/sites

Crea utente e gruppo

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

Autorizzazioni e proprietà

chown root:root /var/www
chmod 755 /var/www/sites

Ora con queste impostazioni l'utente uploader è in grado di SFTP nella home directory ma non è in grado di scrivere nella directory.

Si verificano 2 errori tipici, non riesco ad accedere o non ho i permessi di scrittura.

Errore di accesso

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

Sono in contrasto con il tentativo di capirlo e se qualcuno potesse indicarmi la giusta direzione, lo apprezzerei molto.

Grazie.

Risposte:


16

Scopri la soluzione. L'utente è incarcerato /var/www/sites. Ho quindi creato un'altra cartella /var/www/sites/site1.

Io uso:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

Ciò ha consentito alla home directory di disporre delle autorizzazioni corrette per il login e di poter quindi scrivere nella cartella successiva.

Se le esigenze degli utenti l'accesso in scrittura ai /var/www/sites, allora è necessario carcere l'utente al /var/wwwquale ha root:rootproprietà e le autorizzazioni di 755. È quindi necessario dare /var/www/sitesla proprietà di root: (il vostro gruppo) ed i permessi di 775.


1

Forse la soluzione migliore è:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

Aggiungi gli utenti:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

Quindi, per ogni utente che hai creato, aggiungi un tag ssh come questo: (puoi anche usare la direttiva "Match Group" come nell'esempio invece di "Match User")

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Quindi puoi gestire tutti gli utenti di cui hai bisogno in un ambiente chroot.

Quindi, Fabrizio


Per quanto riguarda il tuo blocco di codice finale: Matches supportano più target in elenchi separati da virgole, quindi potremmo semplificare / riordinare notevolmente avendo un singolo set di sostituzioni per entrambi gli utenti, dal titoloMatch User dev1,dev2
underscore_d

1
Quindi, come si imposta in modo che siano bloccati nella cartella a cui hanno accesso in lettura / scrittura?
Kevin B brucia 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.