web-dev-qa-db-fra.com

Pourquoi un shell est-il attribué à l'utilisateur pour 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

Puis-je remplacer ce /bin/bash par /bin/false?

10
Smile.Hunter

Il y a un shell parce que nous utilisons PostgreSQL depuis la ligne de commande en tant qu'utilisateur PostgreSQL.

4
user8290

Postgres fonctionne sous un compte utilisateur spécial du système d'exploitation pour des raisons de sécurité. Ce compte est créé sur votre ordinateur lors de l'exécution du programme d'installation. À moins d'indication contraire sur la ligne de commande, il sera appelé "postgres".

Sur les systèmes d'exploitation de type Unix tels que Linux et Mac OS X, le compte est configuré sans mot de passe et les utilisateurs n'ont généralement plus besoin de s'en soucier. Source .

En outre, il n’est pas recommandé d’éditer manuellement le fichier passwd. Vous devriez utiliser la commande:

Sudo passwd postgres
2
ThiagoPonte

Si un administrateur de serveur utilise Sudo et ne fait pas attention à quel environnement et à umask il en résulte, le travail sur la base de données risque de créer des fichiers dans des emplacements non souhaités ou avec des autorisations non souhaitées.

L'affectation d'un shell à l'utilisateur permet aux administrateurs de se connecter en tant que postgres et d'effectuer le travail sur cet utilisateur Shell. Déterminer Sudo comme source de messages d'erreur non spécifiques au serveur serait un casse-tête excessif.

Si vous n'en avez pas besoin et que vous êtes certain de ne jamais appeler les binaires postgres de manière si sujette aux erreurs, vous pouvez supprimer le shell en toute sécurité:

usermod --Shell /bin/false postgres

N'oubliez pas que, pour pouvoir devenir root, vous pouvez toujours devenir tout le monde, y compris les utilisateurs sans shell valide:

su --Shell /bin/bash postgres

Source faisant autorité:

Parfois, vous souhaitez vous connecter en tant qu'utilisateur pour pouvoir effectuer certains types d'administration spéciale ou de correctifs. Par exemple, si vous avez besoin d’exécuter pg_resetxlog, vous voudrez probablement être connecté en tant que postgres, à moins d’être très sûr que vos invocations su ou Sudo sont correctes et de ne pas gâcher les autorisations du répertoire de la base de données. - Peter Eisentraut, PostgreSQL dev

1
anx