Potresti andare nel modo sbagliato. Invece di dare a un utente una shell bash "ristretta", dovresti solo dargli accesso ai comandi di cui avrebbe bisogno per essere eseguito come root. Ad esempio, nel tuo file sudoers:
tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log
Fai attenzione a consentire agli utenti di eseguire vim come root. Vim ha molte funzionalità integrate, come le fughe alla shell e la possibilità di eseguire comandi dall'interno di vim. A seconda della tua distribuzione, potresti avere sudoedit
a disposizione. Funziona allo stesso modo di un normale Vim, tranne che è progettato per gestire gli escape della shell e simili.
Sulla mia Synology Diskstation che esegue DSM 6 solo gli utenti amministratori possono ssh in modo coerente (gli utenti non amministratori hanno shell come /sbin/nologin in /etc/passwd -- puoi impostarlo su /bin/sh per consentire temporaneamente ssh, ma al riavvio il file /etc/passwd viene ripristinato). Per questo motivo è necessaria una sorta di restrizione sudo per un account che altrimenti esiste solo per eseguire ad es. /sbin/spegnimento. Le seguenti righe in /etc/sudoers hanno funzionato per me:
# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff
Traduzione:non consentire tutti i comandi, quindi consentire solo il comando desiderato (senza richiedere la password in questo caso).
Con questa configurazione sudo chiede la password e poi fallisce per comandi diversi da quello autorizzato:
[email protected]:~$ sudo su -
Password:
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
[email protected]:~$