Atualmente, este usuário não está disponível - mas permite executar scripts por esse usuário

22

Eu criei um usuário especial no / etc / passwd com:

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

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

Ele é 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 scripts dessa maneira, mas impedir qualquer login (console, ssh, ftp, ...) desse usuário no sistema?


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

Pedro
fonte
Sobre sudo su, consulte unix.stackexchange.com/questions/218169/…
Kusalananda

Respostas:

27

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

Você está misturando o sudoque 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 suque alterna para outro usuário se você souber a senha (ou é root). susempre executa o shell escrito /etc/passwd, mesmo que su -cseja usado. Por isso, 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 esse comando e se ele / ela precisa digitar uma senha para executá-lo. Você precisa editar /etc/sudoersusando visudopara fazer isso. (Tome cuidado ao editar o / etc / sudoers e sempre use o visudo para fazer isso. A sintaxe não é trivial e um erro pode impedi-lo de acessar sua conta root.)

Essa 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 no grupo somegroupexecute o comando como securesem inserir uma senha:

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

Isso permite user1executar o comando como securesem inserir uma senha:

user1    ALL=(secure) /home/someuser/secure.script
cg909
fonte
13

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

Pedro
fonte
11
Sim, suusa o shell escrito em / etc / passwd por padrão. Usar sué uma maneira de fazer login como usuário de outro usuário. nologinimprime a mensagem "Este usuário não está disponível no momento". e sai. sudonão usa um shell para executar um comando, portanto, usar sudosem sutambém funcionará. Veja minha resposta para mais informações sudo.
cg909
2

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

Você não precisa usar sucom sudo.

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

ctrl-alt-delor
fonte
-2

Isso pode não ser 100% relevante para a pergunta, mas pode ajudar alguém que tenha uma mensagem de aviso semelhante This user is currently not available

1) Verifique com sua empresa de hospedagem se você concedeu acesso ao shell.

2) se você estiver usando o CWP7: Defina o Acesso ao Shell como LIGADO insira a descrição da imagem aqui

ShapCyber
fonte
2
1) o acesso Shell é claramente disponível como a questão fala sobre a execução su, sudoe todos os tipos de outras coisas. 2) Não há indicação na pergunta de que a instalação em questão esteja atrás de um painel de controle da Web de qualquer forma.
Philip Kendall
11
Sim (exceto um site de perguntas e respostas, não um fórum). Mas parte de ser útil é garantir que sua resposta seja realmente relevante para a pergunta, e eu não acho que essa resposta seja realmente relevante: o pôster já tem acesso ao shell, portanto, como ativá-lo através de um painel de controle (que pode até não existir) resolver o problema?
Philip Kendall
3
@ShapCyber: Observe que esta pergunta lida com alguém que criou manualmente um novo usuário especial por conta própria. As respostas neste "tópico" (pergunta) devem abordar a situação nessa pergunta. Se você encontrou um problema diferente que tem isso como uma solução, a coisa certa a fazer é Pergunte e Auto-Resposta a sua nova pergunta.
Jeff Schaller
11
O que o @JeffSchaller disse está correto. E eu encorajo você, ShapCyber, a realmente fazer e responder a uma pergunta com o problema e a solução que você encontrou (com detalhes suficientes para ser útil); e adicione um comentário a esta pergunta para vincular à sua. É assim que melhor ajuda os futuros leitores na estrutura de como este site é configurado. :)
Curinga
2
@ShapCyber, é por isso que incentivamos você a abrir uma nova pergunta, para que as pesquisas encontrem a resposta certa para o problema.
Jeff Schaller