Jak mogę rozwiązać ten błąd, który otrzymuję po zatwierdzeniu zmian w repozytorium SVN z terminala Ubuntu?

12

Kiedy zatwierdzam zmiany w repozytorium SVN, zawsze napotykam na następujący problem w terminalu w Ubuntu:

Error reading /home/ssylee/.nano_history: Permission denied

Wszelkie pomysły, jak to rozwiązać?

stanigator
źródło
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

EDITOR=nano

w /etc/environment.

Tłumienie ognia
źródło
4
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.

Ignacio Vazquez-Abrams
źródło
1

Zawsze używam tego:
sudo chown -R username:username /home/username

Rozwiązuje problem, gdy uprawnienia są pomieszane.

Apacz
źródło
1

Wolałbym zrobić

ls -la /home/ssylee/.nano_history

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?

vtest
źródło
1

Po prostu zmień uprawnienia do .nano_historypliku w następujący sposób:

sudo chown youruser:yourgroup /home/<username>/.nano_history

GOTOWY! Wiadomość zniknęła! =) Naprawdę to takie proste.

Metafaniel
źródło
0

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

#set historylog

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:

sudo rm .nano_history

Otóż ​​to!

Źródła

abr4xas
źródło
Spowoduje to całkowite wyłączenie historii w nano, prawdopodobnie nie jest to coś, co użytkownicy chcieliby zrobić.
Mxx