Qual é a diferença entre os dois comandos de superusuário su -s
e sudo -s
?
Ambos fornecem um shell com acesso à conta do superusuário.
Na prática, ambos farão de você o superusuário. No entanto, eles fazem coisas ligeiramente diferentes, de maneiras ligeiramente diferentes.
Primeiro, su -
você 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 root
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
) permitem executar um comando para o qual você está pré-autorizado [ver /etc/sudoers
], possivelmente solicitando a confirmação do seu ID atual .
Se você quer ser realmente fofo, também pode executar sudo su -
, o que solicitará o login como root ( su -
) executado pelo usuário root (a sudo
parte).
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
ousudo -i
sudo
não dá privilégios padrão para usuários regulares. Nesses sistemas,su
é a única opção.Mudará para um usuário (neste 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.
Apenas executa um shell usando o sudo, o que lhe daria um shell raiz. Você pode passar um shell para ele também.
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.
fonte
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, precisa da senha root.
sudo é um comando para executar outro comando (opcionalmente um shell) como um usuário diferente. Você deve se 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, efetuar 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 sudo dentro de um determinado período de tempo (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ê conceder 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 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 root 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.
fonte
fonte
Da Wikipedia :
fonte
Uma coisa que não está sendo dita completamente é a seguinte: qual delas você pode usar geralmente depende de qual distribuição você está usando e quem a executa. Um ou outro (
su
ousudo
) provavelmente não está configurado para uso total por padrão. Por exemplo, como algumas pessoas mencionaram, o OS X e o Ubuntu desabilitam a conta root (su
) por padrão. Da mesma forma, o Debian não concede aos usuários regulares privilégios padrãosudo
. (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 de
sudo
maneira mais refinada, consulteman sudoers
como editar o arquivo / etc / sudoers . No entanto, você nunca deve editá-lo manualmente. Use o programa visudo - ele impedirá que você salve suas edições, a menos que sejam pelo menos minimamente saudáveis. É uma excelente salvaguarda contra erros simples que podem impedir você de obter os privilégios de administrador do seu próprio sistema.fonte
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.fonte
sudo
(o que nem sempre é instalado).Esta introdução pode ajudá-lo.
su
é uma abreviação desu 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.fonte
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 há opções '-s'.
fonte