Risposte:
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 sudo
o nella shell di root):
adduser --home /restricted/directory restricted_user
Ciò creerà un utente restricted_user
, la directory /restricted/directory
e 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 adduser
comando con --no-create-home
un'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-server
inserendo 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.
Subsystem sftp internal-sftp
riga nel tuo secondo esempio sopra il Match
blocco. Altrimenti ssh stamperà un errore e non si avvierà.
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:
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