Creé un usuario especial en /etc/passwd con:
secure:x:2000:2000:secure:/bin:/usr/sbin/nologin
No quiero permitir el inicio de sesión de este usuario (a través de la consola, ssh, ftp, de ninguna manera).
Él es sólo para ejecutar un script a través de:
sudo su secure -c '/home/someuser/secure.script'
Pero me da This user is currently not available.
. ¿Cómo configurarlo para poder ejecutar el script de esta manera pero evitar cualquier inicio de sesión (consola, ssh, ftp,...) de este usuario en el sistema?
He notado que cuando escribo /usr/sbin/nologin
en la línea de comandos, la computadora responde con This account is currently not available.
.
Respuesta1
Este es un caso de uso típico para sudo
.
Estás mezclando sudo
lo que permite ejecutar comandos como otro usuario y es altamente configurable (puedes especificar selectivamente qué usuario puede ejecutar qué comando como qué usuario) y su
cuál cambia a otro usuario si conoces la contraseña (o eres root). su
siempre ejecuta el shell escrito en /etc/passwd
, incluso si su -c
se usa. Debido a esto su
no es compatible con /usr/sbin/nologin
.
Deberías usar
sudo -u secure /home/someuser/secure.script
Como sudo
es configurable, puedes controlar quién puede usar este comando y si necesita ingresar una contraseña para ejecutarlo. Necesitas editar /etc/sudoers
usando visudo
para hacer esto. (Tenga cuidado al editar /etc/sudoers y utilice siempre visudo para hacerlo. La sintaxis no es trivial y un error puede bloquearle el acceso a su cuenta raíz).
Esta línea en sudoers permite que cualquier persona del grupo somegroup
ejecute el comando como secure
:
%somegroup ALL=(secure) /home/someuser/secure.script
Esto permite que cualquier miembro del grupo somegroup
ejecute el comando secure
sin ingresar una contraseña:
%somegroup ALL=(secure) NOPASSWD: /home/someuser/secure.script
Esto permite user1
ejecutar el comando secure
sin ingresar una contraseña:
user1 ALL=(secure) /home/someuser/secure.script
Respuesta2
Descubrí que el problema principal es " /usr/sbin/nologin
" en /etc/passwd
Cuando quiero ejecutar su en este caso, debe tenerlo -s /bin/bash
dentro, por ejemplo:su -s /bin/bash -c '/home/someuser/secure.script' secure
Respuesta3
su
está utilizando el shell especificado en /etc/passwd
.
No es necesario utilizar su
con sudo
.
Por lo tanto no mezclar su
con sudo
: usar sudo -u secure '/home/someuser/secure.script'
.