Posso creare un utente SSH che può accedere solo a determinate directory?


45

Ho un server privato virtuale a cui posso collegarmi usando SSH con il mio account di root, essendo in grado di eseguire qualsiasi comando linux e accedere a tutta l'area del disco, ovviamente.

Vorrei creare un altro account utente, che sarebbe in grado di accedere a questo server anche tramite SSH, ma solo in una determinata directory, ad esempio /var/www/example.com/

Ad esempio, immagina che questo utente abbia un ENORME file error.log (500 MB) che si trova in /var/www/example.com/logs/error.log Quando si accede a questo file tramite FTP, questo utente deve scaricare 500 MB per visualizzare le ultime righe del registro, ma vorrei che fosse in grado di eseguire qualcosa del genere:

tail error.log

Pertanto ho bisogno che sia in grado di accedere al server tramite SSH, ma non desidero concedergli l'accesso a tutte le aree del server.

Come posso fare questo?

Risposte:


29

chroot l'utente.


Aggiornare:

L' articolo di TechRepublic di Vincent Danen afferma:

Con il rilascio di OpenSSH 4.9p1, non è più necessario fare affidamento su hack di terze parti o complicate configurazioni chroot per limitare gli utenti alle loro home directory o consentire loro l'accesso ai servizi SFTP.

modifica / etc / ssh / sshd_config (/ etc / sshd_config su alcune distribuzioni) e imposta le seguenti opzioni:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Assicurarsi che la direttiva "Match" sia alla fine del file. Questo dice a OpenSSH che tutti gli utenti nel gruppo sftp devono essere chrootati nella loro home directory (che% h rappresenta nel comando ChrootDirectory

Per tutti gli utenti che desideri chroot, aggiungili al gruppo sftp usando:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Il comando usermod sopra aggiungerà l'utente joe al gruppo sftp e imposterà la shell su / bin / false in modo che non possano assolutamente ottenere l'accesso alla shell. I comandi chown e chmod imposteranno le autorizzazioni necessarie per la directory. Con queste autorizzazioni impostate, l'utente potrà caricare e scaricare file, ma non può creare directory o file nella directory principale

Il chrooting degli account di shell è un po 'più complicato in quanto richiede che alcuni file di dispositivo e una shell siano disponibili nella home directory dell'utente. I seguenti comandi configureranno un sistema chroot di base su Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

Con quanto sopra, l'utente joe può ssh in e sarà limitato al chroot. Sfortunatamente, questo non fa molto, ma ti dà un'idea di come può essere impostato. A seconda di ciò che si desidera fornire, sarà necessario installare librerie e binari aggiuntivi.


L'Ubuntu Community Sito dice

Creare un chroot

  1. Installa i pacchetti dchroot e debootstrap.

  2. Come amministratore (cioè usando sudo), crea una nuova directory per il chroot. In questa procedura, /var/chrootverrà utilizzata la directory . Per fare ciò, digitare sudo mkdir /var/chroot in una riga di comando.

  3. Come amministratore, apri /etc/schroot/schroot.confin un editor di testo. Digitare cd /etc/schroot, seguito da gksu gedit schroot.conf. Ciò ti consentirà di modificare il file.

  4. Aggiungi le seguenti righe in schroot.confe quindi salva e chiudi il file. Sostituisci your_usernamecon il tuo nome utente.

    [lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 users = your_username gruppi = sbuild root-groups = root

Apri un terminale e digita:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Questo creerà una 'installazione' di base di Ubuntu 10.04 (Lucid Lynx) nel chroot. Il download dei pacchetti potrebbe richiedere del tempo. Nota: è possibile sostituire lucid con la versione di Ubuntu di propria scelta. Nota: è necessario modificare quanto sopra mirror.url.comcon l'URL di un mirror dell'archivio valido locale. Ora dovrebbe essere stato creato un chroot di base. Digitare sudo chroot /var/chroot per passare a una shell di root all'interno del chroot.

Impostazione del chroot

Esistono alcuni passaggi di base che è possibile eseguire per configurare il chroot, fornendo servizi come la risoluzione DNS e l'accesso /proc.

Nota: digitare questi comandi in una shell esterna al chroot.

Digitare quanto segue per montare il /proc filesystem nel chroot (richiesto per la gestione dei processi):

sudo mount -o bind /proc /var/chroot/proc  

Digitare quanto segue per consentire la risoluzione DNS dall'interno del chroot (richiesto per l'accesso a Internet):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Pochissimi pacchetti sono installati di default in un chroot (anche sudo non è installato). Utilizzare apt-get install package_nameper installare i pacchetti.


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.