Jak widać, istnieje wiele pomysłów na jego rozwiązanie, ale to zależy od tego, dlaczego dokładnie ten problem występuje.
David Z
Aby odtworzyć: sudo rm -f ~/.nano_history(usuń plik), sudo nano somefile(edytuj plik jako root), ^K sometext(wyszukaj tekst), ^X(wyjdź), nano somefile(edytuj plik jako Ty). Zobaczysz błąd podczas odczytu /home/ssylee/.nano_history: Odmowa dostępu . nano tworzy .nano_history do przechowywania historii wyszukiwania. Plik należy do katalogu głównego, jeśli został utworzony podczas sudo nanosesji.
Iain Samuel McLean Starszy
Odpowiedzi:
28
Jest to zwykle spowodowane uruchomieniem sudo nano [file]. Spowoduje to uruchomienie procesu nano jako root, ale pozostawi $HOMEustawiony w katalogu domowym zwykłego użytkownika, więc jeśli nano utworzy jakiekolwiek pliki (w tym plik .nano_history), będzie własnością root i zostanie umieszczone w katalogu domowym.
Możesz to sprawdzić, uruchamiając:
ls -l /home/ssylee/.nano_history
Jeśli lszgłaszasz, że plik jest własnością root, możesz być pewien, że to była przyczyna. Jeśli tak, to sytuację można naprawić, uruchamiając:
sudo chown $USER: ~/.nano_history
lub przeliteruj to polecenie:
sudo chown ssylee: /home/ssylee/.nano_history
Lepszym nawykiem jest używanie sudoeditlub sudo -ezamiast tego sudo nano. Spowoduje to uruchomienie $EDITORprogramu na kopii edytowanego pliku, a następnie atomowe zastąpienie oryginalnego pliku po wyjściu z edytora (co jest bardzo przydatne podczas edycji plików systemowych).
Domyślnie może się uruchomić vi, ale możesz to tymczasowo naprawić, wywołując go w następujący sposób:
EDITOR=nano sudoedit [filename]
Możesz na stałe skonfigurować $EDITORw swoim .bashrclub poprzez umieszczenie
chown $USER:jest krótszym sposobem zastosowania grupy podstawowej.
Tobu,
1
@Tobu, dzięki! nie wiedziałem o tej sztuczce. Zaktualizowałem odpowiedź, aby to odzwierciedlić.
Suppressingfire,
1
Najłatwiej jest usunąć dany plik. Następnym najłatwiejszym jest uczynienie go czytelnym za pomocą chmod/ chown. Następnym najłatwiejszym jest użycie innego edytora.
po pierwsze, aby zobaczyć aktualne uprawnienia. To może pomóc ci dowiedzieć się, dlaczego popełniły błąd. Jeśli ssylee jest właścicielem tego pliku, może masz uszkodzony domyślny umask?
sudo rm -f ~/.nano_history
(usuń plik),sudo nano somefile
(edytuj plik jako root),^K sometext
(wyszukaj tekst),^X
(wyjdź),nano somefile
(edytuj plik jako Ty). Zobaczysz błąd podczas odczytu /home/ssylee/.nano_history: Odmowa dostępu . nano tworzy .nano_history do przechowywania historii wyszukiwania. Plik należy do katalogu głównego, jeśli został utworzony podczassudo nano
sesji.Odpowiedzi:
Jest to zwykle spowodowane uruchomieniem
sudo nano [file]
. Spowoduje to uruchomienie procesu nano jako root, ale pozostawi$HOME
ustawiony w katalogu domowym zwykłego użytkownika, więc jeśli nano utworzy jakiekolwiek pliki (w tym plik .nano_history), będzie własnością root i zostanie umieszczone w katalogu domowym.Możesz to sprawdzić, uruchamiając:
Jeśli
ls
zgłaszasz, że plik jest własnościąroot
, możesz być pewien, że to była przyczyna. Jeśli tak, to sytuację można naprawić, uruchamiając:lub przeliteruj to polecenie:
Lepszym nawykiem jest używanie
sudoedit
lubsudo -e
zamiast tegosudo nano
. Spowoduje to uruchomienie$EDITOR
programu na kopii edytowanego pliku, a następnie atomowe zastąpienie oryginalnego pliku po wyjściu z edytora (co jest bardzo przydatne podczas edycji plików systemowych).Domyślnie może się uruchomić
vi
, ale możesz to tymczasowo naprawić, wywołując go w następujący sposób:Możesz na stałe skonfigurować
$EDITOR
w swoim.bashrc
lub poprzez umieszczeniew
/etc/environment
.źródło
chown $USER:
jest krótszym sposobem zastosowania grupy podstawowej.Najłatwiej jest usunąć dany plik. Następnym najłatwiejszym jest uczynienie go czytelnym za pomocą
chmod
/chown
. Następnym najłatwiejszym jest użycie innego edytora.źródło
Zawsze używam tego:
sudo chown -R username:username /home/username
Rozwiązuje problem, gdy uprawnienia są pomieszane.
źródło
Wolałbym zrobić
po pierwsze, aby zobaczyć aktualne uprawnienia. To może pomóc ci dowiedzieć się, dlaczego popełniły błąd. Jeśli ssylee jest właścicielem tego pliku, może masz uszkodzony domyślny umask?
źródło
Po prostu zmień uprawnienia do
.nano_history
pliku w następujący sposób:GOTOWY! Wiadomość zniknęła! =) Naprawdę to takie proste.
źródło
Poprawka wymaga edycji pliku konfiguracyjnego nano / etc / nanorc i usunięcia /home//.nano_history.
Najpierw skomentuj ustawiony parametr historii dzienników nanorc za pomocą tego polecenia: sudo nano / etc / nanorc
Spowoduje to wyłączenie pliku ~ / .nano_history używanego do zapisywania i odczytywania ciągów wyszukiwania / zamiany.
To nadal pozostawia plik .nano_history w katalogu użytkownika. Usuń ten plik w następujący sposób:
Otóż to!
Źródła
źródło