Vergessen sudo su
Der Gebrauch sudo su
hat keinen Vorteil , er ist eine anachronistische Angewohnheit aus der Zeit, als die Menschen an den Gebrauch gewöhnt waren su
. Die Leute gingen sudo
voran, als Linux-Distributionen aufhörten, ein Root-Passwort festzulegen, und sudo
nur so auf das Root-Konto zugreifen konnten. Anstatt ihre Gewohnheiten zu ändern, benutzten sie nur sudo su
. (Ich war einer von ihnen bis vor relativ kurzer Zeit, als sudoers
ich Boxen mit Configs verwendete, die mich dazu zwangen, meine Gewohnheit zu ändern).
Verwenden sudo -u
Für eine Login-Shell sudo -u postgres -i
ist vorzuziehen sudo su - postgres
. Es ist nicht erforderlich, dass der Benutzer über Root-Zugriff verfügt /etc/sudoers
, sondern nur das Recht, Benutzer zu werden postgres
. Sie können damit auch bessere Zugriffskontrollen erzwingen.
Zur Befehlsausführung
sudo -u postgres psql -c "SELECT 1"
ist der Alternative überlegen:
sudo su - postgres -c "psql -c \"SELECT 1\""
Sie müssen Anführungszeichen und andere Shell-Metazeichen sowie die anderen Sicherheitsvorteile, die sich daraus ergeben, dass Sie keinen Root benötigen, nicht doppelt maskieren. Sie werden wahrscheinlich versehentlich beim Schreiben landen:
sudo su - postgres -c psql -c "SELECT 1"
manchmal, was nicht richtig funktioniert.
Schließlich ist es viel einfacher, Umgebungsvariablen festzulegen sudo
, z
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
als über su
. (Hier ist die PATH
Einstellung erforderlich, damit initdb
die richtige postgres
ausführbare Datei gefunden werden kann).
So. Vergiss, dass der su
Befehl existiert. Du brauchst es nicht mehr. Um die Gewohnheit zu brechen, geben Sie einen Alias an, der einen Fehler ausgibt. (Einige Init- und Package-Setup-Skripte werden weiterhin verwendet, su
sodass Sie sie jedoch nicht entfernen können.)
Siehe auch: