Autenticação de peer de usuários do PostgreSQL em soquetes unix por padrão, onde o usuário unix deve ser o mesmo que o usuário do PostgreSQL. Então, as pessoas freqüentemente usam su
ou sudo
para se tornar o postgres
superusuário.
Muitas vezes vejo pessoas usando construções como:
sudo su - postgres
ao invés de
sudo -u postgres -i
e eu me pergunto por quê. Da mesma forma, eu vi:
sudo su - postgres -c psql
ao invés de
sudo -u postgres psql
Sem o líder , sudo
as su
versões fariam algum sentido se você estivesse em uma plataforma antiga sem o sudo
. Mas por que em um UNIX ou Linux menos do que pré-histórico você usaria sudo su
?
Esquecer
sudo su
Não há nenhum benefício em usar
sudo su
, é um hábito anacrônico de quando as pessoas estavam acostumadas a usarsu
. As pessoas começaram a ficarsudo
na frente quando as distribuições do Linux pararam de definir uma senha de root e passaramsudo
a ser a única maneira de acessar a conta de root. Em vez de mudar seus hábitos, eles apenas usaramsudo su
. (Eu era um deles até há relativamente pouco tempo quando usar caixas comsudoers
configs me obrigou a mudar de hábito).Usar
sudo -u
Para um shell de login,
sudo -u postgres -i
é preferívelsudo su - postgres
. Não requer que o usuário tenha acesso root em/etc/sudoers
, ele só precisa do direito de se tornar usuáriopostgres
. Ele também permite que você imponha melhores controles de acesso.Para execução de comandos
é superior à alternativa:
em que você não precisa de aspas de escape duplo e outros metacaracteres do shell, bem como as outras vantagens de segurança de não precisar de root. Você provavelmente vai acabar escrevendo acidentalmente:
às vezes, o que não funcionará corretamente.
Finalmente, é muito mais fácil definir variáveis de ambiente via
sudo
, por exemplodo que através
su
. (Aqui, aPATH
configuração é necessária para que possa encontrar o executávelinitdb
correto ).postgres
Então. Esqueça que o
su
comando existe. Você não precisa mais. Para quebrar o hábito, use um apelido para algo que imprima um erro. (Alguns scripts de inicialização e configuração de pacote ainda usamsu
, então você não pode removê-lo).Veja também: