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

22

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).

Es solo 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 al sistema?


He notado que cuando escribo /usr/sbin/nologinen la línea de comandos, la computadora responde con This account is currently not available..

Peter
fuente
Acerca de sudo su, consulte unix.stackexchange.com/questions/218169/…
Kusalananda

Respuestas:

27

Este es un caso de uso típico para sudo.

Está mezclando lo sudoque permite ejecutar comandos como otro usuario y es altamente configurable (puede especificar selectivamente qué usuario puede ejecutar qué comando como qué usuario) y suqué cambia a otro usuario si conoce la contraseña (o es root). susiempre ejecuta el shell escrito /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, puede controlar quién puede usar este comando y si necesita ingresar una contraseña para ejecutarlo. Necesita editar /etc/sudoersusando visudopara hacer esto. (Tenga cuidado al editar / etc / sudoers y siempre use visudo para hacerlo. La sintaxis no es trivial y un error puede bloquearlo de su cuenta raíz).

Esta línea en sudoers permite a cualquier persona en el grupo somegroupejecutar el comando como secure:

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

Esto permite que cualquier persona 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
cg909
fuente
13

Descubrí que el problema principal es " /usr/sbin/nologin" en /etc/passwd Cuando quiero ejecutar su en este caso, debe tener -s /bin/bashdentro, por ejemplo:su -s /bin/bash -c '/home/someuser/secure.script' secure

Peter
fuente
1
Sí, suusa el shell escrito en / etc / passwd por defecto. Usar sues una forma de iniciar sesión como usuario de otro usuario. nologinimprime el mensaje "Este usuario no está disponible actualmente". y salidas sudono usa un shell para ejecutar un comando, por lo que usar sudosin sutambién funcionará. Vea mi respuesta para más información sudo.
cg909
2

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

No necesitas usar sucon sudo.

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

ctrl-alt-delor
fuente
-2

Esto puede no ser 100% relevante para la pregunta, pero puede ayudar a alguien que haya recibido un mensaje de advertencia similar This user is currently not available

1) Verifique con su empresa de alojamiento si se le ha otorgado acceso de shell.

2) si está utilizando CWP7: configure el acceso de Shell en ON ingrese la descripción de la imagen aquí

ShapCyber
fuente
2
1) Acceso shell es claramente disponible como la cuestión habla de correr su, sudoy todo tipo de otras cosas. 2) No hay ninguna indicación en la pregunta de que la instalación en cuestión esté detrás de un panel de control web de ninguna forma.
Philip Kendall
1
Sí (aparte de que es un sitio de preguntas y respuestas, no un foro). Pero parte de ser útil es asegurarse de que su respuesta sea realmente relevante para la pregunta, y no creo que esta respuesta sea realmente relevante: el póster claramente ya tiene acceso de shell, entonces, ¿cómo se activaría a través de un panel de control (que puede que ni siquiera exista) ¿resolver el problema?
Philip Kendall
3
@ShapCyber: Tenga en cuenta que esta pregunta trata con alguien que creó manualmente un nuevo usuario especial por su cuenta. Las respuestas en este "hilo" (Pregunta) deben abordar la situación en esa pregunta. Si le ha surgido un problema diferente que tiene esto como una solución, lo que hay que hacer es Pregunta y Auto-Respuesta a su propia nueva pregunta.
Jeff Schaller
1
Lo que dijo @JeffSchaller es correcto. Y le animo, ShapCyber, a que realmente haga, por favor, haga y responda una pregunta con el problema y la solución que encontró (con suficiente detalle para ser útil); y luego agregue un comentario a esta pregunta para vincular la suya. Esa es la mejor manera de ayudar a los futuros lectores en el marco de cómo se configura este sitio. :)
Comodín
2
@ShapCyber ​​es por eso que lo alentamos a abrir una nueva pregunta, para que las búsquedas encuentren la respuesta correcta para su problema.
Jeff Schaller