Vergessen sudo su
Der Gebrauch sudo suhat keinen Vorteil , er ist eine anachronistische Angewohnheit aus der Zeit, als die Menschen an den Gebrauch gewöhnt waren su. Die Leute gingen sudovoran, als Linux-Distributionen aufhörten, ein Root-Passwort festzulegen, und sudonur 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 sudoersich Boxen mit Configs verwendete, die mich dazu zwangen, meine Gewohnheit zu ändern).
Verwenden sudo -u
Für eine Login-Shell sudo -u postgres -iist 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 PATHEinstellung erforderlich, damit initdbdie richtige postgresausführbare Datei gefunden werden kann).
So. Vergiss, dass der suBefehl 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, susodass Sie sie jedoch nicht entfernen können.)
Siehe auch: