Por que não consigo executar o comando `su`? (e como devo fazer?)

33

Sempre que tento emitir su, recebo o seguinte:

$ su  
Password:  
su: Sorry

Escusado será dizer que estou digitando a senha de administrador correta que funciona sudo. O que eu quero é não ter que entrar sudocada vez.

Petruza
fonte

Respostas:

34

No MacOS X, o usuário root é desativado por padrão e, portanto su, não funciona. Como outros já disseram, é melhor usar sudo.

Se você deve permitir que o usuário root, ver nota técnica da Apple: Ativando e utilizando o usuário "root" no Mac OS X .

ghoppe
fonte
13
sudo suainda funciona, por isso não está realmente desativado. Apenas não tem senha.
Fake Name
@FakeName Este é o backdoor mais hilário! Se você pode correr sudo su, qual o motivo de desativar, suentão?
Kolob Canyon
3
@KolobCanyon - O ponto realmente não é "desativar su", é para impedir o login root . Ao desabilitar o login como root, você evita vários problemas de segurança possíveis. Não permitir que alguém que pode sudopara sué meio bobo. Basicamente, suapenas altera o ID do usuário atual e executa um comando (um shell, se não especificado). Se o ID do usuário já é 0 (raiz), como quando executado com sudo, não há nada para fazer, então ele apenas executa o shell. Você pode obter um efeito semelhante fazendo sudo bash.
Fake Name
1
@FakeName Ainda confuso. Qual é a diferença entre fazer login como root e executar 'sudo su'? Não é efetivamente o mesmo nível?
Kolob Canyon
2
@KolobCanyon - Não. Basicamente, se você desabilitar o login , significa que, se houver uma vulnerabilidade no processo de login, um hacker não poderá usá-lo para obter root diretamente. Basicamente, ele move o comprometimento raiz necessário de "comprometimento de login" para "login comprometido para conta de usuário + privesc". É basicamente feito como uma coisa de defesa em profundidade.
Fake Name
14

Você tem duas opções. A primeira é usar sudo -s- isso lhe dará acesso ao superusuário, mas você continuará sendo "você mesmo" (por assim dizer), de modo que coisas como ~ainda serão seu diretório inicial. Como alternativa, você pode usar sudo su, o que fornece um shell como o usuário root real do seu Mac.

Kyle Cronin
fonte
5
O Apple Way (tm) é usado sudopara executar comandos que exigem privilégios elevados, não para alternar para um shell raiz e trabalhar com isso.
Ian C.
3
@ Ian C. - Não, essa é realmente a maneira unix. A Apple apenas o usa porque também é baseado em * nix.
Fake Name
@ Nome falso: A Apple passa por grandes dificuldades para nunca falar ou expor o shell raiz aos usuários. Você poderia dizer que eles levam o sudoethos ao extremo. Mas tanto faz: semântica. Não use shell de raiz no OS X.
Ian C.
1
@Ian C - A Apple não faz muito mais do que os designers * nix, a Apple não fala muito sobre isso. Nos dois casos, está lá, apenas em coisas como linux, eles dizem como usá-lo facilmente. Se isso o torna mais amplamente usado , não indica uma diferença de arquitetura subjacente.
Fake Name
1

Por exemplo, se você precisar mover arquivos ou usar o git usando a CLI, nesse caso, a melhor solução será usar o sudo -scomando Após esse comando, você não precisa continuar digitando a senha repetidamente.

Kahef Mirza
fonte
1

Eu acho que você não pode fazer isso como um usuário "normal" ...

Se houver outra conta de usuário com direitos de administrador, você deverá usar esta

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now
user302849
fonte
1

Solução moderna: sudo -u

Para executar como outro uso, use sudo -u.

Por exemplo, para executar um editor de texto como o nano :

sudo -u someuser nano

… E digite sua senha de usuário administrador do Mac, quando solicitado. Nesse momento, é o usuário administrador do Mac que está chamando sudo, não o someuserusuário, para que você não digite a someusersenha.

  • sudo significa executar algo usando privilégios de superusuário.
  • -u significa "executar um comando especificado como esse usuário especificado".
  • someuser deve ser substituído pelo seu nome de usuário desejado.

Para simular um login inicial como um usuário específico, incluindo a execução de seus scripts de inicialização, use -I.

sudo -u someuser -i nano

Isso executa o nanoaplicativo como usuário, someusermas somente após a execução dos scripts de inicialização para esse usuário.

Se optarmos por não especificar um comando ou aplicativo a ser executado, obteremos um shell interativo em execução como esse usuário.

sudo -u someuser -i

Moda antiga: sudo su someuser

Outra abordagem usa o sucomando em combinação com o sudo. O sucomando significa "alternar usuário".

sudo su someuser

Ou, para incluir a execução dos scripts de inicialização do usuário, adicione o hífen.

sudo su - someuser

root do utilizador

O rootusuário em sistemas operacionais relacionados ao Unix tem poder absoluto para fazer qualquer coisa.

A Apple optou por desativar a rootconta no macOS, evitar explorações de vulnerabilidades de segurança e protegê-lo de dar um tiro no pé. A Apple criou a idéia das contas de usuário Administrador que têm muitos poderes, mais poderes do que uma conta de usuário Padrão , mas não um poder absoluto como o rootpossui. Consulte esta nota de suporte da Apple para discussão.

Se necessário, você pode habilitar o rootusuário no macOS e depois mudar para esse usuário. Isso é fortemente desencorajado. Eu seguiria esse caminho apenas como um último recurso desesperado.


Para discussão sobre isso no contexto do postgresusuário que está executando o sistema de banco de dados Postgres no macOS, consulte esta pergunta no site irmão, DBA Stack Exchange .

Basil Bourque
fonte