Se você quiser fazer o login como postgres
e tiver sudo
de acesso sem requisitos de senha, faça:
sudo -iu postgres
O -i
inicia um shell de login.
Estou no FreeBsd 11. Eu tenho um usuário "user123" pertencente ao grupo wheel e wheel tem %wheel ALL=(ALL) NOPASSWD: ALL
em /usr/local/etc/sudoers
.
Eu não sei a senha do root. No entanto, sou capaz de executar "sudo" sem um.
Instalei o Postgresql e o executei através de "início de serviço".
Agora eu quero fazer login como o usuário postgresql e criar um banco de dados ou outras coisas:
$ su postgres
Password:
# or
$ su - postgres
Password:
Mas eu não sei a senha.
Esta é a senha do usuário root
ou o usuário postgres
? Eu não conheço nenhum deles. Existe uma solução padrão para isso?
Advertência: a pergunta sugere que você esteja usando um servidor pessoal. Se não, e você não é o administrador principal, NÃO assuma o shell do usuário root a menos que seja instruído pelo administrador principal
%wheel ALL=(ALL) NOPASSWD: ALL
Assim, o usuário user123 está no "grupo wheel" e o arquivo sudoers ALL domains como (ALL)
usuários sem senha necessária para ALL
comandos, para membros do grupo wheel.
Sabemos que você tem um login de trabalho para que suas opções não sejam limitadas. Saber a senha para postgres ou mesmo root , não é necessário. Você pode simplesmente:
$ sudo -iu postgres
O motivo pelo qual você não pode 'substituir usuário' por su
ou su -
, como mostrado na pergunta, é porque o arquivo sudoers não tem efeito no comando su
.
O comando su
sem argumentos ou apenas o traço é padronizado para root , então você é solicitado a fornecer a senha do usuário root. Esse é o comportamento esperado: como o nome sudoers implica, o arquivo sudoers concede privilégios somente ao comando sudo
.
Como parece, você esqueceu a senha do root. Você pode obter o shell de root usando:
$ sudo -i
Deixando você de volta ao controle em: [root@local ~]#
Dois passos:
$ sudo -i
# su - postgres
Como root , você pode usar su
sem senha. Você também pode combiná-los para
$ sudo su - postgres