Por que existe um shell dado ao usuário para o PostgreSQL?

8

cat /etc/passwd |grep postgre

postgres:x:115:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

apt-cache show postgresql

Package: postgresql
Priority: optional
Section: database
Installed-Size: 65
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian PostgreSQL Maintainers <[email protected]>
Architecture: all
Source: postgresql-common (136)
Version: 9.1+136
Depends: postgresql-9.1
Filename: pool/main/p/postgresql-common/postgresql_9.1+136_all.deb
Size: 5468
MD5sum: 34f5a1373ad5cd0b6f5aa3e7af06c9e7
SHA1: 6f271758bd51c23614b12fd63fb711ecfa43e9e5
SHA256: e8921a22b560e81f57a2a00001e31ba1036f67a8e7f151bf8f977b4919fc559a

Posso substituir esse /bin/bash por /bin/false ?

    
por Smile.Hunter 26.12.2012 / 19:09

3 respostas

4

Existe um shell porque usamos o PostgreSQL na linha de comando como o usuário do PostgreSQL.

    
por user8290 27.12.2012 / 03:16
3

O Postgres é executado sob uma conta de usuário especial do sistema operacional por motivos de segurança. Essa conta é criada em sua máquina quando o instalador é executado e, a menos que seja substituído na linha de comando, será chamado de "postgres".

Em sistemas operacionais semelhantes ao Unix, como Linux e Mac OS X, a conta é configurada sem uma senha e os usuários geralmente não precisam se preocupar com isso novamente. Fonte .

Além disso, não é uma boa prática editar o arquivo passwd manualmente. Você deve usar o comando:

sudo passwd postgres
    
por ThiagoPonte 26.12.2012 / 21:50
0

Se um administrador do servidor usar sudo e não tiver cuidado com o ambiente e o umask, o trabalho no banco de dados pode acabar criando arquivos em locais não intencionais ou com permissões não intencionais.

A atribuição de um shell ao usuário permite que os administradores façam login como postgres e façam o trabalho no shell desse usuário. Descobrir sudo como a origem de mensagens de erro inespecíficas do servidor seria muita dor de cabeça.

Se você não precisar disso e tiver certeza de que nunca chamará os binários do postgres de maneira tão propensa a erros, poderá remover o shell com segurança:

usermod --shell /bin/false postgres

Lembre-se de que, além de poder tornar-se root, você ainda pode se tornar qualquer pessoa, incluindo usuários sem shells válidos:

su --shell /bin/bash postgres

Fonte autorizada:

  

Às vezes, você deseja fazer login como aquele usuário para poder fazer certas   tipos de administração especial ou correções. Por exemplo, se você já   precisa executar o pg_resetxlog, você provavelmente quer estar logado como postgres,   a menos que você esteja muito confiante de que suas invocações su ou sudo   estão corretos e não atrapalham as permissões do banco de dados   diretório de maneiras estranhas. - Peter Eisentraut, desenvolvedor do PostgreSQL

    
por anx 12.10.2017 / 05:57