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 sudo
de bord devant quand les distributions Linux ont cessé de définir un mot de passe root et constituent sudo
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 des sudoers
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 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 PATH
réglage est requis pour que vous initdb
puissiez trouver le bon postgres
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 encore su
, vous ne pouvez donc pas le supprimer).
Voir également: