Este usuário não está disponível atualmente - mas permite executar o script por este usuário

10

Eu criei um usuário especial em / 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 por meio de:

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

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

Eu notei que quando digito /usr/sbin/nologin na linha de comando, o computador responde com This account is currently not available. .

    
por peter 13.04.2017 / 11:36

4 respostas

13

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

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

Você deve usar

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

Como sudo é configurável, você pode controlar quem pode usar este comando e se ele precisa digitar uma senha para executá-lo. Você precisa editar /etc/sudoers usando visudo para 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 você da sua conta root.)

Esta linha em sudoers permite que qualquer pessoa no grupo somegroup execute o comando como secure :

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

Isso permite que qualquer pessoa no grupo somegroup execute o comando como secure sem digitar uma senha:

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

Isso permite que user1 execute o comando como secure sem digitar uma senha:

user1    ALL=(secure) /home/someuser/secure.script
    
por 13.04.2017 / 12:09
4

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

    
por 13.04.2017 / 20:00
1

su está usando o shell especificado em /etc/passwd .

Você não precisa usar su com sudo .

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

    
por 13.04.2017 / 11:57
-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 ON

    
por 20.08.2018 / 22:54

Tags