Esqueço sudo su
Não há benefício em usar sudo su, é um hábito anacrônico de quando as pessoas estavam acostumadas a usar su. As pessoas começaram a atacar sudoquando as distros do Linux pararam de definir uma senha root e fizeram sudoo único caminho para acessar a conta root. Em vez de mudar seus hábitos, eles apenas usavam sudo su. (Eu era um deles até relativamente recentemente, ao usar caixas com sudoersconfigurações, me forçou a mudar meu hábito).
Usar sudo -u
Para um shell de login, sudo -u postgres -ié preferível sudo su - postgres. Não requer que o usuário tenha acesso root /etc/sudoers, ele precisa apenas do direito de se tornar usuário postgres. Também permite impor melhores controles de acesso.
Para execução de comando
sudo -u postgres psql -c "SELECT 1"
é superior à alternativa:
sudo su - postgres -c "psql -c \"SELECT 1\""
porque você não precisa fazer aspas duplas e outros metacaracteres do shell, além das outras vantagens de segurança de não precisar de root. Você provavelmente acidentalmente começará a escrever:
sudo su - postgres -c psql -c "SELECT 1"
às vezes, o que não funciona corretamente.
Finalmente, é muito mais fácil definir variáveis de ambiente via sudo, por exemplo,
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
do que via su. (Aqui, a PATHconfiguração é necessária para initdbencontrar o postgresexecutável correto ).
Tão. Esqueça o sucomando existe. Você não precisa mais disso. Para quebrar o hábito, alias-lo para algo que irá imprimir um erro. (Alguns scripts de configuração do init e do pacote ainda são usados, suportanto você não pode removê-lo).
Veja também: