
Hi, Ich habe hier ein defektes Raid gehabt. Und nun sollte eigentlich alles wieder laufen. Doch ich habe scheinbar immernoch ein paar Packete oder Dateien defekt. Wenn ich Beispielsweise SuSEconfig aufrufe, dann meldet er mit bei der Erstellung der Manpages folgenden Fehler: Processing index files of all manpages... execve: Permission denied Ich habe nicht den hauch einer Ahnung was das sein könnte. Habe diverse RPM Packete neu installiert, aber der Fehler kommt immer wieder. Und nicht nur hier. User lassen sich nicht mehr anmelden. Die User bekommen Permission denied auf /bin/bash...... Ich verstehe nicht was da passiert sein könnte. Ich hoffe hier wissen viele bescheid darüber. Ich kann wirklich jede hilfe gebrauchen! danke -- Gruß Sascha Peters

On Thu, 2002-08-22 at 08:14, Sascha Peters wrote:
execve() executes the program pointed to by filename. filename must be either a binary executable, or a script starting with a line of the form "#! interpreter [arg]". In the latter case, the interpreter must be a valid path name for an executable which is not itself a script, which will be invoked as interpreter [arg] filename. Soll heissen, scheinbar scheint das Programm, welches hier aufgerufen wird die falschen Rechte zu haben. Ich weiß leider nicht, welches dafür zuständig ist. Vermutlich solltest Du noch einmal ein fsck machen und dann im schlimmsten Fall die Rechte der einzelnen binaries korrigieren. V -- Volker Kroll 4mino AG Chief System Developer Chausseestr. 52 b volker.kroll@4mino.de D-10115 Berlin Tel.: +49-30-2888490-0 Fax.: +49-30-2888490-99

Hi,
Processing index files of all manpages... execve: Permission denied
Also ich habe hier 2 mal SuSE 7.3 und habe sehr viele RPM Packete neu installiert. Die Rechte, speziell die von den Programmen die ich hier genannt habe habe ich getestet. /bin/bash hat die Richtigen rechte. Übrigens kann ich auch kein 'man bash' als root mehr machen, obwohl die Rechte für mandb richtig sind! Also ich verstehe das einfach nciht mehr. In welchem Packet ist denn execve(), oder wie kann ich den Teil der dafür zuständig ist erneuern? -- Gruß Sascha Peters

On Thu, 2002-08-22 at 12:19, Sascha Peters wrote:
In welchem Packet ist denn execve(), oder wie kann ich den Teil der dafür zuständig ist erneuern?
execve ist eine C Funktion, der ein Programm aufruft und dieses mit dem aufrufenden ersetzt. Da wird auch ziemlich sicher nicht das Problem sein, sonst würdest Du vermutlich nicht mal booten können. Leider kann ich Dein Problem damit aber nicht lösen. V. BTW: Kannst Du bitte beim quoten Deine Vorredner stehen lassen, das erhöht die Übersichtlichkeit. Danke -- Volker Kroll 4mino AG Chief System Developer Chausseestr. 52 b volker.kroll@4mino.de D-10115 Berlin Tel.: +49-30-2888490-0 Fax.: +49-30-2888490-99

Hallo, On Thu, 22 Aug 2002, Sascha Peters wrote:
Verwendest du reiserfs?
execve(2) ist in der libc und das ist nicht dein Problem. Mach mal ein 'strace -eprocess /usr/bin/mandb -q -s', schau aber mal in /sbin/SuSEConfig, ob das richtig ist, bei mir findet sich dort (einfach nach 'index' suchen): if test -x /usr/bin/mandb -a "$CHECK_NEWPACKAGE" != false ; then echo "Processing index files of all manpages..." /usr/bin/mandb -q -s fi -dnh -- "I stopped at Land's End, because to go any further would have been Scilly." -- Robert Billing

Hi,
Ja
schonmal gut! danke!
HOST:/ # strace -eprocess /usr/bin/mandb -q -s execve("/usr/bin/mandb", ["/usr/bin/mandb", "-q", "-s"], [/* 47 vars */]) = 0 execve("/usr/lib/man-db/mandb", ["/usr/bin/mandb", "-q", "-s"], [/* 47 vars */]) = -1 EACCES (Permission denied) execve: Permission denied _exit(-13) = ? HOST:/ #
Bei mir finde ich nichts wenn ich in /sbin/SuSEconfig nach index suche. Da steht auch nichts von 'man' oder 'mandb' das Verstehe ich nun auch wieder nicht... Ich werde das gefühl nciht los das das Problem etwas komplizierter ist... bitte beweist mir das Gegenteil :-) -- Gruß Sascha Peters

Hallo, * Sascha Peters schrieb am 23.Aug.2002: Hier fehlt der Vorredner, es war David.
execve(2) ist in der libc und das ist nicht dein Problem.
schonmal gut! danke!
Die (2) bedeutet, daß execve im zweiten Abschnitt der manpages zu finden ist. Dort befinden sich die Systemaufrufe.
Da steht es doch, Du hast keine Permissons für /usr/lib/man-db/mandb execve ist ein Systemaufruf, mit dem man den aktuellen Prozeß mit einem anderen Programm überschreiben kann. Es gibt eine Menge C-Bibliotheksfunktion, die das machen, aber letztendlich rufen sie alle execve auf. Die Syntax von execve lautet: int execve (const char *dateiname, const char *argv[], const char *envp[]); Das erste Argument ist das Programm, daß ausgeführt werden soll, das zweite ist ein Zeiger auf eine Liste der Argumente und das dritte ein Zeiger auf die Liste des Enviroments. Mit dem dritten Argument wird das komplette Enviroment übergeben, also alle Enviromentvariablen samt Inhalt, ist aber hier nicht wichtig. Wenn so ein execve erfolgreich ist, dann überschreibt es den Prozeß, der es aufgerufen hat mit dem aufgerufenen Programm, es gibt somit kein zurück. Alles was nach einem execve folgt, wird nur im Fehlerfall erreicht. So ein Fehler gibt es aber hier. Leider wird der Fehler nicht aufgearbeitet, sondern gibt die Originalfehlermeldung von execve weiter. Damit kanst Du natürlich nichts anfangen. Es stimmt was mit den Permissions von /usr/lib/man-db/mandb. Wenn ich es richtig in Erinnerung habe, dann hast Du aber nicht nur mit mandb Probleme, kann es sein, daß die Permissions von /usr/lib nicht stimmen? Um /usr/lib/man-db/mandb ausführen zu können, muß Du das Ausführrecht für /, für /usr, für /usr/lib, für /usr/lib/man-db und für /usr/lib/man-db/mandb haben. Hast Du ein einziges Ausführrecht nicht, so muß es scheitern. Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9

Hallo, On Fri, 23 Aug 2002, Sascha Peters wrote:
Hoehoe. Da haben wir evtl. den Verursacher. Aber das sollten wir evtl. noch genauer diagnostizieren, bevor du z.B. ein reiserfsck --rebuild-tree auf die Partition loslaesst, du solltest dich aber an den Gedanken gewoehnen, dass eine neuformatierung noetig werden koennte. IIRC ging ein aehnliches Problem vor nicht allzulanger Zeit ueber die Liste, kram also am besten mal selber im Archiv nach 'reiserfs' und 'permissions' (oder so).
Bingo. Als erstes wird execve("/usr/bin/mandb", ...) ausgefuehrt, was auch noch klappt (Returncode = 0). Dann aber will mandb execve("/usr/lib/man-db/mandb", ...) ausfuehren und _DORT_ kommt der Fehler. Checke also mal, was sich mit welchen Rechten unter /usr/lib/man-db so rumtreibt (bei mir gibt's das Verz. nichtmal, es scheint, es hat sich in letzter Zeit da was getan: Mein System basiert auf SuSE 6.2 mit glibc-2.1.3).
Oh, _das_ ist kein Problem, das liegt sicher nur daran, dass ich hier ein aelteres System habe (s.o.). Vermutlich ist der mandb Kram inzwischen auch ausgelagert, bei mir schwirren da noch in /sbin/conf.d/ ein paar "SuSEConfig.foo"-scripte rum, mit foo z.B. "tetex", "perl" u.a., schaetze sowas in der Art gibt's bei dir auch (evtl. unter /etc/, /etc/rc.d/) (ggfs. mach ein 'locate SuSEConfig' ;) Das ist aber wohl ueberfluessig, da das 'mandb -q -s' den Fehler wohl reproduziert hat.
Ich werde das gefühl nciht los das das Problem etwas komplizierter ist...
Naja, trivial ist's net, kompliziert bisher auch net, man muss nur wissen, wie man Fehlermeldungen "verfolgt" -- da helfen halt eigentlich nur Erfahrung und Grundkenntnisse von C (lesend reicht!)... Aber dafuer gibt's ja die Liste :) -dnh -- 275: Luster-Format Positiv gemeint: Eßfreudig Negativ gemeint: Das Äquivalent von zwei Öltanks (Alexander Stielau)
participants (4)
-
B.Brodesser@t-online.de
-
David Haller
-
Sascha Peters
-
Volker Kroll