Substituindo /bin/bash por /bin/false no arquivo /etc/passwd

Substituindo /bin/bash por /bin/false no arquivo /etc/passwd

Estou escrevendo um programa para desabilitar usuários de um sistema, quero substituir /bin/bashpara/bin/false.

Exemplo

xxx:x:1:22:xx:/export/home/xx:**/bin/bash**

substitua para

xxx:x:1:22:xx:/export/home/xx:**/bin/false**

Eu quero usar o script bash.

Eu sei que uma maneira de fazer isso é usando sed. Mas não sou bom em expressões regulares.

Alguém pode ajudar?

Responder1

Bem, você não faz isso com sedexpressões regulares. O que você faz é usar o programachshpara alterar o shell de um usuário.

chsh -s /bin/false username

alternativamente:

usermod -s /bin/false username

Se você quiser substituí-lo por um shell real, também precisará certificar-se de que ele esteja listado em /etc/shells.

Responder2

Esteja ciente de que chshnem sempre está disponível! emalpinoLinux, por exemplo, ou sistemas embarcados usandocaixa ocupada..

Comando embutido simples sed:

sed -i '/www-data/s/false/sh/g' /etc/passwd

(Este exemplo altera o shell de/bin/falsopara/bin/shpara usuáriowww-dados)

informação relacionada