Posso editar hosts sem sudo?

5

Atualmente, quando quero editar meu arquivo de hosts, preciso usar sudo nano /etc/hosts , há algo que eu possa fazer para dizer "permitir que o usuário tom edite o arquivo hosts sem precisar do sudo"?

    
por Tom Hart 22.03.2017 / 13:34

2 respostas

23

Você pode, mas é uma má ideia. O ponto principal do sistema de permissões é impedir que usuários sem privilégios e invasores façam coisas como escrever em arquivos do sistema, executar código hostil e assim por diante. De longe, a melhor coisa a fazer é continuar usando sudo quando precisar editar arquivos do sistema. Essa é uma prática recomendada e é o motivo pelo qual temos sudo

Eu não recomendo nenhum dos métodos a seguir, mas eles são mais seguros que o temido chmod 777 . Você poderia , por exemplo, alterar a propriedade do grupo de /etc/hosts e dar permissão de gravação ao grupo:

sudo addgroup editors            #make a new group
sudo adduser $USER editors       #add yourself to it
sudo chown :editors /etc/hosts   #change the group ownership
sudo chmod 664 /etc/hosts        #give the group write permission

Você agora poderá editar o arquivo sem sudo . Ou você pode usar ACLs, se tiver o pacote acl (instalado com certeza em 15.04 e posterior)

sudo setfacl -m $USER:rw /etc/hosts

Mas, novamente, não recomendo nenhuma dessas ações. Apenas use sudo .

    
por Zanna 22.03.2017 / 14:06
7

Eu não ajustaria as permissões de nenhum arquivo relacionado ao sistema

O que você pode fazer é criar um script básico

#!/bin/bash
sudo nano /etc/hosts

Chame o que você quiser, por exemplo, edithosts.sh e coloque-o em uma pasta de scripts dentro de sua pasta pessoal.

chmod 700 /path/to/script/file/edithosts.sh Isso impedirá a leitura não autorizada ou a gravação no arquivo porque, como disse o TripeHound, o conteúdo deste arquivo agora é executado com permissões de root sem senha.

Em seguida, adicione a seguinte linha a /etc/sudoers

tom ALL = (root) NOPASSWD: /path/to/script/file/edithosts.sh 

Isso permitirá que você use sudo sh /path/to/script/file/edithosts.sh sem precisar digitar uma senha

Solução recomendada

Como @paul apontou nos comentários, sudoedit poderia ser uma solução melhor.

tom ALL = (root) NOPASSWD: sudoedit /etc/hosts

Porque isso apenas permite a edição de /etc/hosts e não deixa você executando um editor de texto elevado

    
por Will 22.03.2017 / 14:02