Aquí está el código del script que estoy usando ahora:
getent group $MYGROUP
if [ $? -ne 0 ] ; then
sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"
Este enfoque funciona bien en openSuse. Pero hay varios problemas con la cuenta de usuario que crea en Ubuntu, así que estoy buscando ayuda aquí.
- el indicador de terminal no está configurado (
echo $PS1
no devuelve nada) - las teclas de flecha y la tecla tab no funcionan correctamente en el terminal
- la contraseña no parece funcionar (aunque todavía no estoy claro exactamente cuál es este problema)
- no se respetan los derechos / etc / sudoers establecidos para este nuevo usuario
Si, en cambio, creo manualmente el usuario con adduser
(en lugar de useradd) no tengo estos problemas en Ubuntu. Pero no puedo usar adduser
en openSuse (afaik). Por lo tanto, necesito un script o método no exclusivo de Debian para agregar cuentas de usuario a través de mi script bash que funciona en Ubuntu (y no deja de funcionar en otras distribuciones).
Finalmente, me gustaría entender las diferencias entre adduser
y useradd
. Por ejemplo, quiero saber qué directorio de esqueleto utiliza, adduser
ya que esa podría ser la razón por la useradd
que no funciona como se esperaba (porque acabo de aceptar el valor predeterminado).
Gracias
man useradd
): useradd es una utilidad de bajo nivel para agregar usuarios. En Debian, los administradores generalmente deberían usar adduser (8) en su lugar.sudo su -c "cmd arg1 arg2"
es equivalente asudo cmd arg1 arg2
.sudo su -c "cmd arg1 arg2"
para que funcione en todos los lugares donde lo necesito.adduser
es un script perl de más de 1000 líneas de largo, por lo que para las diferencias, puede echar un vistazo al script.adduser
pero no sé Perl. Entonces ese no es un buen enfoque para mí.Respuestas:
Se proporcionó mi solución aquí: /unix/82923/proper-way-to-add-a-user-account-via-bash-script por Ulrich Schwarz y Joseph R. . Lo principal que tuve que hacer fue agregar
-s /bin/bash
a miuseradd
comando existente y eliminar lo-p password
que espera una contraseña cifrada.Entonces haz esto:
fuente
echo mynewuser:password | sudo chpasswd
también funcionaEsto funcionará
fuente
mi script que construye automáticamente una cuenta de servicio con inicio de sesión con clave ssh y sin contraseña
fuente
Supongo que simplemente puedes usar una condición en tu script, algo como
(no se puede verificar si el archivo
/etc/issue
está presente en OpenSUSE, de lo contrario, puede poner la condición a la existencia de dicho archivo).fuente
adduser
withif command -v adduser >/dev/null; then
o me gusta? Eso es lo único que importa y no las distribuciones subyacentes. Además, hay otras distribuciones además de Debian / Ubuntu y OpenSUSE.