Como obtenho permissões para editar arquivos de configuração do sistema?

47

Não consigo editar e salvar arquivos de configuração no sistema raiz (por exemplo /etc/dhcp/dhcpd.config:); apenas diz "permissão negada" ou a opção salvar está bloqueada no editor de texto.

Tenho certeza de que sou um usuário root, mas como posso ter certeza? Se eu sou um usuário root, como faço para corrigir isso?

Matthew Wilson
fonte

Respostas:

42

Qual editor de texto você está usando? Se você é um usuário root e conhece a senha, tente (em um terminal):

  • sudoedit /etc/dhcp/dhcpd.configse você estiver usando um editor baseado em terminal, como nanoou estiver executando ssh'ing em um servidor.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config se você estiver usando um editor baseado em GUI, como gedit

Em ambos os casos, você precisará fornecer sua senha root quando solicitado.

No Ubuntu 14.04 em diante, gksudonão é instalado por padrão. Você precisará instalar o gksupacote (a partir do Software Center ou via sudo apt-get install gksu) para obtê-lo.

No Ubuntu 17.10, Wayland é o padrão em vez do servidor X tradicional, e a execução de editores gráficos como raiz é difícil. Consulte Por que o gksu / gksudo ou o lançamento de um aplicativo gráfico com sudo não funciona com Wayland? para detalhes.

No Ubuntu 18.04, gksudonão está disponível nos repositórios oficiais. Use em sudo -H <text editor>vez disso, ou o admin://protocolo :

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
fonte
15

Se você não quiser usar um terminal, pode chamar um programa GUI como root, assim (este exemplo é para o Gedit):

  1. Pressione Alt+ F2para exibir a caixa de diálogo Executar.
  2. Digite gksudoseguido pelo nome do executável do seu programa (que pode ser diferente do nome exibido pela GUI). Por exemplo:

    gksudo gedit
    
  3. Hit Enter.
Scott Severance
fonte
10

Não consigo pensar em um caso em que a raiz chegaria permission denied.

Na versão 12.04, você pode fazer o seguinte: alt+ f2e entrar gksudona caixa que aparece assim:

Diálogo F2

Você obtém uma caixa como esta, entra gedite clica em ok:

Digite gedit na caixa de diálogo Executar

Clique em Open:

Abrir aba dentro do gedit

Basta procurar o arquivo:

diálogo de arquivos abertos

Feito

Aviso: existe um superusuário / root por um motivo. É para que você não coloque acidentalmente algo ruim ou fora da estrutura em algo importante por engano. Você deve tomar muito cuidado para que tudo o que editar como raiz seja o arquivo correto que você deseja editar E que sua sintaxe seja perfeita. Se outras ferramentas estiverem disponíveis para edição, é recomendável usá-las. Por exemplo, use o visudo comando terminal em vez de editar manualmente /etc/sudoers.

Alguns arquivos que podem ficar bagunçados são fáceis de recuperar. Outros são relativamente complicados ou você precisa usar o console de recuperação e muitas linhas de comando.

Sim, a linha de comando do console de recuperação parece um pouco mais assustadora do que isso . Apenas tenha cuidado.

RobotHumans
fonte
Pode ser necessário atualizá-lo para 13.04 e versões mais recentes. Algumas coisas relacionadas ao gksu / gksudo foram alteradas (não tenho certeza se isso se aplica à sua resposta ou não).
Seth
Pelo que entendi, o sudo agora exporta magicamente as variáveis ​​de ambiente DISPLAY e o gksu / gksudo desapareceu ou está desaparecendo. Eu ainda não verifiquei.
RobotHumans
rootpode obter permissão negada se o arquivo tiver sido definido como imutável chattrou, às vezes, se o disco for somente leitura.
Chai T. Rex
6

Você pode testar se o seu shell atual está sendo executado como root de algumas maneiras diferentes

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Outras respostas oferecem boas maneiras de escalar para obter privilégios de root, então não vou repeti-las. Supondo que você seja root e ainda não possa editar o arquivo /etc/dhcp/dhcpd.config- muito provavelmente alguém ou algum programa já o usou chattrpara tornar o arquivo imutável.

Na página de manual do chattr :

Um arquivo com o atributo 'i' não pode ser modificado: não pode ser excluído ou renomeado, nenhum link pode ser criado para esse arquivo e nenhum dado pode ser gravado no arquivo. Somente o superusuário ou um processo que possui o CAP_LINUX_IMMUTABLErecurso pode definir ou limpar esse atributo.

Você pode descobrir usando lsattr

lsattr /etc/dhcp/dhcpd.config

Se, de fato, é imutável, você pode desativar isso da seguinte maneira:

chattr -i /etc/dhcp/dhcpd.config
pbr
fonte
3

Se você estiver usando o Ubuntu 17.04 ou superior, é recomendável usar o administrador do gvfs . Basta adicionar admin://à frente do caminho de arquivo completo que você deseja abrir em um aplicativo como o Editor de Texto ou os aplicativos Arquivos .

Por exemplo, para alterar as configurações de inicialização, abra

admin:///etc/default/grub

Se você estiver usando o Ubuntu 17.10 com o Wayland padrão sudoe , gksucomo mencionado na resposta anterior, aqui não funcionará.

Jeremy Bicha
fonte
2

Use seu editor de texto favorito

Você pode usar sudo -eou seu alias sudoeditcom seu editor de texto favorito (gráfico!) Através da VISUALvariável de ambiente 1 :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

que é equivalente a

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Claro que você pode usar qualquer outro editor que você gosta, por exemplo leafpad, kateou subl.

Alguns editores oferecem uma opção de linha de comando para sempre iniciar uma nova instância, mesmo se uma estiver em execução no momento. Como sudoeditaguarda o término do processo do editor para aplicar as alterações no arquivo editado, isso pode ser necessário se você tiver outras instâncias do mesmo Editor em execução:

  • Para uso no GEdit VISUAL='gedit -s'.
  • Para uso de Kate VISUAL='kate -n'.

Vantagens

  • Não requer aplicativos adicionais e / ou obsoletos.
  • Não requer alterações de política de segurança como pkexec(para as quais você precisaria editar arquivos ... como superusuário, exatamente o que esta resposta está tentando resolver).
  • Não requer a execução de aplicativos potencialmente inseguros com privilégios elevados.
  • Usa a configuração atual do aplicativo do usuário, mas mexe com as permissões de acesso ao arquivo de configuração, como sudo -Hetc.
  • Não retorna aos dados de configuração do aplicativo do rootusuário que podem ou não parecer e se comportar de maneira aceitável.

Desvantagens

  • Você precisa aprender um novo comando curto.

1 EDITOR ou SUDO_EDITORtrabalhe também, mas tenha menos prioridade ou seja mais especializado, respectivamente. Consulte a página do manual para obter detalhes.

David Foerster
fonte
0

Para estar seguro, faça backup cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup e executegksu gedit /etc/dhcp/dhcpd.config

Substitua geditpelo editor de sua escolha

você receberá um prompt como este

prompt de senha

Digite sua senha aqui.

Uma nova janela é aberta e você pode editar sua configuração lá.

Caso algo dê errado, você pode restaurá-lo do seu backup na pasta pessoal.

Você recebe "permissão negada" por causa de como o Linux lida com a permissão.

Qualquer coisa na $HOMEpasta pertence ao usuário, enquanto quase qualquer outra coisa pertence à raiz.

O /etc/dhcp/dhcpd.confarquivo que você está tentando acessar pertence à raiz e a maioria dos arquivos /etc/pertence à raiz por padrão, por razões de segurança.

Você ainda pode editar este arquivo, elevando suas permissões.

Para fazer isso, você tem várias maneiras:

  • use o suque significa switch user. Sem nenhum atributo, ele funciona como um comando para alternar para a conta raiz, mas você precisa digitar a senha do usuário para quem está mudando e, como o root não tem senha por padrão no Ubuntu (desativando efetivamente a conta raiz) , isso não funcionará, a menos que você tenha definido uma senha para root, o que não é recomendado.

  • usando o sudoqual eleva sua permissão para apenas um comando. Isso geralmente é usado apenas para aplicativos de linha de comando, como editores de texto da CLI vim, nanoetc.

  • usando o gksuque eleva sua permissão para apenas um comando, mas diferente do sudousado para programas gráficos, como os editores de texto da GUI, como gedit. Ele usa um prompt gráfico para facilitar a inserção de uma senha.

Amith KK
fonte
0
sudo < editor > < filelocation >

por exemplo:

sudo -H gedit etc/dhcp/dhcpd.config
user392272
fonte