¿Cómo puedo crear un usuario sin inicio de sesión?

134

Me gustaría crear un usuario y un grupo llamados subversionen un sistema RHEL 5. Miré la página del manual useraddy creo que el comando sería simplemente ...

useradd subversion

Sin embargo, no estoy seguro de cómo evitar crear un directorio de inicio. Además, no quiero que sea un usuario que pueda iniciar sesión en el sistema.

El objetivo principal es simplemente proporcionar un propietario para un repositorio SVN.

Ethan
fuente
¿Realmente has mirado la página man de useradd y no has encontrado -M (no crear el directorio HOME)?
inemanja

Respuestas:

76

Puede usar el -Minterruptor (asegúrese de que sea mayúscula) para asegurarse de que no se creará un directorio de inicio:

useradd -M subversion

luego bloquee la cuenta para evitar iniciar sesión:

usermod -L subversion
John T
fuente
59
Esta no es una respuesta particularmente fuerte, el usuario creado por este medio todavía tiene un shell. Y ni siquiera advirtió al OP que este era el caso. Retrospectivamente que sería usermod -s /bin/false subversion, o con --shell /bin/falseauseradd
Lee Hambley
77
@beak la cuenta está bloqueada, tener un shell es un punto discutible.
John T
15
@beak en realidad solo el usuario root podría acceder a la cuenta bloqueada, pero ¿por qué molestarse si la persona ya ha obtenido acceso root? Y configurar el shell no hace mucho cuando un usuario puede ejecutarlo su -s /bin/bash usernamey evitarlo.
John T
11
gracias por tomarse el tiempo para discutir, por supuesto que está en lo correcto; pero me duele ver a los usuarios que no inician sesión con shells definidos, me parece flojo, y en caso de que alguien no esté familiarizado con el sistema, es bueno que accidentalmente no puedan hacer algo sin querer; los piratas informáticos son una raza diferente, si ya tienen una cáscara en la máquina, creo que básicamente se acabó el juego
Lee Hambley
11
Estos comentarios cubrieron exactamente las cosas que esperaba aprender, gracias @Beaks && John T
Rixius
220

useradd -r subversion

por man useradd:

-r, --system create a system account

El indicador -r creará un usuario del sistema, uno que no tiene una contraseña, un directorio de inicio y no puede iniciar sesión.

rynop
fuente
1
Este comando incluso creará un grupo para el usuario llamado el mismo. Por lo tanto, el usuario "subversión" estará en el grupo "subversión". Genial para cuando más tarde quieras hacer "sudo chown -R subversion: subversion / path / to / folder"
s3v1
49
con -r solo, aún podemos iniciar sesión. necesitamos -s / bin / false para deshabilitar el shell del usuario.
c4il
8
@ c4il Pero el único que puede iniciar sesión en ellos es root, ¿verdad? Quiero decir, no tienen una contraseña, por lo que esperaría que solo root pueda iniciar sesión en ellos.
Camilo Martin
pero de todos modos podemos asignarles contraseñas, lo intenté passwd subversion.
Shayan
@rynop ¿Cómo puedo verificar si un usuario en mi máquina es un usuario del sistema? ¿hay alguna manera? Creo que no están en el grupo de sudo'ers para empezar.
Shayan
22

Otra solución para crear un usuario del sistema, usando adduser :

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

Puede eliminar --groupsi no necesita agrupar --no-create-homesu nombre de usuario y si necesita un hogar para este usuario.

Como mencionó py4on en los comentarios, en algunos sistemas uno puede necesitar usar la --disabled-loginopción para, bueno, deshabilitar el inicio de sesión para este usuario. Sin embargo, parece ser el comportamiento predeterminado en Debian.

Tenga en cuenta que la identificación numérica del usuario será de una cuenta del sistema. Sin --uidembargo, puedes arreglar el uid usando la opción.

Finalmente, tenga en cuenta que en algunos sistemas (por ejemplo, Fedora) adduseres un enlace simbólico a useradd, en cuyo caso esta respuesta no es válida.

Skippy le Grand Gourou
fuente
3
Para abordar "No quiero que sea un usuario que pueda iniciar sesión" agregue también el indicador --disabled-login(antes yourusername)
toxefa
@ py4on: aunque esta opción está documentada en la página de manual, al menos parece ser la predeterminada en Debian.
Skippy le Grand Gourou
15

La respuesta más clara a la pregunta original es ejecutar el comando:

adduser subversion --shell=/bin/false

Y si tampoco quieres el directorio de inicio:

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

o, si desea un usuario del sistema aún más bloqueado (normalmente, esto no creará un directorio de inicio; se ha informado que seguirá creando un directorio de inicio en linux mint según el comentario a continuación)

adduser subversion --system --group

Todos estos comandos crearán un grupo con el mismo nombre que el usuario.

TimmyGee
fuente
En Mint, el último comando definitivamente crea un directorio de inicio:Creating home directory '/home/nodejs' ...
jcollum
11

La forma más segura de hacerlo sería usarlo adduserasí:

$ adduser -r -s /bin/nologin subversion

NOTA: Asegúrese de incluir -s /sbin/nologinpara deshabilitar cualquier shell de inicio de sesión que esté disponible para la cuenta.

Confirmación de configuración

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

Sin embargo no hay directorio:

$ ll /home | grep subversion
$

Confirme que la cuenta es utilizable de otra manera:

$ sudo -u subversion whoami
subversion

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

Eliminación

Si necesita eliminar esta cuenta:

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

Y confirma:

$ grep rtim-hc-user /etc/passwd /etc/shadow
$
slm
fuente
1
adduser no reconoce la opción -r. Creo que te referías a useradd.
Felwithe
@felwithe no, cada respuesta que escribo siempre la pruebo antes de publicar. Lo comprobé y ese interruptor se muestra en un sistema CentOS 6.x.
slm
Aquí hay un pastebin del resultado . Estoy en Ubuntu 16 LTS. No sé qué versión de adduser está instalada, pero nunca imaginé que cambiaría mucho con el tiempo o de un sistema a otro. Luego lo probé con un indicador --system en su lugar, que creó un homedir para el usuario (no quería uno). Finalmente lo hice con useradd en lugar de adduser y funcionó según lo planeado. Así que supuse que lo había escrito mal como adduser cuando se suponía que debía usarseradd.
Felwithe
@felwithe sí, no estaba dudando de ti, solo para hacerte saber que lo intenté 8-). Soy un mod en el sitio de Unix y Linux y estos cmds son notoriamente diferentes distribuciones en blanco y negro. El OP menciona a RHEL en la pregunta, por lo tanto, por qué lo respondí así, pero no lo etiquetaron como específico de Red Hat, lo que es parte de la confusión en esta OMI de preguntas y respuestas.
slm
1

En una máquina CentOS 7

  • si el usuario no existe:
    useradd testuser --shell=/sbin/nologin

  • si desea modificar un usuario existente:
    usermod testuser --shell=/sbin/nologin

lauc.exon.nod
fuente
0

Comience generando una contraseña cifrada para el usuario con un máximo de 8 caracteres de largo haciendo:

openssl passwd -crypt new_password_less_than_eight_chars_long

Entonces haces:

useradd -m -g groupname -G otherGroupsSeperatedByComma -p encryptedPassword username
usuario1047344
fuente
0

En Debian, puede crear un usuario del sistema (sin directorio de inicio) y un shell de inicio de sesión:

useradd --system --shell=/usr/sbin/nologin <username>

Si su nologinprograma está /sbin/nologinactivado, cambie en consecuencia.

yoonghm
fuente