Wenn ich sudo verwende, um einige Aktivitäten mit Dateien durchzuführen, ändern diese Dateien den Besitzer. Wie kann ich Befehle mit sudo verwenden, ohne den Eigentümer der Dateien zu ändern?
Beispieldatei archivos35.sh ist von Apache, aber ich verwende sed (mit usr admin sudo)
$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh
Benutzer admin
mit sudo ---
sudo sed -i s/old/new/g archivos35.sh
Wenn Sie diesen Befehl jedoch mit sudo ausführen, wird der Eigentümer der Datei geändert
$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh
Wie kann ich vermeiden, den Befehl mit sudo zu verwenden, um den Eigentümer der Datei zu ändern? Ich möchte nur Änderungen an der Datei vornehmen, ohne den Eigentümer zu ändern.
Antworten:
Wenn Sie
sudo
zum Ändern der Datei verwenden müssen, wechseln Sie damit zum richtigen Benutzer. Sie müssen nicht brauchen , um root zu wechseln, die nur der Standard ist. In Ihrem Fall möchten Sie also Folgendes tun:Dadurch wird der
sed
Befehl als Benutzer ausgeführtapache
.quelle
Sie ändern nicht wirklich den Eigentümer der Datei, sondern entfernen die alte Datei und erstellen eine neue. Wenn Sie dies tun, wird die neue Datei im Besitz der Benutzer-ID des Erstellers erstellt. Um dies zu vermeiden, müssen Sie die Datei an Ort und Stelle ändern. Bearbeiten Sie es mit einem Texteditor, der durch Überschreiben der Originaldatei gespeichert wird. Oder führen Sie Ihre sed-Befehle mit Ausgabe in eine temporäre Datei aus und kopieren Sie die temporäre Datei über die Originaldatei.
quelle
-i
Option aka--in-place
tatsächlich Inplace ändern würde ...ed
oderex
odervi
/vim
.