2009-08-21 11 views
0

Ich verwende ein Open-Source-Perl-Paket namens "Webmin" auf mehreren Servern. Es ist hauptsächlich Perl auf der Innenseite.Warum kann Webmin Dateien in Verzeichnissen, die nicht weltweit ausführbar sind, nicht öffnen?

Ich fand ein seltsames Verhalten auf einem neuen 64-Bit-Server: Dateien wurden leer erstellt.

Ich habe es auf eine "Erlaubnis verweigert" -Fehler in Perl eingebaute Funktion open verfolgt, die ziemlich ungewöhnlich ist, da die Anwendung als root ausgeführt wird. Ich hatte Perl gibt das $ < und $> Variablen, und sie beide Anspruch Ich bin Benutzer 0

Diese Fehler Dateien in Verzeichnissen zu beeinflussen scheinen, wo das Verzeichnis nicht Welt ausführbar ist (chmod o-x $DIR) ... und es passiert nur tief in webmin, ich kann es nicht alleine reproduzieren.

Hört sich das auch nur annähernd an?

+2

Sie können Webmin als Root aufrufen, aber es kann Berechtigungen löschen (z. B. durch Wechseln zu einem "Webmin" -Benutzer). Sie sollten prüfen, mit welcher Benutzerkennung der Prozess läuft. –

+0

10 Sind die Berechtigungen für alle Server identisch? Ist das Apache-Setup identisch? (Oder welche Server-Software Sie auch verwenden.) Das klingt nach einem Problem mit dem Server-Setup oder der Software. Sie könnten versuchen, das Webmin Wiki: http://doxfer.com/Webmin/WebHome – Telemachus

Antwort

2

ACLs im Verzeichnis?

SELinux eingeschaltet?

Die Tatsache, dass Sie eine "Erlaubnis verweigert" -Fehler für ein Verzeichnis, das nicht das Ausführen Bit hat, ist nicht überraschend - auf Verzeichnisse, steuert das Ausführen Bit Zugriff auf den Inhalt des Verzeichnisses - die Frage ist warum Das Ausführungsbit ist nicht gesetzt.

Überprüfen Sie, ob Umask-Einstellungen für den Prozess gelten.

+0

keine acls auf dem Verzeichnis.nicht SELinux. Ich sollte nur durch das * Benutzer * Ausführen Bit betroffen sein, wenn ich der Verzeichnisbesitzer bin (ich bin). Und das funktioniert ganz gut auf einem 32-Bit-Server – jes5199

2

Ich habe es verfolgt bis auf eine "Zugriff verweigert" Fehler [....] * [w] * hich ziemlich ungewöhnlich ist, da die Anwendung als root ausgeführt wird.

Sind Sie sicher, dass Sie als root zum Zeitpunkt der ausgefallenen open() laufen?

Webmin Dokumentation bietet die Möglichkeit, beliebige Befehle als anderen Benutzern zeigt genannt switch_to_unix_user() eine Anzahl von Instanzen einer Funktion und eine schnelle grep des Quellcodes von exec ...

+0

Ich hatte perl Ausgabe der $ < and $> Variablen, und sie beide behaupten, ich bin Benutzer 0 – jes5199

+2

@ jes5199, ah, jetzt ist es wert, Ihren ursprünglichen Beitrag zu klären ... – pilcrow

1

in Unix-Berechtigungen, die Sie benötigen Führen Sie die Berechtigung für ein Verzeichnis aus, um auf alles zuzugreifen, was darin enthalten ist (Sie benötigen keine Leseberechtigung, das heißt, Sie müssen das Verzeichnis auflisten; Sie benötigen lediglich die Ausführungsberechtigung für den Zugriff auf den Inhalt). so etwas greift auf die Datei unter einem Benutzer, der als "andere", und es hat keine Berechtigung

0

Ich habe ein ähnliches Problem, und die Ursache scheint die Länge des Pfades für die Datei/dir zu sein versuche zu öffnen/schreiben. In meinem Fall habe ich versucht, einen Ordner zu öffnen, der existiert und 777 als Erlaubnis haben, aber das System scheitert immer noch damit, dass das Verzeichnis nicht existiert. Haben einige Tests und das Öffnen eines anderen Ordners auf derselben Ebene, aber mit einem kürzeren Namen, erfolgreich war