it-swarm-pt.tech

Qual é a diferença entre os comandos "su -s" e "Sudo -s"?

Qual é a diferença entre os dois comandos de superusuário, su -s e Sudo -s?

Ambos dão ao Shell acesso à conta de superusuário.

23
Callum

Na prática, ambos farão de você o superusuário. No entanto, eles fazem coisas ligeiramente diferentes, de maneiras ligeiramente diferentes.

Primeiro, su - muda para um Shell de login, enquanto Sudo -s não. Na prática, isso geralmente significa que suas variáveis ​​de ambiente não serão alteradas para root 's para Sudo -s. Observe que você pode executar apenas su para não obter um Shell de login ou Sudo -i para obter um Shell de login [não em todas as versões].

Em segundo lugar, su e su - mude para um novo usuário solicitando que você se autentique como o novo usuário. Sudo -s e Sudo -i (e apenas regular Sudo foo) permita que você execute um comando para o qual você está pré-autorizado [consulte /etc/sudoers], possivelmente solicitando que você confirme seu ID atual.

Se você quer ser realmente fofo, também pode executar Sudo su -, que solicitará o login como root (su -) executado pelo usuário root (a parte Sudo).

Se o usuário root estiver bloqueado (como no Ubuntu), você não poderá fazer login como root usando su. Nesse caso, você precisará usar Sudo -s ou Sudo -i

30
Mikeage
su -s

Mudará para um usuário (nesse caso, raiz) e iniciará o Shell que você especificar, ou um dos poucos outros métodos para determinar o Shell. Isso é útil se você deseja usar o zsh ou outro Shell como root muito rápido ... e por algum motivo você não está usando o Sudo.

Sudo -s

Apenas executa um Shell usando Sudo, o que lhe daria um Shell raiz. Você também pode passar um Shell para ele.

su -s é mais antigo, muito mais antigo que o comando Sudo -s. Meu palpite é que o desenvolvedor está tentando facilitar ao máximo a mudança para o uso do Sudo.

12
Mark Turner

su é um comando para mudar para outro usuário, para executar um Shell ou executar um comando específico. Você deve se autenticar como o outro usuário. Se você deseja su para root, você precisa da senha root.

Sudo é um comando para executar outro comando (opcionalmente um Shell) como um usuário diferente. Você deve autenticar como seu próprio usuário. A permissão para usar o Sudo (e as coisas específicas que você pode fazer com ele) são especificadas por um administrador no arquivo sudoers.

Se você conceder a alguém acesso ao su (fornecendo, por exemplo, a senha root), eles poderão fazer qualquer coisa com ele - executar outros comandos, abrir um Shell, alterar a senha, fazer login remotamente via ssh e assim por diante. Você está essencialmente dando a eles acesso à outra conta, com 'su' sendo apenas uma coisa que eles podem fazer com ela.

Sudo é muito mais refinado. Você pode conceder privilégios a um usuário ou a um grupo. Você pode permitir que um usuário ou grupo faça o Sudo dentro de um determinado período (por exemplo, de segunda a sexta-feira, das 9:00 às 17:00). Você pode especificar uma lista específica de comandos que eles podem executar (por exemplo, apenas/usr/local/bin/run_backup) ou você pode especificar um usuário específico que ele pode executar comandos como (por exemplo, www, backup, equipe etc. ).

Além de sua flexibilidade, o Sudo é uma solução melhor em todos os casos, porque não requer acesso a qualquer coisa que o usuário ainda não possua. Se você der acesso a alguém ao Sudo, poderá revogá-lo removendo a linha no arquivo sudoers ou removendo-a do grupo sudoers. Se você excluir a conta deles, o acesso deles será desativado.

Se você der a senha root, mesmo supondo que eles não façam nada desagradável com ela, eles saberão para sempre. Se você tiver várias pessoas que precisam de acesso raiz para tarefas administrativas, isso significa alterar todas as senhas raiz sempre que alguém sair ou supor que não há problema em que elas tenham acesso total aos seus sistemas depois que você sair.

9
Dan Udey
  • su solicitará a senha do usuário root.
  • O Sudo solicitará a você sua senha (e você precisará ser limpo para ter acesso ao Sudo).
5
badp

De Wikipedia :

su (abreviação de usuário substituto ou alternar usuário) é um comando Unix usado para executar o Shell de outro usuário sem fazer logout.

Um comando relacionado chamado Sudo executa um comando como outro usuário, mas observa um conjunto de restrições sobre quais usuários podem executar quais comandos como quais outros usuários (geralmente em um arquivo de configuração denominado/etc/sudoers, melhor editável pelo comando visudo). Diferentemente do su, o Sudo autentica os usuários com sua própria senha, e não com o usuário de destino (para permitir a delegação de comandos específicos a usuários específicos em hosts específicos, sem compartilhar senhas entre eles e, ao mesmo tempo, atenuar o risco de terminais não assistidos).

2
Yaakov Ellis

Uma coisa que não está sendo dita completamente é a seguinte: qual você pode usa frequentemente depende de qual distribuição você está usando e quem a executa. Um ou outro (su ou Sudo) provavelmente não está configurado para uso total por padrão. Por exemplo, como algumas pessoas mencionaram, o OS X e o Ubuntu desativam a conta raiz (su) por padrão. Da mesma forma, o Debian não concede aos usuários regulares privilégios padrão para Sudo. (Em todos esses sistemas, você pode alterar esses padrões, mas apenas se você tiver algum tipo de privilégio administrativo. Suponho que estamos falando de uma situação de não servidor e você administra a máquina, pois estamos no SU. do que SF, mas apenas no caso.)

Por fim, se você deseja usar Sudo de maneira mais refinada, consulte man sudoers para saber como editar o arquivo / etc/sudoers. No entanto, você deve nunca editá-lo manualmente. Use o programa visudo - ele impedirá que você salve suas edições, a menos que sejam pelo menos minimamente sãs. É uma excelente salvaguarda contra erros simples que podem impedir você de obter os privilégios de administrador do seu próprio sistema.

2
Telemachus

Nos sistemas em que a conta de superusuário está desativada, como o Mac OS X, su não funcionará; Sudo -s vai.

Além disso, parece que não há su -s disponível, pelo menos na minha máquina.

1
jtbandes

Esta introdução pode ajudá-lo. su é uma abreviação de su root, e você mantém seus direitos como o outro usuário indefinidamente. Mais perigoso, mas também mais conveniente se você estiver executando muitos comandos de acesso root durante um período de tempo.

1
Nikhil Chelliah

o su basicamente criará um novo Shell de login com outros privilégios de usuário (login). O Sudo permitirá apenas que você execute temporariamente o comando usando o usuário especificado. Em alguns UNIX como o FreeBDS, não existem opções '-s'.

1
hendrasaputra