¿Cuáles son los programas CLI estándar para administrar usuarios y grupos?

8

Básicamente, estoy preguntando sobre la administración de usuarios desde la línea de comandos (por ejemplo, en un sistema donde no hay herramientas gráficas disponibles). En el pasado he utilizado varios programas diferentes para agregar o grupos de usuarios y borrar o modificar sus atributos: adduser, useradd, usermod, gpasswd, y tal vez otros me han olvidado. También he escuchado un par de veces que algunos de estos programas son de bajo nivel y deben evitarse para uso general, pero nunca recuerdo cuál. Por lo tanto, me gustaría obtener una respuesta definitiva para qué programas son los recomendados para al menos las siguientes tareas:

  • Crea un nuevo usuario
  • Agregar un usuario a un grupo
  • Eliminar un usuario de un grupo
  • Cambiar el grupo primario de un usuario
  • Cambiar el shell de inicio de sesión o el directorio de inicio de un usuario
  • Eliminar un usuario

Estoy buscando herramientas estándar que puedo esperar que estén disponibles en casi cualquier sistema Linux (de cualquier distribución).

David Z
fuente
1
También groupmod. No voy a dar una respuesta a esto ... pero la forma más estándar es probablemente usar su editor de texto ... recuerde que los archivos afectados son solo texto delimitado.
xenoterracide
Curiosamente, antes de hacer esta pregunta, nunca había visto ni una sola mención de editar directamente los archivos. (De alguna manera tuve la impresión de que /etc/passwdera solo una parte de un sistema complejo)
David Z

Respuestas:

9

Lamentablemente, ninguna de esas operaciones fue estandarizada.

Algunos sistemas operativos ofrecen esta funcionalidad como parte del sistema operativo, como Linux, pero incluso si su sistema Linux los incluye, con el tiempo y en todas las distribuciones de Linux, las herramientas y sus nombres cambiaron, por lo que realmente no puede depender de un conjunto estándar de herramientas para hacer Esas tareas.

Debe tener un conjunto de herramientas por sistema operativo.

miguel.de.icaza
fuente
Nunca he cambiado los nombres ... pero he cambiado los interruptores. Recuerdo una vez que descubrí que un Linux no tenía gpasswd -a.
xenoterracide
1
Si la memoria sirve: RedHat una vez usó 'adduser' en lugar de 'useradd', y se comportó de manera diferente (creo que useradd era más Debianish). Más tarde hicieron 'adduser' un enlace simbólico a 'useradd'. Vea algunas referencias antiguas en redhat.com/docs/manuals/linux/RHL-5.2-Manual/install-guide/…
Stefan Lasiewski
7

En sistemas Debian (y derivados), addusery deluserson envoltorios de nivel superior useraddy funcionalidad relacionada. La creación de usuarios de portada, la suma y resta de miembros de grupos y la eliminación de usuarios. Los comandos correspondientes de crear / eliminar grupos son, con suficiente sensatez, addgroupy delgroup. usermodparece cubrir el caso de uso restante que usted nombre.

Phil Miller
fuente
6

Menciona Linux en la última parte de su pregunta, pero como el título es genérico, responderé por FreeBSD.

FreeBSD tiene comandos similares a Linux pero son comandos pasados ​​a la pwutilidad:

pw useradd [user|uid] ...
pw usermod [user|uid] ...

y así. Sin embargo, uno puede analizar el comando en dos partes: usery mod; un sustantivo y un verbo. Además, uno también puede usar groupy del:

pw groupdel [group|gid] ...

para, por ejemplo, eliminar un grupo. Esto es lo que creo que es realmente genial: ¡ el orden no importa, ni el espacio! Lo que esto significa es que puedes recordar cómo llamar al pensar en lo que quieres hacer (de todos modos, en inglés):

pw del user [user|uid] ...
pw mod group [group|gid] ...
pw show user [user|uid] ...
pw next user [user|uid] ...

¡y más! La pwutilidad también te permite bloquear y desbloquear cuentas:

pw lock [user|uid] ...
pw unlock [user|uid] ...

Las opciones y los parámetros que pasa están estandarizados (aunque no siempre se aplican a los comandos de llamada), por lo que la memorización se minimiza. En general, una buena manera de hacer las cosas.

Nota: las elipses en los ejemplos anteriores representan opciones y parámetros pasados ​​a pwusuarios o grupos no adicionales.

gvkv
fuente
Era una pregunta de Linux, pero la información se agradece de todos modos. Sería genial si Linux tuviera algo como esto.
David Z
Sustantivo y verbo, quieres decir.
Warren Young
D'oh! Arreglado.
gvkv
2

Solo para completar, en el extremo de bajo nivel del espectro mencionaría vipw (8) y vigr (8), justo arriba de "vi / etc / passwd" y "cat> / etc / passwd" pero justo debajo de "useradd ". Ah, y existen en la mayoría de las variantes de Unix.

cabeza de código
fuente
2

Todas estas herramientas están diseñadas para editar archivos de texto por ti. Si desea saber cómo administrar usuarios y grupos a través de sistemas, debe familiarizarse con estos archivos de texto subyacentes. Por suerte para ti, solo hay dos, /etc/passwdy /etc/group. También hay archivos complementarios /etc/shadowy /etc/gshadowpara sombrear passwd y group respectivamente.

Eli Frey
fuente
44
... y / etc / shadow, ya que la mayoría de los sistemas croarán si no es consistente con / etc / passwd
codehead
1

En muchas situaciones, saber cómo editar "/ etc / passwd" sigue siendo útil.

Kevin Cantu
fuente
1
Saber leer / etc / passwd es útil, pero modificarlo directamente es una mala práctica. En algunos * ixes que he usado (SysV moderno, OS X ...) estos archivos no son el lugar principal donde se almacenan los datos del usuario y del grupo. Son instantáneas por compatibilidad, o son fuentes primarias, pero hay una base de datos o índice que debe actualizarse cada vez que cambian. En esos sistemas, si no actualiza los archivos a través de las herramientas oficiales, los cambios no tendrán efecto inmediato, si es que lo hacen.
Warren Young
Simplemente no se enrede / etc / passwd
Stefan Lasiewski
1

Si está utilizando un backend que no sea el backend de la máquina local predeterminada (OpenLDAP es el más común), entonces cpu (utilidad de cambio de contraseña) podría ser el comando que está buscando. Se puede ejecutar en máquinas que no sean el maestro LDAP si está configurado correctamente, y su sintaxis es casi igual que useraddetc. con un prefijo de cpu. Entonces para agregarme podría hacer

$ sudo cpu useradd hamish

Vea la página de manual de la CPU para más detalles.

Hamish Downer
fuente
Interesante, pero una respuesta que solo se aplica en una máquina que obtiene su información de usuario de LDAP es de uso muy limitado para mí.
David Z
0

Si su pregunta se limitó a

cualquier sistema Linux (de cualquier distribución)

pero todos los sistemas tienen acceso de red a un único servidor. Podrías usar algo como NIS o YP. Por lo tanto, esta respuesta se limita a los administradores dentro de una sola organización.

Todavía tiene el problema de que casi todas las distribuciones tienen formas ligeramente diferentes de configurar YP, pero la configuración solo ocurre una vez. Además, este tipo de red no es trivial.

Dentro de un solo sitio / red, ganarás mucho haciendo esto. En combinación con el montaje automático, mi favorito es poder SSH en cualquier máquina * nix y tener todos mis archivos y herramientas de inicio disponibles para mí.

Hasta el punto, la distribución que elija para el maestro es el sistema que utiliza para administrar usuarios. Luego tendrá un único conjunto de herramientas / documentación para administrar usuarios y grupos.

Incluso es posible usar algo como herramientas LDAP y samba en el maestro. Usar samba también me permite tener mis archivos de inicio disponibles para mí en máquinas con Windows.

Stephen Jazdzewski
fuente
Gracias, pero estoy buscando una respuesta que se aplique igualmente a los sistemas no conectados en red.
David Z
0

Lo más parecido a un estándar que obtendrá es vi /etc/passwd, vi /etc/shadowy vi /etc/groups. (Los herejes pueden sustituir emacs.) Todo lo que he encontrado desde entonces solo funcionará en algunos sistemas.

En serio, descubra qué herramientas tiene su sistema operativo y utilícelas. Simplemente no espere que funcionen igual en todos los sistemas. Sería bueno si estuvieran estandarizados, pero no lo están.

David Thornley
fuente
El uso de un editor de texto para editar archivos de configuración que las herramientas pueden y deben editar por usted no es un estándar. Nunca debe usar un editor de texto para cambiar un archivo de configuración, cuando el sistema operativo o la aplicación proporciona una utilidad para hacerlo por usted. Esto es especialmente cierto para /etc/passwd, /etc/shadow, /etc/group, y /etc/gshadow. Para eso están las herramientas. Los humanos son propensos a errores, mientras que las herramientas han sido probadas y están (con suerte) libres de errores.
Aaron Toponce
Nunca llame a un editor /etc/passwdy amigos directamente. Use vipwy vigr, que: bloquea el archivo contra la edición concurrente; ejecuta tu editor favorito ( $VISUAL); no cambie el archivo si comete un error de sintaxis; en algunos sistemas (por ejemplo, FreeBSD) también se regeneran otros archivos que deben mantenerse sincronizados.
Gilles 'SO- deja de ser malvado'