Como você cria um usuário sem senha?

22

No os X é possível ter usuários sem senhas. Se você os inspecionar com dscla senha deles, aparecerá como *. Isto é usado para os usuários do sistema, como os usuários de bancos de dados como mysql, pgsqletc. O que é legal sobre isso é que esses usuários não aparecer na tela de login e você não pode fazer login como eles sem sudoetc.

Depois de excluir esse usuário, tentei recriá-lo, mas não consegui. Eu consegui obter um usuário com uma senha em branco e poderia definir a senha para *. Mas nenhum teve o mesmo efeito acima, pois o usuário apareceu na minha tela de login.

Como você cria esse usuário?

googletorp
fonte
No Linux, você passa o sinalizador --disabled-password para adduser. Talvez o OS X tenha algo semelhante em seu repertório de linha de comando?
BR
Você quis dizer; o usuário pode efetuar login sem uma senha ou não pode fazer o login, porque nenhuma senha foi definida?
precisa saber é o seguinte
1
Percebo que você não aceitou uma resposta ... um requisito para ficar de fora das várias listas do xdm é ter um ID de usuário significativamente baixo. em muitos sistemas, useraddcomeça a adicionar IDs em 1000, e os gerenciadores de login não mostram os IDs de usuário abaixo disso, mas tudo acima. portanto, embora não seja uma resposta para essa pergunta, pode ser a solução para o problema. observe que 1000 é arbitrário e pode ser menor ou maior na sua distribuição. Para corrigir, modifique a entrada do usuário /etc/passwdpara ter um uid menor. Agora eu devo fazer uma pergunta semelhante.
Xenoterracide
@xenoterracide: Quando recriei o usuário, dei o ID antigo, era o usuário pgsql que excluí, que tem um ID maior que o mysql, por isso tenho certeza de que não teve nenhum impacto nesse caso , mas obrigado pela informação de qualquer maneira.
googletorp

Respostas:

6

Você pode executar passwd --delete <username>depois de criar o usuário com adduser. Depois disso, você poderá fazer login sem inserir uma senha.

Eugen Anghel
fonte
4
Eu acho que é exatamente o oposto do que está sendo pedido aqui.
Shadur
No começo, achei que essa era a resposta certa (ou melhor), até reler a pergunta do OP, que menciona "usuário do sistema" e não aparece na "tela de login". Este método aparecerá na tela de login e você pode 'sudo' usando este método.
precisa saber é o seguinte
3

Um usuário em / etc / passwd com diretório inicial de / dev / null e shell de / sbin / nologin, pode ser usado para comandos de sudo, mas não pode realmente estar conectado, por exemplo;

do meu / etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

Eu meio que lembro que isso fará com que ele desapareça da tela de login do XDM também, mas eu não uso mais o XDM, então isso é um palpite :-)

Chris Huang-Leaver
fonte
Esta é a resposta certa, porque o OP pediu uma conta que você não pode 'sudo' ou aparece na "tela de login", configurando para '/ sbin / nologin' para shell. Um ponto a ser observado é que o OP solicitou "usuário do sistema", também deve mencionar que 'useradd --system' deve ser usado para criar UID em número baixo (como o portage / ebuild)
HidekiAI
3

Você pode usar usermod, o que desativará a senha usando um !e não um *.

usermod -L <username>

Na página de manual no usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
Jordan Mack
fonte
2

Usando dscl daria

dscl . -passwd /Users/myuser ""
Raffi
fonte
Ao contrário da maioria das respostas acima ... realmente funcionou para mim.
precisa saber é o seguinte
1

Não tenho certeza sobre o OSX, mas no FreeBSD você pode usar:

pw add user mymuser -g mygroup -s /nonexistent -h -

o valor -passado para a -hopção diz pwpara definir o campo de senha em master.passwd como *, criando assim uma conta sem login. Definir o shell não é estritamente necessário, mas evita uma verificação do shell em /etc/pw.conf.

gvkv
fonte
1

Deixar o campo da senha vazio para o usuário no passwdarquivo funcionará.

Nikhil Mulley
fonte
-1

No Linux eu uso:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

A próxima alternativa deve ser mais multiplataforma (se a -ropção não estiver disponível):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Aqui:

  • a senha em / etc / shadow será configurada para *. Sem -p \*ele será!

  • shell será /sbin/nologin(você pode usar /bin/falsetambém, mas acho que /binpode ser montado tarde demais em alguns sistemas). Portanto, o usuário não pode fazer login

  • -d define o homedir do usuário

NOTA IMPORTANTE

Aqui -rcria um usuário do sistema:

Este sinalizador é usado para criar uma conta do sistema. Ou seja, um usuário com um UIDvalor inferior ao UID_MINdefinido em /etc/login.defs e cuja senha não expira. Observe que useradd não criará um diretório inicial para esse usuário, independentemente da configuração padrão em /etc/login.defs . É necessário especificar a -mopção se você deseja criar um diretório inicial para uma conta do sistema. Esta é uma opção adicionada pelo Red Hat .

A opção -rpode não estar presente no seu sistema. Então, para criar um usuário do sistema, que não é mostrado na tela de login, eu acho, você pode usar a -Kopção Algo como: -K UID_MIN=100 -K UID_MAX=499. Você pode tentar a opção como:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

para determinar automaticamente você UID_MAX, mas eu não testei no OS X. Você precisará usá SYS_UID_MAX- UID_MINlo se não for comentado no /etc/login.defs

O mesmo é para GID_MAXe GID_MINpara o ID do grupo do sistema. (Veja GID_MINe se não estiver comentado SYS_GID_MAXem /etc/login.defs para usar como GID_MAX)

Роман Коптев
fonte