2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Creare un utente SSH che ha solo il permesso di accedere a cartelle specifiche

Ho installato SSH, ma ho scoperto che se uso il mio account originale per accedere a Ubuntu, ha troppi permessi.

Voglio vincolare l'utente ad avere i permessi solo per cartelle specifiche in Ubuntu. Come posso configurare un tale utente?

Risposte (2)

53
53
53
2010-06-06 12:49:32 +0000

Questo è semplice. Basta creare un nuovo utente con la sua home directory impostata su quella a cui avete bisogno che abbia accesso (questo comando deve essere eseguito sotto sudo o nella shell di root):

adduser --home /restricted/directory restricted_user

Questo creerà un utente restricted_user, la directory /restricted/directory e poi i permessi sulla directory saranno impostati in modo che l'utente possa scriverci. Non avrà la possibilità di scrivere su nessun'altra directory per impostazione predefinita.

Se avete già la directory, potete eseguire il comando adduser con l'opzione --no-create-home aggiunta e impostare i permessi manualmente (anche con privilegi di root), come:

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

Se avete bisogno di rendere inaccessibili a questo utente anche le directory scrivibili dal mondo, ci sono due varianti.

1) Se vuoi fornire una sessione interattiva di shell all'utente, allora considera di seguire questo manuale sulla creazione di una jail chroot (nel tuo /restricted/directory).

Dopo di che, 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ù facile. Aggiungi queste linee alla fine del tuo sshd_config:

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

Subsystem sftp internal-sftp

Poi commenta lo Subsystem sftp /usr/lib/openssh/sftp-server mettendo un segno di hash (#) all'inizio.

Dopo aver riavviato il vostro server SSH (non uccide le sessioni interattive al riavvio, quindi è sicuro anche se avete configurato male qualcosa; inoltre, non chiude la vostra sessione in corso prima che abbiate controllato che siate ancora in grado di accedere), tutto dovrebbe funzionare come previsto.

5
5
5
2017-11-04 02:03:42 +0000

Il modo più semplice per creare un utente ristretto che non può vagare fuori dalla directory data (per esempio, nella directory superiore ecc.), e avere un insieme limitato/scelto di comandi da usare, è usare una Shell ristretta. Rif: http://man.he.net/man1/rbash

Per prima cosa, creare un link simbolico chiamato rbash (eseguito come utente root).

ln -s /bin/bash /bin/rbash

Poi create un utente normale con questa Restricted Shell, e impostate la sua home dir nella cartella desiderata:

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

Anche senza la Restricted Shell, se non aggiungete esplicitamente questo utente alla lista di sudoer, o a qualsiasi gruppo speciale, allora sarà limitato di default.

Con la Restricted Shell, quanto segue non è permesso o non viene eseguito:

  • cambiare directory con cd

  • impostare o annullare i valori di SHELL, PATH, ENV, o BASH_ENV

  • specificare nomi di comandi contenenti /

  • specificare un nome di file contenente un / come argomento del comando .

  • specificare un nome di file contenente una barra come argomento dell'opzione -p del comando hash

  • importare definizioni di funzioni dall'ambiente di shell all'avvio

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

  • reindirizzare l'output usando le opzioni >, >|, <>, >&, &>, e >> reindirizzare l'output

  • usare il comando exec builtin per sostituire la shell con un altro comando

  • aggiungere o eliminare comandi builtin con le opzioni -f e -d al comando enable builtin

  • usare il comando enable builtin per abilitare builtin di shell disabilitati

  • specificare l'opzione -p al comando command builtin

  • disattivare la modalità ristretta con set +r o set +o restricted.

Queste restrizioni sono applicate dopo qualsiasi file di avvio

Inoltre/Opzionalmente, per restringere l'utente a un insieme limitato/scelto di comandi da usare, si può creare un .bash\profile di sola lettura per quell'utente, con

PATH=$HOME/bin

e collegare in symlink qualsiasi comando che si permette 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

ecc.

HTH