Hallo Mitübersetzer, anbei der dritte Teil dieser organisch gewachsenen Handbuchseite mit der Bitte um konstruktive Kritik. Vielen Dank & Grüße Helge -- Dr. Helge Kreutzmann debian@helgefjell.de Dipl.-Phys. http://www.helgefjell.de/debian.php 64bit GNU powered gpg signed mail preferred Help keep free software "libre": http://www.ffii.de/
#. type: TP #, no-wrap msgid "B<ENFILE>" msgstr "B<ENFILE>" #. type: Plain text msgid "" "The system-wide limit on the total number of open files has been reached." msgstr "" "Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde " "erreicht." #. type: TP #, no-wrap msgid "B<ENOENT>" msgstr "B<ENOENT>" #. FIXME but see http://sourceware.org/bugzilla/show_bug.cgi?id=12241 #. type: Plain text msgid "" "The file I<filename> or a script or ELF interpreter does not exist, or a " "shared library needed for the file or interpreter cannot be found." msgstr "" "Die Datei I<filename> oder ein Skript oder ein ELF-Interpreter existiert " "nicht oder eine Laufzeitbibliothek, die für die Datei oder den Interpreter " "benötigt wird, kann nicht gefunden werden." #. type: TP #, no-wrap msgid "B<ENOEXEC>" msgstr "B<ENOEXEC>" #. type: Plain text msgid "" "An executable is not in a recognized format, is for the wrong architecture, " "or has some other format error that means it cannot be executed." msgstr "" "Ein Programm ist nicht in einem erkennbaren Format, ist für die falsche " "Architektur oder hat einen anderen Formatfehler, wodurch es nicht ausgeführt " "werden kann." #. type: TP #, no-wrap msgid "B<ENOMEM>" msgstr "B<ENOMEM>" #. type: Plain text msgid "Insufficient kernel memory was available." msgstr "Es war nicht genügend Kernel-Speicher verfügbar." #. type: TP #, no-wrap msgid "B<ENOTDIR>" msgstr "B<ENOTDIR>" #. type: Plain text msgid "" "A component of the path prefix of I<filename> or a script or ELF interpreter " "is not a directory." msgstr "" "Ein Teil des Pfadpräfixes von I<filename> oder ein Skript oder ELF-" "Interpreter ist kein Verzeichnis." #. type: TP #, no-wrap msgid "B<EPERM>" msgstr "B<EPERM>" #. type: Plain text msgid "" "The filesystem is mounted I<nosuid>, the user is not the superuser, and the " "file has the set-user-ID or set-group-ID bit set." msgstr "" "Das Dateisystem ist I<nosuid> eingehängt, der Benutzer ist nicht der " "Superuser und die Datei hat das Bit set-user-ID oder Bit set-group-ID " "gesetzt." #. type: Plain text msgid "" "The process is being traced, the user is not the superuser and the file has " "the set-user-ID or set-group-ID bit set." msgstr "" "Der Prozess wird verfolgt, der Benutzer ist nicht der Superuser und die " "Datei hat das Bit set-user-ID oder set-group-ID gesetzt." #. type: Plain text msgid "" "A \"capability-dumb\" applications would not obtain the full set of " "permitted capabilities granted by the executable file. See " "B<capabilities>(7)." msgstr "" "Eine »Capability-unfähige« Anwendung würde nicht die die Menge der vom " "ausführbaren Programm gewährten erlaubten Capabilities erhalten. Siehe " "B<capabilities>(7)." #. type: TP #, no-wrap msgid "B<ETXTBSY>" msgstr "B<ETXTBSY>" #. type: Plain text msgid "The specified executable was open for writing by one or more processes." msgstr "" "Das angegebene Programm war für einen oder mehrere Prozesse zum Schreiben " "offen." #. type: SH #, no-wrap msgid "CONFORMING TO" msgstr "KONFORM ZU" #. SVr4 documents additional error #. conditions EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX does not #. document ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL, #. EISDIR or ELIBBAD error conditions. #. type: Plain text msgid "" "POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. POSIX does not document the #! " "behavior, but it exists (with some variations) on other UNIX systems." msgstr "" "POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. POSIX dokumentiert das #!-" "Verhalten nicht, es existiert aber (mit einigen Variationen) auf anderen " "UNIX-Systemen." #. type: SH #, no-wrap msgid "NOTES" msgstr "ANMERKUNGEN" #. type: Plain text msgid "Set-user-ID and set-group-ID processes can not be B<ptrace>(2)d." msgstr "" "Set-user-ID- und Set-group-ID-Prozesse können nicht mit B<ptrace>(2) " "verfolgt werden." #. type: Plain text msgid "" "The result of mounting a filesystem I<nosuid> varies across Linux kernel " "versions: some will refuse execution of set-user-ID and set-group-ID " "executables when this would give the user powers she did not have already " "(and return B<EPERM>), some will just ignore the set-user-ID and set-group-" "ID bits and B<exec>() successfully." msgstr "" "Das Ergebnis des Einhängens eine Dateisystem mit I<nosuid> unterscheidet " "sich abhängig von der Linux-Kernelversion. Unter einigen wird die " "Ausfühnrung von Programmen mit set-user-ID und set-group-ID verweigert, wenn " "das dem Benutzer Rechte geben würde, die er noch nicht bereits hatte (und " "B<EPERM> zurückliefern). Unter anderen werden die Bits set-user-ID und set-" "group-ID ignoriert und B<exec>() erfolgreich ausgeführt." #. e.g., EFAULT on Solaris 8 and FreeBSD 6.1; but #. HP-UX 11 is like Linux -- mtk, Apr 2007 #. Bug filed 30 Apr 2007: http://bugzilla.kernel.org/show_bug.cgi?id=8408 #. Bug rejected (because fix would constitute an ABI change). #. type: Plain text msgid "" "On Linux, I<argv> and I<envp> can be specified as NULL. In both cases, this " "has the same effect as specifying the argument as a pointer to a list " "containing a single null pointer. B<Do not take advantage of this " "nonstandard and nonportable misfeature!> On many other UNIX systems, " "specifying I<argv> as NULL will result in an error (B<EFAULT>). I<Some> " "other UNIX systems treat the I<envp==NULL> case the same as Linux." msgstr "" "Unter Linux können I<argv> und I<envp> als NULL festgelegt werden. In beiden " "Fällen hat dies den gleichen Effekt wie die Festlegung des Arguments auf " "einen Zeiger auf eine Liste, die als einziges Element den NULL-Zeiger " "enthält. B<Nutzen Sie diese nicht standardisierte und nicht portable " "Misfunktionalität nicht aus!> Unter vielen UNIX-Systemen führt die " "Festlegung von I<argv> als NULL zu einem Fehler (B<EFAULT>). I<Einige> " "andere UNIX-Systeme behandeln den Fall I<envp==NULL> wie Linux." #. type: Plain text msgid "" "POSIX.1 says that values returned by B<sysconf>(3) should be invariant over " "the lifetime of a process. However, since Linux 2.6.23, if the " "B<RLIMIT_STACK> resource limit changes, then the value reported by " "B<_SC_ARG_MAX> will also change, to reflect the fact that the limit on space " "for holding command-line arguments and environment variables has changed." msgstr "" "POSIX.1 besagt, dass die von B<sysconf>(3) zurückgelieferten Werte über die " "Lebensdauer eines Prozesses unveränderlich sein sollen. Seit 2.6.23 wird der " "von B<_SC_ARG_MAX> berichtete Wert sich allerdings auch ändern, wenn die " "Ressourcenbegrenzung B<RLIMIT_STACK> sich ändert, um die Tatsache zu " "berücksichtigen, dass die Begrenzung des Platzes zum Halten der " "Befehlszeilenargumente und der Umgebungsvariablen sich geändert hat." #. type: Plain text msgid "" "In most cases where B<execve>() fails, control returns to the original " "executable image, and the caller of B<execve>() can then handle the error. " "However, in (rare) cases (typically caused by resource exhaustion), failure " "may occur past the point of no return: the original executable image has " "been torn down, but the new image could not be completely built. In such " "cases, the kernel kills the process with a B<SIGKILL> signal." msgstr "" "In den meisten Fällen, in denen B<execve>() fehlschlägt, kehrt die Steuerung " "zu dem ursprünglichen Abbild zurück und der Aufrufende von B<execve>() kann " "mit dem Fehler umgehen. In (seltenen) Fällen kann (typischerweise durch " "Ressourcenerschöpfung verursacht) der Fehlschlag den Punkt ohne Rückkehr " "passieren: das ursprüngliche Abbild wurde bereits entfernt aber das neue " "Abbild konnte nicht komplett gebaut werden. In diesen Fällen beendet der " "Kernel den Prozess mit einem Signal B<SIGKILL>." #. type: Plain text msgid "" "A maximum line length of 127 characters is allowed for the first line in an " "interpreter script." msgstr "" "Eine maximale Zeilenlänge von 127 Zeichen wird für die erste Zeile in einem " "interpretierten Skript." #. e.g., Solaris 8 #. e.g., FreeBSD before 6.0, but not FreeBSD 6.0 onward #. type: Plain text msgid "" "The semantics of the I<optional-arg> argument of an interpreter script vary " "across implementations. On Linux, the entire string following the " "I<interpreter> name is passed as a single argument to the interpreter, and " "this string can include white space. However, behavior differs on some " "other systems. Some systems use the first white space to terminate " "I<optional-arg>. On some systems, an interpreter script can have multiple " "arguments, and white spaces in I<optional-arg> are used to delimit the " "arguments." msgstr "" "Die Semantik des Arguments I<Optionale-Args> eines Interpreterskriptes " "unterscheidet sich zwischen Implementierungen. Unter Linux wird die gesamte " "Zeichenkette, die I<Interpreter> folgt, als einziges Argument an den " "Interpreter übergeben und diese Zeichenkette kann Leerzeichen enthalten. Das " "Verhalten unterscheidet sich aber auf einigen anderen Systemen. Einige " "Systeme verwenden das erste Leerzeichen, um I<Optionale-Args> zu beenden. " "Auf einigen Systemen kann ein Interpreterskript mehrere Argumente haben und " "Leerzeichen in I<Optionale-Args> werden zum Begrenzen der Argumente verwandt." #. .SH BUGS #. Some Linux versions have failed to check permissions on ELF #. interpreters. This is a security hole, because it allows users to #. open any file, such as a rewinding tape device, for reading. Some #. Linux versions have also had other security holes in #. .BR execve () #. that could be exploited for denial of service by a suitably crafted #. ELF binary. There are no known problems with 2.0.34 or 2.2.15. #. type: Plain text msgid "Linux ignores the set-user-ID and set-group-ID bits on scripts." msgstr "" "Linux ignoriert die Bits »set-user-ID« und »set-group-ID« bei Skripten." #. type: SS #, no-wrap msgid "execve() and EAGAIN" msgstr "execve() und EAGAIN" #. type: Plain text msgid "" "A more detailed explanation of the B<EAGAIN> error that can occur (since " "Linux 3.1) when calling B<execve>() is as follows." msgstr "" "Eine detailliertere Beschreibung des Fehlers B<EAGAIN>, der (seit Linux " "3.1) beim Aufruf von B<execve>() auftreten kann, ist wie folgt:" #. commit 909cc4ae86f3380152a18e2a3c44523893ee11c4 #. type: Plain text msgid "" "The B<EAGAIN> error can occur when a I<preceding> call to B<setuid>(2), " "B<setreuid>(2), or B<setresuid>(2) caused the real user ID of the process " "to change, and that change caused the process to exceed its B<RLIMIT_NPROC> " "resource limit (i.e., the number of processes belonging to the new real UID " "exceeds the resource limit). From Linux 2.6.0 to 3.0, this caused the " "B<set*uid>() call to fail. (Prior to 2.6, the resource limit was not " "imposed on processes that changed their user IDs.)" msgstr "" "Der Fehler B<EAGAIN> kann auftreten, wenn ein I<vorhergehender> Aufruf von " "B<setuid>(2), B<setreuid>(2) oder B<setresuid>(2) dazu führte, dass die " "echte Benutzer-ID des Prozesses geändert wurde und diese Änderung dazu " "führte, dass der Prozess seine Ressourcenbeschränkung B<RLIMIT_NPROC> " "überschritt (d.h. die Anzahl der zu der neuen echten UID gehörenden Prozesse " "überschreitet die Ressourcenbeschränkung). Von Linux 2.6.0 bis 3.0 führte " "dies dazu, dass der Aufruf B<set*uid>() fehlschlug. (Vor 2.6 wurde die " "Ressourcenbeschränkung bei Prozessen, die ihre Benutzer-IDs änderten, nicht " "durchgesetzt.)" #. type: Plain text msgid "" "Since Linux 3.1, the scenario just described no longer causes the " "B<set*uid>() call to fail, because it too often led to security holes where " "buggy applications didn't check the return status and assumed that\\(emif " "the caller had root privileges\\(emthe call would always succeed. Instead, " "the B<set*uid>() calls now successfully change the real UID, but the kernel " "sets an internal flag, named B<PF_NPROC_EXCEEDED>, to note that the " "B<RLIMIT_NPROC> resource limit has been exceeded. If the " "B<PF_NPROC_EXCEEDED> flag is set and the resource limit is still exceeded at " "the time of a subsequent B<execve>() call, that call fails with the error " "B<EAGAIN>. This kernel logic ensures that the B<RLIMIT_NPROC> resource " "limit is still enforced for the common privileged daemon workflow" "\\(emnamely, B<fork>(2) + B<set*uid>() + B<execve>()." msgstr "" "Seit Linux 3.1 schlägt in dem gerade beschriebenen Szenario der Aufruf " "B<set*uid>() nicht mehr fehl, da dies zu oft zu Sicherheitslöchern führte, " "bei denen fehlerhafte Anwendungen nicht den Rückgabewert prüften und " "annahmen, dass – falls der Aufrufende Root-Rechte hatte – der Aufruf immer " "erfolgreich sein würde. Stattdessen ändert der Aufruf B<set*uid>() jetzt " "erfolgreich die echte UID, aber der Kernel setzt einen internen Schalter " "namens B<PF_NPROC_EXCEEDED>, um zu vermerken, dass die " "Ressourcenbeschränkung B<RLIMIT_NPROC> überschritten wurde. Falls der " "Schalter B<PF_NPROC_EXCEEDED> gesetzt ist und die Ressourcenbeschränkung zum " "Zeitpunkt eines folgenden B<execve>()-Aufrufs immer noch überschritten ist, " "dann schlägt dieser Aufruf mit dem Fehler B<EAGAIN> fehl. Diese Kernellogik " "stellt sicher, dass die Ressourcenbeschränkung B<RLIMIT_NPROC> für den " "häufigen Ablauf bei privilegierten Daemons – also B<fork>(2) + B<set*uid>() " "+ B<execve>() – weiterhin durchgesetzt wird." #. type: Plain text msgid "" "If the resource limit was not still exceeded at the time of the B<execve>() " "call (because other processes belonging to this real UID terminated between " "the B<set*uid>() call and the B<execve>() call), then the B<execve>() " "call succeeds and the kernel clears the B<PF_NPROC_EXCEEDED> process flag. " "The flag is also cleared if a subsequent call to B<fork>(2) by this process " "succeeds." msgstr "" "Falls die Ressourcenbegrenzung zum Zeitpunkt des Aufrufs B<execve>() noch " "nicht überschritten wurde (da andere zu dieser echten UID gehörende Prozesse " "sich zwischen dem Aufruf von B<set*uid>() und dem Aufruf von B<execve>() " "beendeten) dann gelingt der Aufruf und der Kernel bereinigt den " "Prozessschalter B<PF_NPROC_EXCEEDED>. Der Schalter wird auch auf 0 gesetzt, " "falls ein folgender Aufruf von B<fork>(2) durch diesen Prozess gelingt." #. type: SS #, no-wrap msgid "Historical" msgstr "Geschichtliches" #. .SH BUGS #. Some Linux versions have failed to check permissions on ELF #. interpreters. This is a security hole, because it allows users to #. open any file, such as a rewinding tape device, for reading. Some #. Linux versions have also had other security holes in #. .BR execve () #. that could be exploited for denial of service by a suitably crafted #. ELF binary. There are no known problems with 2.0.34 or 2.2.15. #. type: Plain text msgid "" "With UNIX\\ V6, the argument list of an B<exec>() call was ended by 0, " "while the argument list of I<main> was ended by -1. Thus, this argument " "list was not directly usable in a further B<exec>() call. Since UNIX\\ V7, " "both are NULL." msgstr "" "Unter UNIX\\ V6 wurde die Argumentenliste von einem B<exec>()-Aufruf durch 0 " "beendet, während die Argumentenliste von I<main> durch -1 beendet wurde. " "Daher war diese Argumentenliste nicht für weitere B<exec>()-Aufrufe direkt " "verwendbar. Seit UNIX\\ V7 sind beide NULL." #. type: SH #, no-wrap msgid "EXAMPLE" msgstr "BEISPIEL" #. type: Plain text msgid "" "The following program is designed to be execed by the second program below. " "It just echoes its command-line arguments, one per line." msgstr "" "Das folgende Programm ist dafür gedacht, vom zweiten folgenden Programm " "ausgeführt zu werden. Es gibt nur seine Befehlszeile (eine pro Zeile) wieder " "aus." #. type: Plain text #, no-wrap msgid "/* myecho.c */\n" msgstr "/* myecho.c */\n" #. type: Plain text #, no-wrap msgid "" "#include E<lt>stdio.hE<gt>\n" "#include E<lt>stdlib.hE<gt>\n" msgstr "" "#include E<lt>stdio.hE<gt>\n" "#include E<lt>stdlib.hE<gt>\n" #. type: Plain text #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int j;\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " int j;\n" #. type: Plain text #, no-wrap msgid "" " for (j = 0; j E<lt> argc; j++)\n" " printf(\"argv[%d]: %s\\en\", j, argv[j]);\n" msgstr "" " for (j = 0; j E<lt> argc; j++)\n" " printf(\"argv[%d]: %s\\en\", j, argv[j]);\n" #. type: Plain text #, no-wrap msgid "" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" " exit(EXIT_SUCCESS);\n" "}\n" #. type: Plain text msgid "" "This program can be used to exec the program named in its command-line " "argument:" msgstr "" "Dieses Programm kann zur Ausführung des in seinem Befehlszeilenargument " "benannten Programms verwandt werden:" #. type: Plain text #, no-wrap msgid "/* execve.c */\n" msgstr "/* execve.c */\n" #. type: Plain text #, no-wrap msgid "" "#include E<lt>stdio.hE<gt>\n" "#include E<lt>stdlib.hE<gt>\n" "#include E<lt>unistd.hE<gt>\n" msgstr "" "#include E<lt>stdio.hE<gt>\n" "#include E<lt>stdlib.hE<gt>\n" "#include E<lt>unistd.hE<gt>\n" #. type: Plain text #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " char *newargv[] = { NULL, \"hello\", \"world\", NULL };\n" " char *newenviron[] = { NULL };\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " char *newargv[] = { NULL, \"hello\", \"world\", NULL };\n" " char *newenviron[] = { NULL };\n" #. type: Plain text #, no-wrap msgid "" " if (argc != 2) {\n" " fprintf(stderr, \"Usage: %s E<lt>file-to-execE<gt>\\en\", argv[0]);\n" " exit(EXIT_FAILURE);\n" " }\n" msgstr "" " if (argc != 2) {\n" "\tprintf(stderr, \"Aufruf: %s E<lt>auszuführende-DateiE<gt>\\en\", argv[0]);\n" "\texit(EXIT_FAILURE);\n" " }\n" #. type: Plain text #, no-wrap msgid " newargv[0] = argv[1];\n" msgstr " newargv[0] = argv[1];\n" #. type: Plain text #, no-wrap msgid "" " execve(argv[1], newargv, newenviron);\n" " perror(\"execve\"); /* execve() returns only on error */\n" " exit(EXIT_FAILURE);\n" "}\n" msgstr "" " execve(argv[1], newargv, newenviron);\n" " perror(\"execve\"); /* execve() kehrt nur im Fehlerfall zurück */\n" " exit(EXIT_FAILURE);\n" "}\n" #. type: Plain text msgid "We can use the second program to exec the first as follows:" msgstr "" "Wir können das zweite Programm verwenden, um das erste wie folgt aufzurufen:" #. type: Plain text #, no-wrap msgid "" "$B< cc myecho.c -o myecho>\n" "$B< cc execve.c -o execve>\n" "$B< ./execve ./myecho>\n" "argv[0]: ./myecho\n" "argv[1]: hello\n" "argv[2]: world\n" msgstr "" "$B< cc myecho.c -o myecho>\n" "$B< cc execve.c -o execve>\n" "$B< ./execve ./myecho>\n" "argv[0]: ./myecho\n" "argv[1]: hello\n" "argv[2]: world\n" #. type: Plain text msgid "" "We can also use these programs to demonstrate the use of a script " "interpreter. To do this we create a script whose \"interpreter\" is our " "I<myecho> program:" msgstr "" "Wir können diese Programme auch zur Demonstration der Verwendung eines " "Skript-Interpreters verwenden. Dafür erstellen wir ein Skript, dessen " "»Interpreter« unser I<myecho>-Programm ist." #. type: Plain text #, no-wrap msgid "" "$B< cat E<gt> script>\n" "B<#!./myecho script-arg>\n" "B<^D>\n" "$B< chmod +x script>\n" msgstr "" "$B< cat E<gt> script>\n" "B<#!./myecho script-arg>\n" "B<^D>\n" "$B< chmod +x script>\n" #. type: Plain text msgid "We can then use our program to exec the script:" msgstr "Wir können dann unser Program verwenden, um das Skript auszuführen:" #. type: Plain text #, no-wrap msgid "" "$B< ./execve ./script>\n" "argv[0]: ./myecho\n" "argv[1]: script-arg\n" "argv[2]: ./script\n" "argv[3]: hello\n" "argv[4]: world\n" msgstr "" "$B< ./execve ./script>\n" "argv[0]: ./myecho\n" "argv[1]: script-arg\n" "argv[2]: ./script\n" "argv[3]: hello\n" "argv[4]: world\n" #. type: SH #, no-wrap msgid "SEE ALSO" msgstr "SIEHE AUCH" #. type: Plain text msgid "" "B<chmod>(2), B<execveat>(2), B<fork>(2), B<get_robust_list>(2), " "B<ptrace>(2), B<execl>(3), B<fexecve>(3), B<getopt>(3), B<system>(3), " "B<credentials>(7), B<environ>(7), B<path_resolution>(7), B<ld.so>(8)" msgstr "" "B<chmod>(2), B<execveat>(2), B<fork>(2), B<get_robust_list>(2), " "B<ptrace>(2), B<execl>(3), B<fexecve>(3), B<getopt>(3), B<system>(3), " "B<credentials>(7), B<environ>(7), B<path_resolution>(7), B<ld.so>(8)" #. type: SH #, no-wrap msgid "COLOPHON" msgstr "KOLOPHON" #. type: Plain text msgid "" "This page is part of release 4.15 of the Linux I<man-pages> project. A " "description of the project, information about reporting bugs, and the latest " "version of this page, can be found at \\%https://www.kernel.org/doc/man-" "pages/." msgstr "" "Diese Seite ist Teil der Veröffentlichung 4.15 des Projekts Linux-I<man-" "pages>. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet " "werden können sowie die aktuelle Version dieser Seite finden sich unter \\" "%https://www.kernel.org/doc/man-pages/."
Attachment:
signature.asc
Description: Digital signature