Este usuario no está disponible actualmente, pero permite que este usuario ejecute el script

Este usuario no está disponible actualmente, pero permite que este usuario ejecute el script

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/nologinen 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 sudolo que permite ejecutar comandos como otro usuario y es altamente configurable (puedes especificar selectivamente qué usuario puede ejecutar qué comando como qué usuario) y sucuál cambia a otro usuario si conoces la contraseña (o eres root). susiempre ejecuta el shell escrito en /etc/passwd, incluso si su -cse usa. Debido a esto suno es compatible con /usr/sbin/nologin.

Deberías usar

sudo -u secure /home/someuser/secure.script

Como sudoes configurable, puedes controlar quién puede usar este comando y si necesita ingresar una contraseña para ejecutarlo. Necesitas editar /etc/sudoersusando visudopara 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 somegroupejecute el comando como secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Esto permite que cualquier miembro del grupo somegroupejecute el comando securesin ingresar una contraseña:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

Esto permite user1ejecutar el comando securesin 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/bashdentro, por ejemplo:su -s /bin/bash -c '/home/someuser/secure.script' secure

Respuesta3

suestá utilizando el shell especificado en /etc/passwd.

No es necesario utilizar sucon sudo.

Por lo tanto no mezclar sucon sudo: usar sudo -u secure '/home/someuser/secure.script'.

información relacionada