webentwicklung-frage-antwort-db.com.de

Warum wird dem Benutzer eine Shell für PostgreSQL gegeben?

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

Kann ich diesen /bin/bash durch /bin/false ersetzen?

10
Smile.Hunter

Es gibt eine Shell, weil wir PostgreSQL über die Befehlszeile als PostgreSQL-Benutzer verwenden.

4
user8290

Aus Sicherheitsgründen wird Postgres unter einem speziellen Betriebssystem-Benutzerkonto ausgeführt. Dieses Konto wird auf Ihrem Computer erstellt, wenn das Installationsprogramm ausgeführt wird. Sofern es nicht in der Befehlszeile überschrieben wird, heißt es "postgres".

Unter Unix-ähnlichen Betriebssystemen wie Linux und Mac OS X wird das Konto ohne Kennwort eingerichtet, und Benutzer müssen sich im Allgemeinen nie wieder darum kümmern. Quelle .

Es ist auch nicht ratsam, die passwd-Datei manuell zu bearbeiten. Sie sollten den Befehl verwenden:

Sudo passwd postgres
2
ThiagoPonte

Wenn ein Serveradministrator Sudo verwendet und sich nicht darum kümmert, in welcher Umgebung und mit welcher Umaskierung dies resultiert, kann die Arbeit an der Datenbank dazu führen, dass Dateien an unbeabsichtigten Speicherorten oder mit unbeabsichtigten Berechtigungen erstellt werden.

Wenn Sie dem Benutzer eine Shell zuweisen, können sich Administratoren als postgres anmelden und die Arbeit an der Shell dieses Benutzers ausführen. Das Herausfinden von Sudo als Quelle unspezifischer Serverfehlermeldungen würde zu viel Kopfschmerzen bereiten.

Wenn Sie dies nicht benötigen und sicher sind, dass Sie Postgres-Binärdateien niemals so fehleranfällig aufrufen, können Sie die Shell sicher entfernen:

usermod --Shell /bin/false postgres

Denken Sie daran, dass Sie, wenn Sie in der Lage sind, Root zu werden, immer noch jeder werden können, auch Benutzer ohne gültige Shells:

su --Shell /bin/bash postgres

Maßgebliche Quelle:

Manchmal möchten Sie sich als dieser Benutzer anmelden, um bestimmte Arten von speziellen Administrations- oder Fixfunktionen ausführen zu können. Wenn Sie beispielsweise jemals pg_resetxlog ausführen müssen, möchten Sie wahrscheinlich als postgres angemeldet sein, es sei denn, Sie sind sehr sicher, dass Ihre su- oder Sudo-Aufrufe korrekt sind und die Berechtigungen des Datenbankverzeichnisses nicht auf seltsame Weise verfälschen. - Peter Eisentraut, PostgreSQL-Entwickler

1
anx