Les utilisateurs de PostgreSQL authentifient l'authentification homologue sur les sockets unix par défaut, où l'utilisateur unix doit être identique à l'utilisateur PostgreSQL. Donc, les gens utilisent fréquemment su
ou sudo
pour devenir le postgres
superutilisateur.
Je vois souvent des gens utiliser des constructions telles que:
sudo su - postgres
plutôt que
sudo -u postgres -i
et je me demande pourquoi. De même, j'ai vu:
sudo su - postgres -c psql
au lieu de
sudo -u postgres psql
Sans le leader, sudo
les su
versions auraient un sens si vous étiez sur une ancienne plate-forme sans sudo
. Mais pourquoi utiliseriez-vous moins d’UNIX ou de Linux sudo su
?
postgresql
shell
sudo
su
Craig Ringer
la source
la source
Réponses:
Oublier
sudo su
Il n'y a aucun avantage à utiliser
sudo su
, c'est une habitude anachronique de l'habitude de consommersu
. Les gens ont commencé à virersudo
de bord devant quand les distributions Linux ont cessé de définir un mot de passe root et constituentsudo
le seul moyen d'accéder au compte root. Plutôt que de changer leurs habitudes, ils ont juste utilisésudo su
. (J'étais l'un d'entre eux jusqu'à récemment, quand l'utilisation de boîtes avec dessudoers
configs m'a obligé à changer d'habitude).Utilisation
sudo -u
Pour un shell de connexion,
sudo -u postgres -i
est préférable àsudo su - postgres
. Cela ne nécessite pas que l'utilisateur ait un accès root/etc/sudoers
, mais seulement le droit de devenir utilisateurpostgres
. Cela vous permet également de mettre en place de meilleurs contrôles d'accès.Pour l'exécution de commande
est supérieur à l'alternative:
en ce sens que vous n'avez pas à double échapper les guillemets et autres métacaractères du shell, ainsi que les autres avantages en matière de sécurité de ne pas avoir besoin de root. Vous allez probablement atterrir accidentellement en écrivant:
parfois, ce qui ne fonctionnera pas correctement.
Enfin, il est beaucoup plus facile de définir des variables d’environnement via
sudo
, par exemple:que via
su
. (Ici, lePATH
réglage est requis pour que vousinitdb
puissiez trouver le bonpostgres
exécutable).Alors. Oubliez la
su
commande existe. Vous n'en avez plus besoin. Pour rompre l'habitude, alias-le à quelque chose qui va imprimer une erreur. (Certains scripts de configuration d'init et de paquet utilisent encoresu
, vous ne pouvez donc pas le supprimer).Voir également:
la source