Reemplazar /bin/bash con /bin/false en el archivo /etc/passwd

Reemplazar /bin/bash con /bin/false en el archivo /etc/passwd

Estoy escribiendo un programa para deshabilitar a los usuarios de un sistema, quiero /bin/bashreemplazarlo/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 sedexpresiones 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 chshno 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)

información relacionada