Per creare un utente SSH che dispone solo dell'autorizzazione per accedere a cartelle specifiche


48

Ho installato SSH, ma ho scoperto che se utilizzo il mio account originale per accedere a Ubuntu, ha troppe autorizzazioni.

Voglio costringere l'utente ad avere autorizzazioni solo per cartelle specifiche in Ubuntu. Come posso configurare un tale utente?

Risposte:


50

Questo è semplice Basta creare un nuovo utente con la sua home directory impostata su quella di cui hai bisogno per avere accesso (questo comando deve essere eseguito sotto sudoo nella shell di root):

adduser --home /restricted/directory restricted_user

Ciò creerà un utente restricted_user, la directory /restricted/directorye quindi le autorizzazioni sulla directory verranno impostate in modo che l'utente possa scrivergli. Per impostazione predefinita, non sarà in grado di scrivere in un'altra directory.

Se hai già la directory, puoi eseguire il addusercomando con --no-create-homeun'opzione aggiunta e impostare le autorizzazioni manualmente (anche con i privilegi di root), come:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Se è necessario rendere inaccessibili per questo utente anche le directory scrivibili a livello mondiale, esistono due varianti.

1) Se si desidera fornire all'utente una sessione di shell interattiva, prendere in considerazione la possibilità di seguire questo manuale sulla creazione di un carcere chroot (nel proprio /restricted/directory).

Successivamente, aggiungi quanto segue al tuo sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Se hai solo bisogno che copi i file tra il suo endpoint di connessione e il tuo host, tutto è molto più semplice. Aggiungi queste righe alla fine del tuo sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

Quindi commenta Subsystem sftp /usr/lib/openssh/sftp-serverinserendo un #segno hash ( ) all'inizio.

Dopo aver riavviato il server SSH (non interrompe le sessioni interattive al riavvio, quindi è sicuro anche se hai configurato erroneamente qualcosa; inoltre, non chiude la sessione in esecuzione prima di aver verificato di essere ancora in grado di accedere), tutto dovrebbe funzionare come inteso.


1
Ho provato, ma sembra che riesca ancora a cd .. e sfogliare la directory superiore. e quando uso vi a.txt nella directory superiore, mostra: premi invio o comando per continuare, e non riesco a chiudere vi
Foolish

1
Posso usare l'opzione # 2 se l'utente dovrebbe avere accesso solo a sshfs?
flickerfly,

1
Tutto funziona bene, tranne per il fatto che non ho il permesso di scrivere. Come posso impostare un'autorizzazione di scrittura per questa directory con restrizioni. Se uso chmod 775, l'utente non può più accedere.
My-Name-Is

3
Dovresti scrivere la Subsystem sftp internal-sftpriga nel tuo secondo esempio sopra il Matchblocco. Altrimenti ssh stamperà un errore e non si avvierà.
Tik0

1
Avviso spoiler: non funziona con scp
bicicletta

5

Il modo più semplice per creare utenti con restrizioni che non possono allontanarsi dalla directory specificata (ad esempio, nella directory superiore ecc.) E avere un set di comandi limitato / selezionato da utilizzare è utilizzare una shell con restrizioni. Rif:

http://man.he.net/man1/rbash

Innanzitutto, crea un collegamento simbolico chiamato rbash(esegui come utente root).

ln -s /bin/bash /bin/rbash

Quindi crea un normale utente con questa shell limitata e imposta la sua home directory sulla cartella desiderata:

useradd -s /bin/rbash -d /home/restricted_folder username

Anche senza la Shell con restrizioni, se non si aggiunge esplicitamente questo utente all'elenco dei sudoer o ad altri gruppi speciali, sarà limitato per impostazione predefinita.

Con la shell con restrizioni, i seguenti elementi non sono consentiti o non vengono eseguiti:

  • cambiare directory con cd

  • impostazione o annullamento dei valori di SHELL, PATH, ENV o BASH_ENV

  • specificando i nomi dei comandi contenenti /

  • specificando un nome file contenente un / come argomento per il file. comando incorporato

  • Specificare un nome file contenente una barra come argomento dell'opzione -p al comando incorporato hash

  • importazione delle definizioni delle funzioni dall'ambiente shell all'avvio

  • analizzando il valore di SHELLOPTS dall'ambiente shell all'avvio

  • reindirizzare l'output utilizzando gli operatori di reindirizzamento>,> |, <>,> &, &> e >>

  • usando il comando exec execin per sostituire la shell con un altro comando

  • aggiunta o eliminazione di comandi integrati con le opzioni -f e -d al comando di abilitazione incorporato

  • Utilizzo del comando abilita incorporato per abilitare i comandi incorporati della shell disabilitati

  • specificando l'opzione -p al comando builtin command

  • disattivare la modalità riservata con set + r o set + o limitato.

Queste restrizioni vengono applicate dopo qualsiasi file di avvio

Inoltre / Facoltativamente, per limitare l'utente a un set di comandi limitato / selezionato da utilizzare, è possibile creare un file .bash_profile di sola lettura per quell'utente, con

PATH=$HOME/bin

e collega simbolicamente qualunque comando tu autorizzi nella cartella ~ / bin a quell'utente:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

eccetera.

HTH


posso trovare qualsiasi file sul filesystem, inclusa la directory / root e posso leggere questi file.
Mi chiedo
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.