Estoy escribiendo un programa para deshabilitar a los usuarios de un sistema, quiero /bin/bash
reemplazarlo/bin/false.
Ejemplo
xxx:x:1:22:xx:/export/home/xx:**/bin/bash**
reemplazar a
xxx:x:1:22:xx:/export/home/xx:**/bin/false**
Quiero hacerlo con el uso del script bash.
Sé que una forma de hacer esto es usar sed
. Pero no soy bueno con las expresiones regulares.
¿Alguien puede ayudar?
Respuesta1
Bueno, no lo haces en absoluto con sed
expresiones regulares. Lo que haces es usar el programa.chshpara cambiar el shell de un usuario.
chsh -s /bin/false username
alternativamente:
usermod -s /bin/false username
Si desea reemplazarlo con un shell real, también deberá asegurarse de que esté incluido en /etc/shells
.
Respuesta2
¡Tenga en cuenta que chsh
no siempre está disponible! enalpinoLinux, por ejemplo, o sistemas integrados que utilizancaja ocupada..
Comando en línea simple sed
:
sed -i '/www-data/s/false/sh/g' /etc/passwd
(Este ejemplo cambia el shell de/bin/falsoa/bin/shpara usuariowww-datos)