"/etc/nginx/nginx.conf está destinado a ser de solo lectura" al editar con nano después de actualizar Ubuntu 20.04 a Ubuntu 22.04

"/etc/nginx/nginx.conf está destinado a ser de solo lectura" al editar con nano después de actualizar Ubuntu 20.04 a Ubuntu 22.04

Recientemente actualicé Ubuntu Server 20.04 a Ubuntu Server 22.04. Es un servidor LEMP que ejecuta la última versión principal de Nginx. Después de la actualización, cuando intento modificar el archivo /etc/nginx/nginx.conf con nano editor, nano muestra una advertencia en rojo que dice

/etc/nginx/nginx.conf está destinado a ser de solo lectura

¿A qué se debe este error y desde cuándo mi archivo nginx.conf debe ser de solo lectura? ¿Es esto un problema de nginx, un problema de nano o un problema de permisos del sistema de archivos, o todo lo anterior? ¿Qué puedo hacer para solucionar este error? Consulte la captura de pantalla a continuación.

Nginx.conf está destinado a ser de solo lectura

Respuesta1

Esto no es un error real, aún puedes escribir en el archivo.

nanoestá probando si el archivo tiene un bit de permiso u+w, g+wo o+westablecido. Cuando ninguno de esos bits está configurado, a nadie en el sistema se le ha otorgado explícitamente acceso de escritura al archivo. Sin embargo, el usuario root (al que puede haber elevado con sudo) anula esto y puede escribir en cualquier archivo implícitamente.

En otras palabras, la advertencia dice: Puede escribir en este archivo porque es root, pero técnicamente no hay permiso de escritura en el archivo para ningún usuario.

El nuevo comportamiento proviene de una solicitud de mejora presentada comoerror #58685explicando el motivo:

Actualmente, nano escribirá felizmente en un archivo con permisos 444 [ r--r--r--].

A menudo, estos archivos son de solo lectura por una razón, y sería bueno preguntarle al usuario si realmente quiere hacer esto.


Para responder a esta pregunta, busqué elcódigo para nanoen gnu.org. (Si realmente necesita el código exacto que se envía a los repositorios de Ubuntu, consultePlataforma de lanzamiento.) En src/files.cencontré el mensaje:

#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

El git blamede estas líneas nos apunta a comprometernos.180a53cc0:

archivos: advierte al usuario root cuando faltan todos los bits de escritura
Root tiene carta blanca para leer archivos ilegibles y escribir archivos no grabables; el sistema de archivos no lo impide. Por lo tanto, alerte a la raíz cuando abra un archivo destinado a ser de solo lectura.

información relacionada