"/etc/nginx/nginx.conf deve ser somente leitura" ao editar com nano após atualizar o Ubuntu 20.04 para o Ubuntu 22.04

"/etc/nginx/nginx.conf deve ser somente leitura" ao editar com nano após atualizar o Ubuntu 20.04 para o Ubuntu 22.04

Atualizei recentemente o Ubuntu Server 20.04 para o Ubuntu Server 22.04. É um servidor LEMP executando a versão Mainline mais recente do Nginx. Após a atualização, quando tento modificar o arquivo /etc/nginx/nginx.conf com o editor nano, o nano mostra um aviso em vermelho que diz

/etc/nginx/nginx.conf deve ser somente leitura

Sobre o que é esse erro e desde quando meu arquivo nginx.conf deve ser somente leitura? Este é um problema do nginx, um problema do nano ou um problema de permissões do sistema de arquivos ou todos os itens acima? O que posso fazer para corrigir esse erro? Por favor, veja a captura de tela abaixo.

Nginx.conf deve ser somente leitura

Responder1

Este não é um erro real, você ainda pode gravar no arquivo.

nanoestá testando se o arquivo tem um bit de permissão u+w, g+wou o+wdefinido. Quando nenhum desses bits está definido, ninguém no sistema recebeu explicitamente acesso de gravação ao arquivo. No entanto, o usuário root (ao qual você pode ter elevado with sudo) anula isso e pode gravar implicitamente em qualquer arquivo.

Em outras palavras, o aviso diz: Você pode gravar neste arquivo porque é root, mas tecnicamente não há permissão de gravação no arquivo para nenhum usuário.

O novo comportamento vem de uma solicitação de melhoria registrada comoerro #58685explicando o motivo:

Atualmente, o nano gravará com prazer em um arquivo com permissões 444 [ r--r--r--].

Freqüentemente, esses arquivos são somente leitura por um motivo, e seria bom avisar o usuário e perguntar se ele realmente deseja fazer isso.


Para responder a esta pergunta, pesquisei ocódigo para nanoem gnu.org. (Se você realmente precisa do código exato enviado para os repositórios do Ubuntu, confiraPlataforma de lançamento.) Em src/files.cencontrei a mensagem:

#elif defined(HAVE_GETEUID)
        if (new_one && !(fileinfo.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) &&
                        geteuid() == ROOT_UID)
            statusline(ALERT, _("%s is meant to be read-only"), realname);
#endif

O git blamepara estas linhas nos indica um compromisso180a53cc0:

arquivos: avisa o usuário root quando todos os bits de gravação estão faltando
O Root tem carta branca para ler arquivos ilegíveis e gravar arquivos não graváveis ​​- o sistema de arquivos não impede isso. Portanto, alerte o root ao abrir um arquivo que se destina a ser somente leitura.

informação relacionada