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/nologin
na linha de comando, o computador responde com This account is currently not available.
.
sudo su
, consulte unix.stackexchange.com/questions/218169/…Respostas:
Este é um caso de uso típico para
sudo
.Você está misturando o
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 qual usuário) esu
que alterna para outro usuário se você souber a senha (ou é root).su
sempre executa o shell escrito/etc/passwd
, mesmo quesu -c
seja usado. Por isso,su
nã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/sudoers
usandovisudo
para 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
somegroup
execute o comando comosecure
:Isso permite que qualquer pessoa no grupo
somegroup
execute o comando comosecure
sem inserir uma senha:Isso permite
user1
executar o comando comosecure
sem inserir uma senha:fonte
Eu descobri que o principal problema é "
/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
fonte
su
usa o shell escrito em / etc / passwd por padrão. Usarsu
é uma maneira de fazer login como usuário de outro usuário.nologin
imprime a mensagem "Este usuário não está disponível no momento". e sai.sudo
não usa um shell para executar um comando, portanto, usarsudo
semsu
também funcionará. Veja minha resposta para mais informaçõessudo
.su
está usando o shell especificado em/etc/passwd
.Você não precisa usar
su
comsudo
.Portanto, não se misture
su
comsudo
: usesudo -u secure '/home/someuser/secure.script'
.fonte
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
fonte
su
,sudo
e 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.