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

43

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 de salvar está bloqueada no editor de texto.

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

    
por Matthew Wilson 03.01.2012 / 06:24

8 respostas

40

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.config se você estiver usando um editor baseado em terminal, como nano ou 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á primeiro fornecer sua senha de root quando solicitado.

No Ubuntu 14.04 em diante, gksudo não está instalado por padrão. Você terá que instalar o pacote gksu (do Centro de Software ou via sudo apt-get install gksu ) para obtê-lo.

No Ubuntu 17.10, Wayland é o padrão em vez do tradicional servidor X, e executar editores gráficos como root é difícil. Consulte Por que o gksu / gksudo ou o aplicativo gráfico com o sudo não funcionam com o Wayland? para obter detalhes.

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

gedit admin:///etc/dhcp/dhcpd.config
    
por Christopher Kyle Horton 03.01.2012 / 06:53
15

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

  1. Pressione Alt + F2 para abrir a caixa de diálogo Executar.
  2. Digite gksudo seguido do nome do executável do programa (que pode ser diferente do nome exibido pela GUI). Por exemplo:

    gksudo gedit
    
  3. Pressione Enter .
por Scott Severance 03.01.2012 / 07:47
10

Não consigo pensar em um caso em que o root obtenha permission denied .

Em 12.04 você pode fazer assim: alt + f2 e digite gksudo na caixa que aparece assim:

Vocêrecebeumacaixacomoestaeinsirageditecliqueemok:

CliqueemAbrir:

Bastanavegaratéoarquivo:

Concluído

Aviso:háumsuperusuário/rootporummotivo.Éparavocênãoacidentalmentecolocaralgoruimouforadaestruturaemalgoimportanteporengano.Vocêdeveserextremamentecuidadosoparaqueoquequerquevocêeditecomorootsejaoarquivocorretoquevocêquereditarequesuasintaxeéperfeita.Seoutrasferramentasestiveremdisponíveisparaedição,érecomendávelusá-las.Porexemplo,useocomandovisudo 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ê tem que 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 esta . Apenas tenha cuidado.

    
por RobotHumans 13.04.2012 / 22:03
6

Você pode testar se o seu shell atual está executando como root 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 o privilégio de root, por isso não vou repeti-las. Assumindo que você é root e ainda não é possível editar o arquivo /etc/dhcp/dhcpd.config - então muito provavelmente alguém ou algum programa usou o programa chattr para tornar o arquivo imutável .

Na página de manual do chattr :

% bl0ck_qu0te%

Você pode descobrir usando lsattr

lsattr /etc/dhcp/dhcpd.config

Se de fato for imutável, você pode desativar isso assim:

chattr -i /etc/dhcp/dhcpd.config
    
por pbr 11.04.2012 / 04:09
3

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

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, sudo e gksu , como mencionado na resposta anterior, aqui não funcionará.

    
por Jeremy Bicha 23.10.2017 / 20:41
2

Use seu editor de texto favorito

Você pode usar sudo -e ou seu alias sudoedit com seu editor de texto favorito (gráfico!) através da variável de ambiente VISUAL < sup> 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ê goste, e. g. leafpad , kate ou subl .

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

  • Para GEdit use VISUAL='gedit -s' .
  • Para o Kate, use VISUAL='kate -n' .

Vantagens

  • Não requer aplicativos adicionais e / ou reprovados.
  • Não exige alterações na política de segurança, como pkexec (para o qual você precisa editar arquivos ... como superusuário, exatamente o que essa resposta está tentando resolver).
  • Não requer a execução de aplicativos potencialmente inseguros com privilégios elevados.
  • Usa a configuração do aplicativo do usuário atual, mas interage com as permissões de acesso do arquivo de configuração, como sudo -H etc.
  • Não recorre aos dados de configuração da aplicação do utilizador root , que podem ou não parecer e comportar-se de forma aceitável.

Desvantagens

  • Você precisa aprender um novo comando curto.

1 EDITOR ou SUDO_EDITOR também funcionam, mas recebem menos prioridade ou são mais especializados, respectivamente. Consulte a página de manual para obter detalhes.

    
por David Foerster 24.09.2018 / 12:46
0

Para garantir a segurança usando cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup e execute gksu gedit /etc/dhcp/dhcpd.config

Substitua gedit pelo editor de sua escolha

você receberá um aviso como este

Digitesuasenhaaqui.

Umanovajanelaéabertaevocêpodeeditarsuaconfiguraçãolá.

Casoalgodêerrado,vocêpoderárestaurá-loapartirdoseubackupnapastapessoal.

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

Qualquer coisa na pasta $HOME pertence ao usuário, enquanto quase tudo pertence ao root.

O arquivo /etc/dhcp/dhcpd.conf que você está tentando acessar pertence ao root, e a maioria dos arquivos em /etc/ pertence à raiz por padrão por motivos de segurança.

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

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

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

  • usando sudo , o que eleva sua permissão para apenas um comando. Isso geralmente é usado apenas para aplicativos de linha de comando, como editores de texto CLI como vim , nano etc

  • usando gksu , o que eleva sua permissão para apenas um comando, mas, ao contrário de sudo , é usado para programas gráficos, como editores de texto de GUI, como gedit . ele usa um prompt gráfico para facilitar a inserção de uma senha.

por Amith KK 13.04.2012 / 18:13
0
sudo < editor > < filelocation >

por exemplo:

sudo -H gedit etc/dhcp/dhcpd.config
    
por user392272 27.03.2015 / 14:06