Oublier sudo su
Il n'y a aucun avantage à utiliser sudo su, c'est une habitude anachronique de l'habitude de consommer su. Les gens ont commencé à virer sudode bord devant quand les distributions Linux ont cessé de définir un mot de passe root et constituent sudole 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 des sudoersconfigs m'a obligé à changer d'habitude).
Utilisation sudo -u
Pour un shell de connexion, sudo -u postgres -iest 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 utilisateur postgres. Cela vous permet également de mettre en place de meilleurs contrôles d'accès.
Pour l'exécution de commande
sudo -u postgres psql -c "SELECT 1"
est supérieur à l'alternative:
sudo su - postgres -c "psql -c \"SELECT 1\""
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:
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 via su. (Ici, le PATHréglage est requis pour que vous initdbpuissiez trouver le bon postgresexécutable).
Alors. Oubliez la sucommande 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 encore su, vous ne pouvez donc pas le supprimer).
Voir également: