Criando um usuário sem senha

66

Estou tentando criar usuário sem senha como esta:

sudo adduser \
   --system \
   --shell /bin/bash \
   --gecos ‘User for managing of git version control’ \
   --group \
   --disabled-password \
   --home /home/git \
   git

É criado bem. Mas quando tento fazer login com o usuário git, recebo a senha digitando:

su git
Password:...

Quando deixo em branco, recebo um erro:

su: Authentication failed

O que há de errado?

Erik
fonte
11
Nada está errado, a autenticação falhou conforme o esperado. Você não receberá a mensagem de erro "não há senha, não pode fazer login".
Scal
Mas preciso criar a pasta .ssh no usuário git, como devo fazer isso?
Erik
11
Crie-o como root e defina as permissões corretas ou execute su gitcomo root onde você não precisa fornecer uma senha.
Scal
4
Usando chmode chown.
Scal
11
Fora do tópico, mas é "um usuário" e não "um usuário". writersdigest.com/online-editor/...
David Baucum

Respostas:

31

Você criou um usuário com uma "senha desativada", o que significa que não existe uma senha que permita que você faça login como usado. Isso é diferente de criar um usuário no qual qualquer pessoa possa efetuar login sem fornecer uma senha, o que é obtido especificando uma senha vazia e raramente é útil.

Para executar comandos como usuários do “sistema” que não fazem login normalmente, você precisa saltar através da conta root:

su -c 'su git -c "git init"'

ou

sudo -u git git init

Se você deseja que certos usuários possam executar comandos como o gitusuário sem permitir que eles executem comandos como root, configure o sudo (execute visudocomo root e adicione uma linha como %gitters ALL = (git) ALL).

Gilles 'SO- parar de ser mau'
fonte
@JulienRicard Er, sim e? Existem várias maneiras de entender o usuário sem senha e eu respondo pelo caso de uso indicado na pergunta. Uma pergunta sobre, por exemplo, a criação de um usuário convidado seria uma pergunta diferente.
Gilles 'SO- stop be evil'
41

A --disabled-passwordopção não definirá uma senha, o que significa que nenhuma senha é legal, mas o login ainda é possível (por exemplo, com chaves SSH RSA).

Para criar um usuário sem senha, use passwd -d $usernamedepois que o usuário for criado para tornar a senha vazia. Observe que nem todos os sistemas permitem que usuários com senha vazia efetuem login.

pallxk
fonte
3
Isso não parece funcionar na versão 16 ubuntu
Daniel Tate
@DanielTate entendeu o tipo de trabalho com: unix.stackexchange.com/a/472968/32558
Ciro Santilli escreveu:
9

Se você deseja acessar o sistema sob o usuário git, use sudo:

sudo -s -u git

ou

sudo su - git
Didi Kohen
fonte
4

Crie um usuário com senha vazia

sudo useradd test-user-0
echo test-user-0:U6aMy0wojraho | sudo chpasswd -e
su test-user-0

A solicitação de senha ainda é exibida infelizmente.

Mas se você pressionar enter sem digitar nada, ele fará o login como usuário test-user-0.

Os -esinalizadores informam chpasswdque a senha já está criptografada e U6aMy0wojrahoé o hash da string vazia.

Testado no Ubuntu 18.04.

Registro automático de terminal com getty -a

Pelo menos no terminal, você não precisa criar um usuário sem senha para permitir que alguém não digite suas senhas todas as vezes.

Consegui fazer isso no BusyBox, modificando inittab: Como fazer login automaticamente sem digitar o nome de usuário ou a senha do root no Buildroot BusyBox init?

Portanto, acredito que não deve ser muito difícil adaptar essa técnica modificando os scripts de sistema init do systemd do Ubuntu 18.04 para configurar um getty -a <user>terminal como mencionado nessa resposta, embora eu não tenha tentado fazer isso sozinho.

Ciro Santilli adicionou uma nova foto
fonte
2

Eu acho que é isso que você quer:

adduser --disabled-password --shell /bin/bash --gecos "User" $username

Você poderá

su $username

para executar comandos como esse usuário, em / bin / bash ou em qualquer shell que você especificar. --gecos "Usuário" basta colocar "Usuário" no campo de comentários para que você não seja solicitado a fornecer essas informações. Você pode colocar o que quiser nesse campo.

Douglas Krugman
fonte