Kiedy używam sudo do wykonywania niektórych czynności z plikami, pliki te zmieniają własność. Jak korzystać z poleceń w sudo bez zmiany właściciela plików?
Przykładowy plik archivos35.sh pochodzi z Apache, ale używam sed (z usr admin sudo)
$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh
Użytkownik admin
z sudo ---
sudo sed -i s/old/new/g archivos35.sh
Ale wykonanie tego polecenia za pomocą sudo zmienia właściciela pliku
$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh
Jak mogę uniknąć używania polecenia sudo do zmiany właściciela pliku? Chcę tylko wprowadzić zmiany w pliku bez modyfikowania jego właściciela.
Odpowiedzi:
Jeśli musisz użyć
sudo
do zmodyfikowania pliku, użyj go, aby przełączyć na odpowiedniego użytkownika. Nie musisz przełączać się na root, to tylko domyślne. W twoim przypadku chciałbyś:To uruchomi
sed
polecenie jako użytkownikapache
.źródło
Naprawdę nie zmieniasz własności pliku, raczej usuwasz stary plik i tworzysz nowy. Gdy to zrobisz, nowy plik zostanie utworzony przez użytkownika UID twórcy. Aby tego uniknąć, musisz zmodyfikować plik na swoim miejscu. Edytuj go za pomocą edytora tekstu, który zapisuje, zastępując oryginalny plik na miejscu. Lub uruchom polecenia sed z wyjściem do pliku tymczasowego, a następnie skopiuj plik tymczasowy do oryginalnego pliku.
źródło
-i
opcja aka--in-place
faktycznie zmodyfikuje w miejscu ...ed
lubex
lubvi
/vim
.