Substitua o shell do usuário mysql em / etc / passwd

3

Eu estou procurando uma maneira de substituir a configuração do shell do usuário mysql em / etc / passwd da linha de comando, pois há vários servidores onde eu quero desabilitar o shell para o usuário mysql.

Real

mysql:x:498:498:MySQL server:/var/lib/mysql:/bin/bash

Desejado

mysql:x:498:498:MySQL server:/var/lib/mysql:/sbin/nologin
    
por Suyash Jain 31.07.2016 / 10:38

1 resposta

5

Não modifique /etc/passwd com sed . Use as ferramentas fornecidas para fazer a interface com esse arquivo.

Nesse caso, chpass / chsh ou possivelmente o mais geral usermod .

Na maioria dos sistemas:

$ sudo chpass -s /sbin/nologin mysql

ou

$ sudo chsh -s /sbin/nologin mysql

funcionaria.

Você não deseja editar /etc/passwd com sed (ou com vim / emacs ) e definitivamente não com sed -i .

O usuário @JdeBP me lembra o utilitário vipw nos comentários abaixo. Este é um comando especial, muito parecido com visudo , que permite editar o /etc/passwd enquanto cuida do bloqueio de arquivos, etc. Ele também faz verificação de consistência / sintaxe do arquivo salvo antes de instalar o novo arquivo de senha no lugar do arquivo. antigo. Consulte o manual de vipw em seu sistema para obter mais informações. Esta é a única maneira segura de editar o arquivo de senhas manualmente.

Observe também que em alguns sistemas Unix, o shell de login padrão é definido por outros meios além do arquivo de senhas. No OS X, por exemplo, usuários comuns nem sequer têm uma entrada em /etc/passwd .

    
por 31.07.2016 / 11:02