58 votes

Quelle est la différence entre sudo su - postgres et sudo -u postgres ?

Les utilisateurs de PostgreSQL s'authentifient par défaut sur des sockets unix, où l'utilisateur unix doit être le même que l'utilisateur PostgreSQL. C'est pourquoi les gens utilisent souvent su ou sudo pour devenir le postgres superutilisateur.

Je vois souvent des personnes 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 chef de file sudo les su Les versions de l'application auraient un certain sens si vous étiez sur une ancienne plateforme qui n'a pas de système de gestion de la qualité. sudo . Mais pourquoi, sur un UNIX ou un Linux moins que préhisorique, utiliseriez-vous sudo su ?

69voto

Bunny Joel Points 43

Oublier sudo su

Il n'y a aucun avantage à utiliser sudo su Il s'agit d'une habitude anachronique datant de l'époque où les gens avaient l'habitude d'utiliser le mot "sécurité". su . Les gens ont commencé à s'agglutiner sudo de l'avant lorsque les distros Linux ont cessé d'imposer un mot de passe pour la racine et ont fait de la racine un mot de passe. sudo le seul moyen d'accéder au compte racine. Plutôt que de changer leurs habitudes, ils ont simplement utilisé sudo su . (J'étais l'un d'entre eux jusqu'à une date relativement récente, lorsque j'ai utilisé des boîtes avec des sudoers m'ont obligé à changer mes habitudes).

Utilisation sudo -u

Pour une connexion Shell, sudo -u postgres -i est préférable à sudo su - postgres . Il n'est pas nécessaire que l'utilisateur ait un accès racine à /etc/sudoers Il leur suffit d'avoir le droit de devenir utilisateur postgres . Il vous permet également d'appliquer de meilleurs contrôles d'accès.

Pour l'exécution de la commande

sudo -u postgres psql -c "SELECT 1"

est supérieure à l'alternative :

sudo su - postgres -c "psql -c \"SELECT 1\""

dans la mesure où vous n'avez pas besoin d'échapper les guillemets et autres métacaractères Shell, ainsi que les autres avantages de sécurité liés au fait que vous n'avez pas besoin de l'utilisateur root. Vous finirez probablement par écrire accidentellement :

sudo su - postgres -c psql -c "SELECT 1"

parfois, ce qui ne fonctionnera pas correctement.

Enfin, il est beaucoup plus facile de définir des variables d'environnement via sudo , par exemple

sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster

que par l'intermédiaire de su . (Ici, le PATH est nécessaire pour que initdb peut trouver la bonne postgres exécutable).

Donc. Oubliez les su existe. Vous n'en avez plus besoin. Pour rompre avec cette habitude, donnez-lui un alias qui affichera une erreur. (Certains scripts scripts utilisent encore la commande su (vous ne pouvez donc pas l'enlever).

Voir aussi

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X