Estou escrevendo um programa para desabilitar usuários de um sistema, quero substituir /bin/bash
para/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 sed
expressõ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 chsh
nem 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)