Como executo um comando como administrador do sistema (raiz)

66

Eu preciso executar um comando com privilégios administrativos. Alguém disse que eu deveria executar um comando como root. Como eu faço isso?

Stefan
fonte
2
consulte o meta discussão sobre esta questão
Stefan

Respostas:

94

As duas principais possibilidades de linha de comando são:

  • Use sue digite a senha root quando solicitado.
  • Coloque sudona frente do comando e digite sua senha quando solicitado.

Executando um Comando Shell como Raiz

sudo (preferível quando não estiver executando uma exibição gráfica)

Este é o método preferido na maioria dos sistemas, incluindo Ubuntu, Linux Mint, (sem dúvida) Debian e outros. Se você não souber uma senha root separada, use este método.

O Sudo exige que você digite sua própria senha. (O objetivo é limitar o dano se você deixar o teclado sem vigilância e desbloqueado, e também garantir que você realmente deseja executar esse comando e que não seja, por exemplo, um erro de digitação.) Geralmente, é configurado para não pedir novamente alguns minutos para que você possa executar vários sudocomandos em sucessão.

Exemplo:

sudo service apache restart

Se você precisar executar vários comandos como root, prefixe cada um deles com sudo. Às vezes, é mais conveniente executar um shell interativo como root. Você pode usar sudo -ipara isso:

$ sudo -i
# command 1
# command 2
...
# exit

Em vez de sudo -i, você pode usar sudo -s. A diferença é que -ire i nitializes o ambiente para os padrões sãs, enquanto -sutiliza seus arquivos de configuração para melhor ou para pior.

Para obter mais informações, consulte o site sudo ou digite man sudono seu sistema. Sudo é muito configurável; por exemplo, ele pode ser configurado para permitir que um determinado usuário execute apenas determinados comandos como root. Leia a sudoerspágina do manual para mais informações; use sudo visudopara editar o arquivo sudoers.

su

O sucomando existe na maioria dos sistemas unix. Permite executar um comando como outro usuário, desde que você saiba a senha do usuário. Quando executado sem nenhum usuário especificado, suo padrão será a conta raiz.

Exemplo:

su -c 'service apache restart'

O comando a ser executado deve ser passado usando a -copção Observe que você precisa de aspas para que o comando não seja analisado pelo seu shell, mas passado intacto para o shell raiz que sué executado.

Para executar vários comandos como root, é mais conveniente iniciar um shell interativo.

$ su
# command 1
# command 2
...
# exit

Em alguns sistemas, você precisa estar no número de grupo 0 (chamado wheel) para usar su. (O objetivo é limitar o dano se a senha do root for acidentalmente vazada para alguém.)

Efetuando login como root

Se houver uma senha root definida e você a possuir, basta digitar rootno prompt de login e inserir a senha root. Tenha muito cuidado e evite executar aplicativos complexos como root, pois eles podem fazer algo que você não pretendia. Efetuar login diretamente como root é útil principalmente em situações de emergência, como falhas de disco ou quando você sai da sua conta.

Modo de usuário único

O modo de usuário único ou nível de execução 1 também oferece privilégios de root. Isso se destina principalmente a situações de manutenção de emergência em que não é possível inicializar em um nível de execução multiusuário. Você pode inicializar no modo de usuário único passando singleou emergencyna linha de comando do kernel. Observe que inicializar no modo de usuário único não é o mesmo que inicializar o sistema normalmente e efetuar login como root. Em vez disso, o sistema iniciará apenas os serviços definidos para o nível de execução 1. Normalmente, este é o menor número de serviços necessários para ter um sistema utilizável.

Você também pode chegar ao modo de usuário único usando o comando telinit: telinit 1; no entanto, esse comando requer que você já tenha obtido privilégios de root por meio de outro método para executar.

Em muitos sistemas, a inicialização no modo de usuário único dará ao usuário acesso a um shell raiz sem solicitar uma senha. Notavelmente, os systemdsistemas baseados em solicitarão a senha root quando você inicializar dessa maneira.

Outros programas

Calife

O Calife permite executar comandos como outro usuário digitando sua própria senha, se autorizado. É semelhante ao sudo muito mais difundido (veja acima). Calife é mais leve que o sudo, mas também menos configurável.

Op

Op permite executar comandos como outro usuário, incluindo root. Esta não é uma ferramenta completa para executar comandos arbitrários: você digita opseguido por um mnemônico configurado pelo administrador do sistema para executar um comando específico.

Super

Super permite executar comandos como outro usuário, incluindo root. O comando deve ter sido permitido pelo administrador do sistema.

Executando um Comando Gráfico como Raiz

Veja também Wikipedia .

PolicyKit (preferível ao usar o GNOME)

Basta prefixar o comando desejado com o comando pkexec. Esteja ciente de que, embora isso funcione na maioria dos casos, não funciona universalmente.

Veja man pkexecpara mais informações.

KdeSu, KdeSudo (de preferência ao usar o KDE)

kdesue kdesudosão front-ends gráficos para sue sudorespectivamente. Eles permitem que você execute os programas do X Window como root, sem problemas. Eles fazem parte do KDE . Tipo

kdesu -c 'command --option argument'

e digite a senha root ou digite

kdesudo -c 'command --option argument'

e digite sua senha (se estiver autorizada a executar sudo). Se você marcar a opção "manter senha" no KdeSu, você precisará digitar a senha root apenas uma vez por sessão de login.

Outros programas

Ktsuss

Ktsuss ("mantenha o su simples, estúpido") é uma versão gráfica do su.

Beesu

O Beesu é um front-end gráfico para o comando su que substituiu o Gksu nos sistemas operacionais baseados na Red Hat. Foi desenvolvido principalmente para RHEL e Fedora.

Métodos obsoletos

gksu e gksudo

gksue gksudosão front-ends gráficos para sue sudorespectivamente. Eles permitem que você execute os programas do X Window como root, sem problemas. Eles fazem parte do Gnome . Tipo

gksu command --option argument

e digite a senha root ou digite

gksudo command --option argument

e digite sua senha (se estiver autorizada a executar sudo).

gksue gksudosão obsoletos. Eles foram substituídos pelo PolicyKit no GNOME, e muitas distribuições (como o Ubuntu) não os instalam mais por padrão. Você não deve depender deles estarem disponíveis ou funcionando corretamente.

Manualmente através de um dos métodos baseados em shell

Use um dos métodos na seção "executando um comando shell como raiz". Você precisará garantir que nem a DISPLAYvariável de ambiente nem o XAUTHORITYambiente sejam redefinidos durante a transição para a raiz. Isso pode exigir uma configuração adicional dos métodos que estão fora do escopo desta pergunta.

No geral, é uma má idéia, principalmente porque os aplicativos gráficos lêem e gravam arquivos de configuração como raiz e, quando você tenta usar esses aplicativos novamente como usuário normal, esses aplicativos não terão permissão para ler suas próprias configurações.

Editando um arquivo como root

Consulte Como edito um arquivo como raiz?

Gilles
fonte
2
Deve-se notar que sudosó funcionará se (1) estiver instalado e (2) se o seu uso estiver no arquivo sudoers e tiver permissão para executar a operação.
N0pe 17/08/11
2
isso precisa ser atualizado. pkexecestá substituindo gksu/ gksudoem muitas distribuições hoje em dia.
strugee
11
@ Strugee - você ia tentar atualizar isso? O material sob Redhat também não está correto.
slm
8

Use su:

$ su -c command

ou

$ su
# command
# exit

Em ambos os casos, você será solicitado a fornecer a rootsenha. Para mais informações, consulte a página do manual .

Steven D
fonte
3

Como a pergunta não era específica do Linux, veja como você alcança o mesmo objetivo no Solaris 9+ (ou Trusted Solaris 8):

O Solaris, desde a versão 9, inclui um conjunto de ferramentas afetuosamente chamadas de RBAC, ou Role Based Access Control.

A essência do RBAC é que, através da concessão de Autorizações e Direitos, a Usuários e / ou Função, ou a concessão de Funções a Usuários, você pode criar modelos incrivelmente refinados para quem pode executar o que com quais privilégios.

Essencialmente, você identifica a autorização em / etc / security / auth_attr e as concede a usuários ou funções em / etc / user_attr.

Você define perfis em / etc / security / prof_attr. Em seguida, você associa comandos a esses perfis em / etc / security / exec_attr, seguido pela atribuição desses perfis aos usuários no arquivo / etc / user_attr.

Depois que essas coisas são feitas, você realmente pfexec <command>executa o comando com privilégios ou autorizações concedidas a esse usuário por esse comando.

O bom do RBAC é que não há privilégios adicionais concedidos ao próprio comando, ou ao usuário, apenas à combinação de usuário + comando. Portanto, é mais seguro do que criar um binário + s, ou apenas usar o sudo para tornar o usuário capaz de executar praticamente qualquer coisa. (Eu sei que você pode bloquear o sudo, mas na minha experiência a maioria das pessoas não)

Outra vantagem do RBAC é que você pode tornar uma conta de função root e atribuir essa função a usuários que podem se tornar root com o comando 'su' e a senha root. O usuário root também poderá efetuar login no modo de usuário único, o que é melhor (na minha opinião) do que o modelo Linux, onde você pode desativar a senha root passwd -d rootou bloquear a conta root passwd -l root, ambas tornando o login como root bastante difícil quando algo dá errado.

Ben Rockwood tem um ótimo post no RBAC que pode ser lido em Usando o RBAC no Solaris (aberto) .

Tim Kennedy
fonte
3

Ou você pode dar a alguns comandos uma superpotência. Estou falando de permissões especiais nas quais os comandos são executados com a permissão do proprietário.

Obtenha o caminho do comando #which <command>e defina SUID ou SGID para esse caminho.

Os bits PS - SUID e SGID devem ser fornecidos com cuidado. Eles podem tornar seu sistema inseguro.

Ayush Goyal
fonte