cattiva proprietà o modalità per il componente directory chroot


57

Ho creato l'utente MY_USER. Imposta la sua home directory su / var / www / RESTRICTED_DIR, che è il percorso a cui dovrebbe essere limitato. Quindi ho modificato sshd_config e impostato:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Quindi ho riavviato ssh. Ha reso MY_USER il proprietario (e il proprietario del gruppo) di RESTRICTED_DIR e lo ha ridotto a 755. Ottengo

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

Se ho rimosso le 2 righe da sshd_config, l'utente può accedere correttamente. Ovviamente può accedere a tutto il server però. Qual è il problema? Ho anche provato a trasferire RESTRICTED_DIR alla radice (mentre leggevo da qualche parte che qualcuno ha risolto lo stesso problema nel farlo). Senza fortuna..

Risposte:


73

Dalla manpage :

ChrootDirectory
Specifica il percorso di una directory da chroot (2) dopo l'autenticazione. Tutti i componenti del percorso devono essere directory di proprietà root che non sono scrivibili da nessun altro utente o gruppo . Dopo il chroot, sshd (8) cambia la directory di lavoro nella home directory dell'utente.

Suppongo che una o più delle directory sul percorso non soddisfino tali requisiti (il mio sospetto wwwè di proprietà o scrivibile dall'utente web, non da root).
Torna indietro e segui le istruzioni, assicurandoti che i requisiti sopra riportati in grassetto corsivo siano soddisfatti.


Questo mi sta facendo impazzire. Ho fatto "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; msgstr "usermod -a -G root www-data". Ma non riesco ancora ad accedere con MY_USER
MultiformeIngegno il

1
Il requisito è sui componenti del percorso ( /, /var, /var/www, e /var/www/RESTRICTED_DIRdevono rispettare tutte le esigenze di sicurezza di cui sopra). È un vero chroot ( rivedi la pagina man) - la home directory del tuo utente deve esistere all'interno del chroot , come deve /bine tutte le altre cose di cui il tuo utente avrà bisogno ...
voretaq7

2
Ok! Risolto. Ho impostato il dir chrooted a un livello superiore. Poi ho dato 777 permanenti al chrooted_dir originale. Funziona :)
MultiformeIngegno

1
Nonostante ciò che dice la manpage, e anche con il gruppo impostato su 'root', ho dovuto impostare l'autorizzazione gw prima che funzionasse (Ubuntu 14.04). La manpage dovrebbe dire che tutti i componenti del percorso devono essere directory di proprietà di root che non sono scrivibili da nessun altro utente o gruppo sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell

3
So che è piuttosto vecchio, ma invece di modificare direttamente le autorizzazioni per il /var/wwwpercorso, che potrebbe spezzare apache, sarebbe molto meglio mettere la directory sftp in un altro percorso, quindi utilizzare la mappatura URL in Apache per puntare all'altra directory . Controlla la documentazione qui httpd.apache.org/docs/2.4/urlmapping.html sottoFiles Outside DocumentRoot
Daniel

32

La directory ChrootDirectory deve essere di proprietà di root e avere la modalità 755:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

Ok, ora tutti i file in /var/www/RESTRICTED_DIRdevono essere di proprietà di MY_USER, che devono appartenere al www-datagruppo e avere la modalità 775 per consentire le autorizzazioni di gruppo, in questo modo:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

NOTA: Ricorda che è una buona pratica consentire l'accesso solo a una cartella htdocs se stai configurando apache.


3
Abbastanza sicuro che dovrebbe essere sudo usermod -a -G www-data MY_USERcome dovrebbe venire il gruppo dopo-G
sMyles il

Funziona ma non riesco a caricare nuovi file nella directory, posso solo modificare i file creati in precedenza con l'account root e con la proprietà dell'utente.
Dlopezgonzalez,

3

Oggi, dopo aver risolto alcuni problemi, mi sono reso conto che anche root doveva essere in grado di scrivere nelle directory.

Quanto segue non ha funzionato:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

Non appena ho risolto questo problema, il mio chroot ha iniziato a funzionare.

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
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.