Perl-Skript, das als root ausgeführt wird, kann keine Root-Dinge ausführen

1887
David Mackintosh

Wir führen RedHat Enterprise ES 5 unter x86_64 aus. Wir haben ein Perl-Skript, das unter anderem Folgendes tut:

  • mach ein Verzeichnis
  • Kopieren Sie Punktdateien hinein
  • chown die ganze Sache

Das Zielverzeichnis ist ein Auto-Mounted-Verzeichnis, das eigentlich das gleiche ist.

Wenn wir dies als Shell-Skript ausführen, funktioniert es:

mkdir /net/host/drive/directory/new cp /some/stuff/.??* /net/host/drive/directory/new chown -R user:group /net/host/drive/directory/new 

Wenn wir dies in einem Perl-Skript tun, entweder als system () oder als Back-Ticks, erhalten wir "Operation nicht erlaubt".

Dieses Skript funktioniert perfekt unter Solaris, von wo es stammt.

Das Skript wird als root ausgeführt, nicht mit einer Su- oder Setuid.

Hat jemand eine Idee was los ist?

1
Können wir diesen Beitrag löschen lassen? Wir haben keinen Zugriff mehr auf die betreffende Box, daher ist das Testen möglicher Lösungen nicht möglich. David Mackintosh vor 14 Jahren 0
@John nein, ich kann nicht, es heißt "zu viele aufregende Antworten oder positive Antworten". David Mackintosh vor 13 Jahren 0

1 Antwort auf die Frage

3
njsf

Ich werde hier auf eine Gliedmaße gehen und spekulieren, dass dieses Dateisystem wahrscheinlich als NFS mit Root-Squash gemountet ist. Dies ist eine Sicherheitsfunktion, da ansonsten jeder, der über einen physischen Zugriff auf das Netzwerk verfügt und über Lesezugriff auf das exportierte Dateisystem verfügt, beim Root-Zugriff auf dem Client-Computer auf alle Dateien in diesem Dateisystem zugreifen kann.

Wenn Sie wirklich möchten, dass root auf den Client-Rechnern über Root-Berechtigungen für das exportierte Dateisystem verfügt, sollten Sie das Dateisystem mit der Option "no root squash" exportieren.

Siehe dieses Beispiel . Beachten Sie, dass der Standardwert dieser Option in Ihrer NFS-Serverimplementierung möglicherweise root-squash ist. Sie sollten diese Dokumentation daher noch einmal überprüfen.

Gute Vermutung, aber nein - es wird no_root_squash exportiert. Außerdem würde es nicht erklären, warum das Shell-Skript funktioniert und das Perl-Skript nicht. David Mackintosh vor 14 Jahren 0