Este usuário não está disponível no momento - mas permite a execução do script por este usuário

Este usuário não está disponível no momento - mas permite a execução do script por este usuário

Criei um usuário especial em /etc/passwd com:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Não quero permitir o login deste usuário (via console, ssh, ftp, de qualquer forma).

Ele serve apenas para executar um script via:

sudo su secure -c '/home/someuser/secure.script'

Mas isso me dá This user is currently not available.. Como configurá-lo para poder executar o script desta forma, mas impedir qualquer login (console, ssh, ftp,...) deste usuário no sistema?


Percebi que quando digito /usr/sbin/nologinna linha de comando, o computador responde com This account is currently not available..

Responder1

Este é um caso de uso típico para sudo.

Você está misturando sudoo que permite executar comandos como outro usuário e é altamente configurável (você pode especificar seletivamente qual usuário pode executar qual comando como qual usuário) e suqual muda para outro usuário se você souber a senha (ou for root). susempre executa o shell escrito em /etc/passwd, mesmo que su -cseja usado. Por causa disso sunão é compatível com /usr/sbin/nologin.

Você deveria usar

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

Como sudoé configurável você pode controlar quem pode usar este comando e se precisa digitar uma senha para executá-lo. Você precisa editar /etc/sudoersusando visudopara fazer isso. (Tenha cuidado ao editar /etc/sudoers e sempre use visudo para fazer isso. A sintaxe não é trivial e um erro pode bloquear seu acesso à sua conta root.)

Esta linha em sudoers permite que qualquer pessoa do grupo somegroupexecute o comando como secure:

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

Isso permite que qualquer pessoa do grupo somegroupexecute o comando securesem inserir uma senha:

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

Isso permite user1executar o comando securesem inserir uma senha:

user1    ALL=(secure) /home/someuser/secure.script

Responder2

Descobri que o principal problema é " /usr/sbin/nologin" em /etc/passwd Quando quero executar o su neste caso, ele deve ter -s /bin/bashdentro, então por exemplo:su -s /bin/bash -c '/home/someuser/secure.script' secure

Responder3

suestá usando o shell especificado em /etc/passwd.

Você não precisa usar suwith sudo.

Portanto, não misture sucom sudo: use sudo -u secure '/home/someuser/secure.script'.

informação relacionada