GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare l'accesso dell'utente al sistema Linux

Immagina questo scenario. Si desidera consentire a un utente di eseguire solo determinate attività ed eseguire determinati comandi. L'utente non deve modificare le variabili/percorsi di ambiente. Non può visitare le altre directory tranne la sua home directory e non può passare ad altri utenti, ecc. L'utente può essere in grado di eseguire solo alcuni comandi assegnati dall'amministratore di sistema. È possibile? Sì! Qui è dove Shell con restrizioni viene in aiuto. Utilizzando Restricted Shell, possiamo facilmente limitare l'accesso degli utenti al sistema Linux. Dopo aver messo gli utenti in modalità shell con restrizioni, possono eseguire solo un set limitato di comandi. In questo breve tutorial, parleremo di come farlo in Linux. Ho testato questa guida sul server minimo CentOS 7. Tuttavia, funzionerà sulla maggior parte delle distribuzioni simili a Unix.

Cos'è la shell con restrizioni?

Innanzitutto, vorrei chiarire cos'è esattamente Restricted Shell. Non è una shell separata come Bash, Korn Shell ecc. Se avvii una shell esistente usando le opzioni "rbash", "--restricted", "-r", allora diventerà una shell con restrizioni. Ad esempio, la shell Bourne può essere avviata come shell con restrizioni con il comando bsh -r e la shell Korn con il comando ksh -r .

La Restricted Shell limiterà gli utenti dall'esecuzione della maggior parte dei comandi e dalla modifica della directory di lavoro corrente. La Restricted Shell imporrà le seguenti restrizioni agli utenti:

  • Non ti permetterà di eseguire cd comando. Quindi non puoi andare da nessuna parte. Puoi semplicemente rimanere nella directory di lavoro corrente.
  • Non ti consentirà di modificare i valori di $PATH , $SHELL , $BASH_ENV o $ENV variabili ambientali.
  • Non ti consentirà di eseguire un programma che contiene un carattere /(barra). Ad esempio, non puoi eseguire /usr/bin/uname o ./uname comando. Puoi comunque eseguire il comando uname. In altre parole, puoi eseguire i comandi solo nel percorso corrente.
  • Non puoi reindirizzare l'output usando ' > ', ' >| ', ' <> ', ' >& ', ' &> ' e ' >> ' operatori di reindirizzamento.
  • Non ti permetterà di uscire dalla modalità shell con restrizioni all'interno degli script.
  • Non ti permetterà di disattivare la modalità shell con restrizioni con 'set +r' o 'imposta +o limitato' .

Questo può essere molto utile quando un numero elevato di utenti utilizza un sistema condiviso. Quindi, se vuoi consentire agli utenti di eseguire solo comandi specifici, Shell con restrizioni è un modo per farlo.

Limitare l'accesso dell'utente al sistema Linux utilizzando la shell con restrizioni

Innanzitutto, crea un collegamento simbolico chiamato rbash da Bash come mostrato di seguito. I seguenti comandi devono essere eseguiti come root utente.

# ln -s /bin/bash /bin/rbash

Quindi, crea un utente chiamato "otechnix" con rbash come sua shell di accesso predefinita.

# useradd ostechnix -s /bin/rbash

Imposta la password per il nuovo utente.

# passwd ostechnix

Crea un cestino directory all'interno della cartella home del nuovo utente.

# mkdir /home/ostechnix/bin

Ora, dobbiamo specificare quali comandi l'utente può eseguire.

Qui, lascerò che l'utente esegua solo "ls" , "mkdir" e "ping" comandi. Puoi assegnare qualsiasi comando a tua scelta.

Per farlo, esegui i seguenti comandi:

# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping

Ora capisci perché abbiamo creato la directory "bin" nel passaggio precedente. Gli utenti non possono eseguire alcun comando tranne i tre comandi precedenti.

Quindi, impedisci all'utente di modificare .bash_profile .

# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile

Modifica /home/otechnix/.bash_profile file:

# vi /home/ostechnix/.bash_profile

Modifica la variabile PATH come di seguito.

[...]
PATH=$HOME/bin
[...]

Premi ESC chiave e digita :wq per salvare e chiudere il file.

Ora, quando l'utente effettua l'accesso, la shell con restrizioni (rbash) verrà eseguita come shell di accesso predefinita e leggerà il .bash_profile , che imposterà PATH su $HOME/bin in modo che l'utente possa eseguire solo ls , mkdir e ping comandi. La shell con restrizioni non consentirà all'utente di modificare PATH e le autorizzazioni su .bash_profile non consentirà all'utente di modificare l'ambiente per aggirare le restrizioni durante la sessione di accesso successiva.

Verifica di Rbash

Ora, disconnettiti dall'utente root e accedi nuovamente con l'utente appena creato, ad esempio ostechnix nel nostro caso.

Quindi, esegui alcuni comandi per verificare se funziona o meno. Ad esempio, voglio cancellare il Terminale.

Per farlo, ho eseguito:

$ clear

Risultato di esempio:

-rbash: clear: command not found

Non puoi usare cd comando per passare alla directory diversa.

$ cd /root

Risultato di esempio:

-rbash: cd: restricted

Non puoi nemmeno reindirizzare l'output utilizzando > operator.

$ cat > file.txt

Risultato di esempio:

-rbash: file.txt: restricted: cannot redirect output

L'utente "otechnix" può utilizzare solo i comandi assegnati da te (l'amministratore di sistema, ovviamente). Nel nostro caso, l'utente può eseguire i comandi ls, mkdir e ping.

$ ls
$ mkdir ostechnix
$ ping -c 3 google.com

A parte questi tre comandi, l'utente non può eseguire nulla. È completamente sotto il tuo controllo.

Lettura consigliata:

  • Come monitorare l'attività degli utenti in Linux

Consenti nuovi comandi agli utenti

Se desideri assegnare più comandi a un utente, disconnettiti dall'utente corrente e torna alla root utente e assegnare i comandi come mostrato di seguito.

Ad esempio, per consentire all'utente (es. ostechnix) di eseguire rm comando, esegui il comando seguente come root utente.

# ln -s /bin/rm /home/ostechnix/bin/rm

Ora l'utente può usare il comando "rm".

Per maggiori dettagli, fare riferimento alle pagine di manuale nel collegamento riportato di seguito.

  • Pagine man di Rbash

Linux
  1. Come bloccare o disabilitare i normali accessi utente in Linux

  2. Come controllare la versione del sistema operativo e di Linux

  3. Come cambiare l'identità di un sistema Linux

  4. Linux:come limitare l'accesso a Internet per un particolare utente sulla LAN utilizzando Iptables in Linux?

  5. Come limitare i comandi utente in Linux

Come modificare la shell utente predefinita nel sistema operativo Linux

Come unire un sistema Linux a un dominio Active Directory

Gli effetti dell'aggiunta di utenti a un sistema Linux

Come modificare la shell predefinita nel sistema Linux

Come utilizzare il comando fd sul sistema Linux

Come conoscere i gruppi di un utente Linux