Wprowadziłem długie zmiany w pliku konfiguracyjnym na komputerze z systemem Linux Ubuntu za pomocą edytora vi. Niestety najpierw zapomniałem sudo, więc teraz jestem w edytorze, ale nie mogę zapisać moich zmian z powodu braku uprawnień. Czy mogę wstecznie wykonać sudo użytkownika na tym terminalu lub jaki byłby najlepszy sposób działania?
linux
permissions
sudo
vi
Szymon
źródło
źródło
Odpowiedzi:
W tym przypadku piszę plik za pomocą
:w /tmp/tmpfile
. Potem wychodzę i przechodzę/tmp/tmpfile
do mojego starego pliku z prawami sudo.źródło
vi
domyślnym (który jest prawdopodobnie 666, AND z odwrotnością twojego „umask”), zastępuje właściciela pliku twoim UID (był to „root”, prawda?), i zrywa twarde linki./tmp
katalog. (2) Jeśli masz naprawdę złych użytkowników w twoim systemie, mogą zastąpić twojego/tmp/tmpfile
pomiędzy, kiedy napiszesz (zvi
), a kiedy skopiujesz go przez edytowany plik konfiguracji systemu. Bezpieczniej jest umieścić plik tymczasowy w katalogu, do którego tylko Ty masz dostęp.Od SO :
Właściwie teraz używam tego sposobu, aby robić to częściej:
Myślę, że jest to trochę bardziej intuicyjne, ponieważ wiem, co to
:%!
robi, podczas gdy nie mam głębszego zrozumienia:w !
. Ponadto łatwo przeoczyć bardzo ważną przestrzeń międzyw
i!
.źródło
vi
polecenia mogą składać się z wielu liter, więc teoretycznie może istniećwfoo
polecenie „ ”, więc jeśli chcesz napisać do pliku o nazwie „foo
”, musisz powiedzieć „:w foo
”. Tzn. Potrzebujesz spacji po „:w
”. Jeśli chodzi o „:w !
” - wiesz, co to jest „:!
”, prawda? „:!date
” Uruchamiadate
polecenie „ ”. Więc „:w !xyz
” zapisuje bufor, ale raczej do polecenia niż do pliku.%
chociaż?%
może być trudniej.) (3) OK, pomogę ci trochę.tee
to program, który pozwala zapisywać informacje w wielu miejscach. Na przykładdate | tee cody
zapisze bieżącą datę i godzinę w pliku o nazwiecody
… ( ciąg dalszy)date | tee cody > bugstein
zapisze bieżącą datę i godzinę do pliku o nazwie,cody
a także do pliku o nazwiebugstein
. - Rozumieszsudo
? Pozwala uruchomić komendę z uprawnieniami innego użytkownika (zazwyczaj root). Na przykładls /root
ogólnie się nie powiedzie, ponieważ nie masz dostępu do/root
. Alesudo ls /root
zadziała. - Niefortunnym efektem ubocznym sposobu działania Uniksa jest to, żesudo ls /root > /root/cody
zawiedzie, ponieważ nie masz dostępu do/root
, a więc nie możesz pisać/root/cody
. … (Ciąg dalszy)Nie możesz otworzyć innego terminala i tymczasowo zmienić prawa dostępu do pliku?
źródło
:w !sudo tee % solution
wysłany przez wfaulk