Usted podría estar yendo en esto de la manera incorrecta. En lugar de darle a un usuario un shell bash 'restringido', solo debe darle acceso a los comandos que necesitaría para ejecutar como root. Por ejemplo, en su archivo sudoers:
tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log
Tenga cuidado al permitir que los usuarios ejecuten vim como root. Vim tiene muchas funciones integradas, como escapes al shell y la capacidad de ejecutar comandos desde dentro de vim. Dependiendo de su distribución, es posible que tenga sudoedit
disponible. Esto funciona igual que un Vim normal, excepto que está diseñado para manejar escapes de shell y demás.
En mi Synology Diskstation que ejecuta DSM 6, solo los usuarios administradores pueden usar ssh de manera constante (los usuarios que no son administradores tienen shell como /sbin/nologin en /etc/passwd; puede configurar esto en /bin/sh para permitir ssh temporalmente, pero al reiniciar el archivo /etc/passwd se restablece). Por esta razón, se necesita algún tipo de restricción de sudo para una cuenta que, de lo contrario, existe solo para ejecutar, p. /sbin/apagar. Las siguientes líneas en /etc/sudoers me funcionaron:
# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff
Traducción:no permita todos los comandos, luego permita solo el comando deseado (sin pedir contraseña en este caso).
Con esta configuración, sudo solicita la contraseña y luego falla con los comandos que no están en la lista blanca:
[email protected]:~$ sudo su -
Password:
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
[email protected]:~$