CH-J Server Managergerenciamento de servidor sobre SSH
E-mail
Todos os guias e artigos →

Como editar ficheiros em /etc através de SFTP e sudo

Porque é que o SFTP recusa o acesso em /etc e como alterar um ficheiro de configuração com segurança sem abrir o acesso root.

Porque é que o SFTP indica permissão negada

O SFTP funciona com a conta usada para iniciar sessão e não tem equivalente ao sudo. A maioria dos ficheiros em /etc pertence a root, pelo que uma conta normal pode ler alguns deles, mas não pode escrever em nenhum. Este é o comportamento correto e não deve ser corrigido através da redução das restrições de acesso.

O que não fazer

Não execute chmod 777 num ficheiro de configuração, não altere o proprietário dos ficheiros em /etc para a sua conta e não ative o início de sessão como root com palavra-passe só para fazer uma edição. Alguns serviços recusam ficheiros com permissões demasiado permissivas, e cada alteração deste tipo reduz a segurança do servidor muito para além da edição.

Utilize sudoedit num terminal

O sudoedit copia o ficheiro para uma localização temporária, abre-o no seu editor com a sua própria conta e só o volta a escrever no local original depois de guardar. O editor em si não é executado como root.

sudoedit /etc/nginx/nginx.conf

Envie uma cópia e depois instale-a

Se preferir um editor local, envie o ficheiro para o seu diretório pessoal e instale-o com sudo. Primeiro, faça uma cópia de segurança do original num local que não seja lido por nenhuma diretiva de inclusão de configuração. O comando install define o proprietário e as permissões e, em sistemas com SELinux, o restorecon define o contexto correto. Verifique o proprietário e as permissões do original antes de copiar estes valores, porque nem todos os ficheiros usam root e 644.

stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf

Valide antes de aplicar

Um ficheiro com erros de sintaxe pode impedir o funcionamento de um serviço no próximo reinício. Execute a verificação do serviço em causa antes de o recarregar. Ao alterar definições de SSH, mantenha a sessão atual aberta e teste um novo início de sessão a partir de uma segunda janela.

sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/example

Edição com sudo no CH-J Server Manager

O File Manager propõe abrir um ficheiro com sudo quando a conta SSH não o consegue ler e avisa que será necessário sudo para guardar. Ao guardar, os dados são enviados para o diretório temporário privado da conta e, após verificação, o sudo move-os para o destino, preservando o proprietário, as permissões, a ACL e o contexto SELinux. Uma cópia de segurança opcional conserva uma cópia do original antes da substituição. A palavra-passe é enviada apenas para o sudo no servidor e não é guardada no disco nem nos registos. Se a política de sudo exigir um terminal (requiretty), a aplicação não contorna esse requisito. A aplicação não valida o conteúdo do ficheiro, pelo que deve executar a verificação do serviço.

Documentação detalhada

man: sudo / sudoedit →

man: install →

Desbloqueio biométrico e segurança →