Dimenticare sudo su
Non vi è alcun vantaggio nell'uso sudo su, è un'abitudine anacronistica da quando le persone erano abituate ad usare su. Le persone hanno iniziato a virare sudodi fronte quando le distribuzioni Linux hanno smesso di impostare una password di root e hanno fatto sudol'unico modo per accedere all'account di root. Invece di cambiare le loro abitudini, hanno appena usato sudo su. (Sono stato uno di loro fino a tempi relativamente recenti quando l'uso di scatole con sudoersconfigurazioni mi ha costretto a cambiare abitudine).
Uso sudo -u
Per una shell di accesso, sudo -u postgres -iè preferibile sudo su - postgres. Non richiede che l'utente abbia accesso come root /etc/sudoers, hanno solo bisogno del diritto di diventare utente postgres. Inoltre, consente di applicare controlli di accesso migliori.
Per l'esecuzione del comando
sudo -u postgres psql -c "SELECT 1"
è superiore all'alternativa:
sudo su - postgres -c "psql -c \"SELECT 1\""
in quanto non è necessario evitare doppie virgolette e altri metacaratteri della shell, nonché gli altri vantaggi di sicurezza di non aver bisogno di root. Probabilmente finirai per caso a scrivere:
sudo su - postgres -c psql -c "SELECT 1"
a volte, che non funzionerà correttamente.
Infine, è molto più semplice impostare variabili di ambiente tramite sudo, ad es
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
che via su. (Qui PATHè necessaria l' impostazione per initdbpoter trovare il postgresfile eseguibile corretto ).
Così. Dimentica che il sucomando esiste. Non ne hai più bisogno. Per rompere l'abitudine, alias a qualcosa che stamperà un errore. (Alcuni script di installazione di pacchetti e init continuano a essere utilizzati, suquindi non è possibile rimuoverli).
Guarda anche: