Wie Sie sehen, gibt es viele Lösungsvorschläge, die jedoch davon abhängen, warum genau das Problem überhaupt auftritt.
David Z
So reproduzieren Sie: sudo rm -f ~/.nano_history(Entfernen Sie die Datei), sudo nano somefile(Bearbeiten Sie eine Datei als Root), ^K sometext(Suchen Sie nach Text), ^X(Beenden), nano somefile(Bearbeiten Sie eine Datei wie Sie). Es wird ein Fehler beim Lesen von /home/ssylee/.nano_history angezeigt: Berechtigung verweigert . nano erstellt .nano_history zum Speichern Ihres Suchverlaufs. Die Datei gehört zu root, wenn sie während einer sudo nanoSitzung erstellt wird.
Iain Samuel McLean Elder
Antworten:
28
Dies wird normalerweise durch Laufen verursacht sudo nano [file]. Dadurch wird der Nano-Prozess als Root ausgeführt, $HOMEdas Basisverzeichnis des regulären Benutzers bleibt jedoch festgelegt. Wenn Nano also Dateien erstellt (einschließlich der Datei .nano_history), wird das Eigentum von Root übernommen und in Ihrem Basisverzeichnis abgelegt.
Sie können dies überprüfen, indem Sie Folgendes ausführen:
ls -l /home/ssylee/.nano_history
Wenn lsgemeldet wird, dass der Eigentümer der Datei ist root, können Sie sicher sein, dass dies die Ursache war. Ist dies der Fall, kann die Situation folgendermaßen repariert werden:
sudo chown $USER: ~/.nano_history
oder um diesen Befehl zu formulieren:
sudo chown ssylee: /home/ssylee/.nano_history
Eine bessere Angewohnheit ist es, sudoeditoder sudo -eanstelle von zu verwenden sudo nano. Dadurch wird das $EDITORProgramm auf einer Kopie der zu bearbeitenden Datei ausgeführt und die ursprüngliche Datei beim Beenden des Editors atomar ersetzt (was beim Bearbeiten von Systemdateien sehr hilfreich ist).
Standardmäßig wird dies möglicherweise gestartet vi, aber Sie können dies vorübergehend beheben, indem Sie es folgendermaßen aufrufen:
EDITOR=nano sudoedit [filename]
Sie können dauerhaft $EDITORin Ihrem .bashrcoder durch Platzieren konfigurieren
chown $USER:ist eine kürzere Möglichkeit, die primäre Gruppe anzuwenden.
Tobu
1
@Tobu, danke! Ich wusste nicht über diesen Trick. Ich habe die Antwort aktualisiert, um dies widerzuspiegeln.
Unterdrückungsfeuer
1
Am einfachsten ist es, die betreffende Datei zu entfernen. Das nächst einfachere ist, es mit chmod/ lesbar zu machen chown. Am einfachsten ist es, einen anderen Editor zu verwenden.
zuerst, um die aktuellen Berechtigungen anzuzeigen. Dies könnte Ihnen helfen, herauszufinden, warum sie überhaupt schief gelaufen sind. Wenn ssylee der Eigentümer dieser Datei ist, haben Sie möglicherweise eine fehlerhafte Standard-Umask?
sudo rm -f ~/.nano_history
(Entfernen Sie die Datei),sudo nano somefile
(Bearbeiten Sie eine Datei als Root),^K sometext
(Suchen Sie nach Text),^X
(Beenden),nano somefile
(Bearbeiten Sie eine Datei wie Sie). Es wird ein Fehler beim Lesen von /home/ssylee/.nano_history angezeigt: Berechtigung verweigert . nano erstellt .nano_history zum Speichern Ihres Suchverlaufs. Die Datei gehört zu root, wenn sie während einersudo nano
Sitzung erstellt wird.Antworten:
Dies wird normalerweise durch Laufen verursacht
sudo nano [file]
. Dadurch wird der Nano-Prozess als Root ausgeführt,$HOME
das Basisverzeichnis des regulären Benutzers bleibt jedoch festgelegt. Wenn Nano also Dateien erstellt (einschließlich der Datei .nano_history), wird das Eigentum von Root übernommen und in Ihrem Basisverzeichnis abgelegt.Sie können dies überprüfen, indem Sie Folgendes ausführen:
Wenn
ls
gemeldet wird, dass der Eigentümer der Datei istroot
, können Sie sicher sein, dass dies die Ursache war. Ist dies der Fall, kann die Situation folgendermaßen repariert werden:oder um diesen Befehl zu formulieren:
Eine bessere Angewohnheit ist es,
sudoedit
odersudo -e
anstelle von zu verwendensudo nano
. Dadurch wird das$EDITOR
Programm auf einer Kopie der zu bearbeitenden Datei ausgeführt und die ursprüngliche Datei beim Beenden des Editors atomar ersetzt (was beim Bearbeiten von Systemdateien sehr hilfreich ist).Standardmäßig wird dies möglicherweise gestartet
vi
, aber Sie können dies vorübergehend beheben, indem Sie es folgendermaßen aufrufen:Sie können dauerhaft
$EDITOR
in Ihrem.bashrc
oder durch Platzieren konfigurierenin
/etc/environment
.quelle
chown $USER:
ist eine kürzere Möglichkeit, die primäre Gruppe anzuwenden.Am einfachsten ist es, die betreffende Datei zu entfernen. Das nächst einfachere ist, es mit
chmod
/ lesbar zu machenchown
. Am einfachsten ist es, einen anderen Editor zu verwenden.quelle
Ich benutze immer das:
sudo chown -R username:username /home/username
Es löst das Problem, wenn die Berechtigungen durcheinander sind.
quelle
Ich würde lieber eine machen
zuerst, um die aktuellen Berechtigungen anzuzeigen. Dies könnte Ihnen helfen, herauszufinden, warum sie überhaupt schief gelaufen sind. Wenn ssylee der Eigentümer dieser Datei ist, haben Sie möglicherweise eine fehlerhafte Standard-Umask?
quelle
Ändern Sie einfach die Berechtigungen der
.nano_history
Datei wie folgt:ERLEDIGT! Die Nachricht ist weg! =) Wirklich so einfach ist das.
quelle
Das Update erfordert das Bearbeiten der Nano-Konfigurationsdatei / etc / nanorc und das Löschen von /home//.nano_history.
Kommentieren Sie zuerst den gesetzten historylog-Parameter von nanorc mit diesem Befehl aus: sudo nano / etc / nanorc
Dadurch wird die Datei ~ / .nano_history deaktiviert, die zum Speichern und Lesen von Such- / Ersetzungszeichenfolgen verwendet wird.
Dadurch verbleibt die Datei .nano_history weiterhin in Ihrem Benutzerverzeichnis. Löschen Sie diese Datei wie folgt:
Das ist es!
Quellen
quelle