„/etc/nginx/nginx.conf ist schreibgeschützt“ beim Bearbeiten mit Nano nach dem Upgrade von Ubuntu 20.04 auf Ubuntu 22.04

„/etc/nginx/nginx.conf ist schreibgeschützt“ beim Bearbeiten mit Nano nach dem Upgrade von Ubuntu 20.04 auf Ubuntu 22.04

Ich habe vor Kurzem Ubuntu Server 20.04 auf Ubuntu Server 22.04 aktualisiert. Es handelt sich um einen LEMP-Server, auf dem die neueste Mainline-Version von Nginx läuft. Wenn ich nach dem Upgrade versuche, die Datei /etc/nginx/nginx.conf mit dem Nano-Editor zu ändern, zeigt Nano eine Warnung in Rot an, die besagt:

/etc/nginx/nginx.conf ist schreibgeschützt.

Was hat es mit diesem Fehler auf sich und seit wann ist meine nginx.conf-Datei schreibgeschützt? Handelt es sich hier um ein nginx-Problem, ein nano-Problem, ein Problem mit den Dateisystemberechtigungen oder um alles zusammen? Was kann ich tun, um diesen Fehler zu beheben? Siehe Screenshot unten.

Nginx.conf ist schreibgeschützt

Antwort1

Dies ist kein tatsächlicher Fehler, Sie können weiterhin in die Datei schreiben.

nanoprüft, ob für die Datei ein u+w, g+woder o+wBerechtigungsbit gesetzt ist. Wenn keines dieser Bits gesetzt ist, wurde niemandem im System explizit Schreibzugriff auf die Datei gewährt. Der Root-Benutzer (zu dem Sie möglicherweise mit erhoben wurden sudo) setzt dies jedoch außer Kraft und kann implizit in jede Datei schreiben.

Mit anderen Worten lautet die Warnung: Sie können in diese Datei schreiben, da Sie Root sind, aber technisch gesehen hat kein Benutzer Schreibberechtigung für die Datei.

Das neue Verhalten ist das Ergebnis eines Erweiterungsantrags, der eingereicht wurde alsFehler #58685Erläuterung der Gründe:

Derzeit schreibt nano problemlos in eine Datei mit der Berechtigung 444 [ r--r--r--].

Oft sind solche Dateien aus einem bestimmten Grund schreibgeschützt und es wäre schön, den Benutzer darauf hinzuweisen und zu fragen, ob er dies wirklich tun möchte.


Um diese Frage zu beantworten, habe ich nachgeschautCode für nanoauf gnu.org. (Wenn Sie wirklich den genauen Code benötigen, der in Ubuntus Repositories enthalten ist, schauen Sie sichLaunchpad.) Darin src/files.cfand ich die Nachricht:

#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

Die git blamefür diese Zeilen weist uns an, uns zu bekennen180a53cc0:

Dateien: Warnen Sie den Root-Benutzer, wenn alle Schreibbits fehlen
Root hat uneingeschränkten Zugriff darauf, sowohl nicht lesbare Dateien zu lesen als auch nicht beschreibbare Dateien zu schreiben. Das Dateisystem verhindert dies nicht. Informieren Sie Root also, wenn Sie eine Datei öffnen, die schreibgeschützt sein soll.

verwandte Informationen