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 sudo
quando as distros do Linux pararam de definir uma senha root e fizeram sudo
o ú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 sudoers
configuraçõ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 PATH
configuração é necessária para initdb
encontrar o postgres
executável correto ).
Tão. Esqueça o su
comando 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, su
portanto você não pode removê-lo).
Veja também: