Existe um shell porque usamos o PostgreSQL na linha de comando como o usuário do PostgreSQL.
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
?
Existe um shell porque usamos o PostgreSQL na linha de comando como o usuário do PostgreSQL.
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
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