Patch ohne Besitzer- und Gruppenwechsel

7

Ich habe eine Datei, die einem Nicht-Root-Benutzer gehört:

# ls -l example.php
-rw------- 1 foo bar ... example.php

Ich habe gerade einen Patch mit einem Befehl wie angewendet

patch -p0 <<-EOF
--- .../example.php.orig 2012-06-20 15:07:13.000000000 +0200
+++ .../example.php  2012-06-20 15:43:05.000000000 +0200
...
EOF

as root und die Zieldatei Benutzer und Gruppe wurden beide in geändert root. Ich konnte auf den manSeiten keinen Hinweis darauf finden .

Gibt es eine Möglichkeit , um die Datei Eigentum nach wie vor zu verlassen , ohne su, sudooder chown?

  • su scheint nicht in der Lage zu sein, eine Gruppe anzugeben.
  • sudo -u foo patch ... läuft gut, setzt aber die falsche Gruppe.
  • sudo -u foo -g bar patch ...kehrt zurück Sorry, user root is not allowed to execute '/usr/bin/patch' as foo:bar on hostname. Dies kann daran liegen, dass der Benutzer fookein Mitglied der Gruppe ist bar.
  • chownDies würde bedeuten, dass Sie die Berechtigungen vor dem Ausführen speichern patchund zwei weitere Codezeilen hinzufügen müssen.
l0b0
quelle
Können Sie ein Beispiel mit Dateieigentum und dem genauen Befehl zeigen, den Sie ausführen? Ich bin ein bisschen überrascht zu sehen, dass der Benutzer root nicht ausführen darf ... als foo. Das würde bedeuten, dass Sie als root angemeldet sind und dann sudo ausführen. Normalerweise führen Sie sudo aus, um erhöhte Berechtigungen zu erhalten. Um Ihnen zu helfen, müssen wir wissen, wem die Datei gehört, wer den Patch-Befehl ausführt usw.
Bram
@Bram: Klärte die Frage.
10.

Antworten:

8

patch Erstellt eine neue Datei und enthält daher effektive Benutzeranmeldeinformationen.

Eine Problemumgehung: Verwenden Sie diese Option, patch -oum eine temporäre Datei zu erstellen, und cattmp-Datei dann einfach in die Originaldatei.

poige
quelle