Questão Como posso criar um usuário que não seja de login?


Eu gostaria de criar um usuário e um grupo chamado subversion em um sistema RHEL 5. Eu olhei para a página man para useradd e eu acho que o comando seria apenas ser ...

useradd subversion

No entanto, não sabe como evitar a criação de um diretório inicial. Além disso, não quero que seja um usuário que possa efetuar login no sistema.

O objetivo principal é apenas fornecer um proprietário para um repositório SVN.


102


origem




Respostas:


Você pode usar o -M switch (certifique-se de que é um capital) para garantir que nenhum diretório inicial seja criado:

useradd -M subversion

em seguida, bloqueie a conta para impedir o login:

usermod -L subversion

57



Esta não é uma resposta particularmente forte, o usuário criado por este meio ainda tem um shell. E você nem sequer avisou o OP que este era o caso. Retrospectivamente isso seria usermod -s /bin/false subversion, ou com --shell /bin/false para useradd - Lee Hambley
@beak a conta está bloqueada, ter uma shell é um ponto discutível. - John T
@beak na verdade, apenas o usuário root seria capaz de acessar a conta bloqueada, mas por que se preocupar se a pessoa já obteve acesso root? E definir o shell não faz muito quando um usuário pode executar su -s /bin/bash username e ignorar isso. - John T
obrigado por tomar o tempo para ter a discussão, você está claro, correto; mas me dói ver usuários não-login com shells definidos, parece-me preguiçoso e, caso alguém não esteja familiarizado com o sistema, é bom que eles não possam acidentalmente fazer algo não intencional; hackers são uma raça diferente, se eles já tem um shell na máquina, eu acho que é basicamente game over - Lee Hambley
Esses comentários cobriram exatamente as coisas que eu esperava aprender, obrigado @Beaks && John T - Rixius


useradd -r subversion

por man useradd:

-r, --system create a system account

O sinalizador -r criará um usuário do sistema - um que não tenha uma senha, um diretório inicial e não consiga efetuar o login.


173



este comando irá até criar um grupo para o usuário chamado o mesmo. Então o usuário "subversion" estará no grupo "subversion". Ótimo para quando você mais tarde quiser fazer "sudo chown -R subversão: subversion / path / to / folder" - s3v1
com -r só ainda podemos fazer o login. precisamos de -s / bin / false para desativar o shell do usuário. - c4il
@ c4il Mas o único que pode entrar neles é o root, certo? Quero dizer, eles não têm uma senha, então eu esperaria que apenas o root pudesse fazer login neles. - Camilo Martin


Outra solução para criar um usuário do sistema, usando adduser:

adduser --system --no-create-home --group yourusername

Você pode remover --group se você não precisa do seu nome de usuário, e --no-create-home se você precisar de um lar para esse usuário.

Como mencionado por py4on nos comentários, em alguns sistemas pode ser necessário usar o --disabled-login opção para, bem, desativar o login para este usuário. Parece ser o comportamento padrão no Debian, no entanto.

Tenha em atenção que o ID numérico do utilizador será de uma conta do sistema. Você pode consertar o uid usando o --uid opção, no entanto.

Finalmente, note que em alguns sistemas (por exemplo, o Fedora) adduser é um link simbólico para useradd, caso em que esta resposta não é válida.


15



Para endereçar "não quero que seja um usuário que possa fazer login", adicione o sinalizador --disabled-login também (antes yourusername) - py4on
@ py4on: Embora esta opção esteja documentada na manpage, ela parece ser o padrão pelo menos no Debian. - Skippy le Grand Gourou


A resposta mais clara para a pergunta original é executar o comando:

adduser subversion --shell=/bin/false

E se você não quiser o diretório home:

adduser subversion --shell=/bin/false --no-create-home

ou, se você quiser um usuário do sistema ainda mais bloqueado (também não irá criar um diretório home)

adduser subversion --system --group

Todos esses comandos criarão um grupo com o mesmo nome do usuário


10





A forma mais segura de fazer isso seria usar adduser igual a:

$ adduser -r -s /bin/nologin subversion

NOTA: Certifique-se de incluir -s /sbin/nologin para desabilitar qualquer shell de login de ser disponibilizado para a conta.

Confirmação da configuração

$ grep subversion /etc/passwd /etc/shadow
/etc/passwd:subversion:x:496:496::/home/subversion:/bin/nologin
/etc/shadow:subversion:!!:17232::::::

No entanto, não há diretório:

$ ll /home | grep subversion
$

Confirme se a conta é utilizável de outra forma:

$ sudo -u subversion whoami
subversion

$ sudo -u subversion date
Tue Mar  7 08:58:57 EST 2017

Remoção

Se você precisar remover esta conta:

$ userdel subversion -r
userdel: subversion mail spool (/var/spool/mail/subversion) not found
userdel: subversion home directory (/home/subversion) not found
$

E confirme:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$

6



adduser não reconhece a opção -r. Eu acho que você quis dizer useradd. - felwithe
@felwithe não, toda resposta que eu escrevo eu sempre testo antes de postar. Eu verifiquei e esse switch mostra em um sistema CentOS 6.x. - slm
Aqui está um pastebin do resultado. Eu estou no Ubuntu 16 LTS. Eu não sei qual versão do adduser está instalada, mas nunca imaginei que mudaria muito ao longo do tempo ou de sistema para sistema. Eu tentei com um sinalizador --system, que criou um homedir para o usuário (eu não queria um). Finalmente eu fiz isso com useradd ao invés de adduser e funcionou como planejado. Então eu assumi que você tinha digitado como adduser quando deveria ser useradd. - felwithe
@felwithe sim eu não estava duvidando de você, apenas deixando você saber que eu tentei 8-). Eu sou um mod no site Unix e Linux e esses cmds são notoriamente diferentes distribuições b / w. O OP menciona o RHEL na questão, por isso respondi assim, mas eles não o rotularam como específico, o que é parte da confusão sobre este OMI da Q & A. - slm


Em uma máquina do CentOS 7

  • se o usuário não existir:
    useradd testuser --shell=/sbin/nologin

  • se você quiser modificar um usuário existente:
    usermod testuser --shell=/sbin/nologin


1