.\" -*- coding: UTF-8 -*- .\" Copyright: written by Andrew Morgan .\" and Copyright 2006, 2008, Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" Modified by David A. Wheeler .\" Modified 2004-05-27, mtk .\" Modified 2004-06-21, aeb .\" Modified 2008-04-28, morgan of kernel.org .\" Update in line with addition of file capabilities and .\" 64-bit capability sets in Linux 2.6.2[45]. .\" Modified 2009-01-26, andi kleen .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH capget 2 "3. Mai 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG capget, capset \- Setzt/ermittelt die Capabilities von Thread(s) .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP /* Definition der Konstanten \fBCAP_*\fP und \fB_LINUX_CAPABILITY_*\fP */ \fB#include \fP /* Definition der Konstanten \fBSYS_*\fP */ \fB#include \fP .PP \fBint syscall(SYS_capget, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB cap_user_data_t \fP\fIdataz\fP\fB);\fP \fBint syscall(SYS_capset, cap_user_header_t \fP\fIhdrp\fP\fB,\fP \fB const cap_user_data_t \fP\fIdataz\fP\fB);\fP .fi .PP \fIHinweis\fP: Glibc stellt keine Wrapper für diese Systemaufrufe bereit; rufen Sie sie mittels \fBsyscall\fP(2) auf. .SH BESCHREIBUNG Diese zwei Systemaufrufe sind die rohe Kernelschnittstelle zum Ermitteln und Setzen der Thread\-Capabilities. Die Systemaufrufe sind nicht nur Linux\-spezifisch, auch die Kernel\-API wird sich wahrscheinlich ändern und die Verwendung dieser Systemaufrufe (insbesondere das Format der \fIcap_user_*_t\fP\-Typen) unterliegt in jeder Kernel\-Revision Erweiterungen, aber alte Programme werden weiterhin funktionieren. .PP .\" Die portablen Schnittstellen sind \fBcap_set_proc\fP(3) und \fBcap_get_proc\fP(3); falls möglich, sollten Sie diese Schnittstellen in Anwendungen benutzen, siehe ANMERKUNGEN. .SS "Aktuelle Details" Nachdem Sie gewarnt wurden, hier einige aktuelle Kernel\-Datails. Die Strukturen sind wie folgt definiert: .PP .in +4n .EX .\" commit e338d263a76af78fe8f38a72131188b58fceb591 .\" Added 64 bit capability support .\" commit ca05a99a54db1db5bca72eccb5866d2a86f8517f #define _LINUX_CAPABILITY_VERSION_1 0x19980330 #define _LINUX_CAPABILITY_U32S_1 1 \& /* V2 hinzugefügt in Linux 2.6.25; veraltet */ #define _LINUX_CAPABILITY_VERSION_2 0x20071026 #define _LINUX_CAPABILITY_U32S_2 2 \& /* V3 hinzugefügt in Linux 2.6.26 */ #define _LINUX_CAPABILITY_VERSION_3 0x20080522 #define _LINUX_CAPABILITY_U32S_3 2 \& typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; \& typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; .EE .in .PP Die Felder \fIeffective\fP, \fIpermitted\fP und \fIinheritable\fP sind Bitmasken der in \fIcapabilities\fP(7) definierten Capabilities. Beachten Sie, dass \fBCAP_*\fP\-Werte Bitindizes sind und bitweise verschoben werden müssen, bevor per ODER auf die Bitfelder zugegriffen wird. Um die Strukturen zu definieren, die an den Systemaufruf übergeben werden sollen, müssen Sie die Namen \fIstruct __user_cap_header_struct\fP und \fIstruct __user_cap_data_struct\fP verwenden, da die Typedefs nur Zeiger sind. .PP Kernel vor Linux 2.6.25 bevorzugen 32\-bit\-Capabilities mit Version \fB_LINUX_CAPABILITY_VERSION_1\fP. In Linux 2.6.25 wurden 64\-bit\-Capability\-Sets hinzugefügt, mit Version \fB_LINUX_CAPABILITY_VERSION_2\fP. Allerdings gab es einen API\-Glitch, und Linux 2.6.26 fügte \fB_LINUX_CAPABILITY_VERSION_3\fP hinzu, um das Problem zu beheben. .PP Beachten Sie, dass 64\-Bit\-Capabilities \fIdataz[0]\fP und \fIdataz[1]\fP verwenden, während 32\-Bit\-Capabilities nur \fIdataz[0]\fP verwenden. .PP In Kerneln, die Datei\-Capabilities unterstützen (VFS\-Capabilities\-Unterstützung), verhalten sich diese Systemaufrufe etwas anders. Diese Unterstützung wurde in Linux 2.6.24 hinzugefügt und wurde später in Linux 2.6.33 korrigiert (nicht\-optional). .PP Für \fBcapget\fP()\-Aufrufe können die Capabilities eines Prozesses über die Angabe der Prozesskennung mit dem Feldwert \fIhdrp\->pid\fP ermittelt werden. .PP .\" Für Details der Daten siehe \fBcapabilities\fP(7). .SS "Mit VFS\-Capabilities\-Unterstützung" .\" VFS\-Capabilities setzen ein erweitertes Dateiattribut ein (siehe \fBxattr\fP(7)), um das Anhängen von Capabilities an Dateien zu erlauben. Dieses Privilegienmodell ersetzt die Kernel\-Unterstützung dafür, dass ein Prozess asynchron die Capabilities eines anderen setzt. Das heißt, das auf Kerneln mit VFS\-Capability\-Unterstützung beim Aufruf von \fBcapset\fP() der einzige für \fIhdrp\->pid\fP erlaubte Wert 0, oder äquivalent der von \fBgettid\fP(2) zurückgelieferte Wert, ist. .SS "Ohne VFS\-Capabilities\-Unterstützung" Auf älteren Kerneln, die keine Unterstützung für VFS\-Capabilities bieten, kann \fBcapset\fP(), falls der Aufrufende über die Capability \fBCAP_SETPCAP\fP verfügt, nicht nur zum Ändern der Capabilities des Aufrufenden sondern auch der Capabilities anderer Threads verwandt werden. Dieser Aufruf greift auf die Capabilities des durch das \fIpid\fP\-Feld von \fIhdrp\fP beschriebenen Threads zu, wenn das Feld von Null verschieden ist; wenn \fIpid\fP gleich 0 ist, wird auf die Capabilities des aufrufenden Threads zugegriffen. Falls sich \fIpid\fP auf einen single\-threaded Prozess bezieht, kann \fIpid\fP auch als herkömmliche Prozesskennung angegeben werden. Der Zugriff auf einen Thread eines Multithread\-Prozesses erfordert eine Thread\-Kennung vom Typ, den \fBgettid\fP(2) zurückgibt. Für \fBcapset\fP() kann \fIpid\fP auch \-1 sein, d.h. die Änderung wird für alle Threads außer dem Aufrufenden und \fBinit\fP(1) durchgeführt; ein Wert kleiner als \-1 bewirkt die Änderung für alle Mitglieder der Prozessgruppe, deren Kennung gleich \-\fIpid\fP ist. .SH RÜCKGABEWERT Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird \-1 zurückgegeben und \fIerrno\fP gesetzt, um den Fehler anzuzeigen. .PP Die Aufrufe schlagen mit dem Fehler \fBEINVAL\fP fehl und das Feld \fIversion\fP von \fIhdrp\fP wird auf den vom Kernel bevorzugten Wert von \fB_LINUX_CAPABILITY_VERSION_?\fP gesetzt, wenn ein nicht unterstützter \fIversion\fP\-Wert angegeben wird. Auf diese Weise kann herausgefunden werden, wie die derzeit bevorzugte Capability\-Revision lautet. .SH FEHLER .TP \fBEFAULT\fP Ungültige Speicheradresse. \fIhdrp\fP darf nicht NULL sein. \fIdataz\fP darf NULL nur sein, wenn der Benutzer versucht, das vom Kernel unterstützte bevorzugte Capability\-Versionsformat zu ermitteln. .TP \fBEINVAL\fP Eines der Argumente war ungültig. .TP \fBEPERM\fP Es wurde versucht, eine Capability zu der erlaubten Menge hinzuzufügen oder eine Capability in der effektiven oder vererbbaren Menge zu setzen, die nicht in der erlaubten Menge enthalten ist. .TP \fBEPERM\fP Es wurde versucht, eine Capability zu der vererbbaren Menge hinzuzufügen und entweder: .RS .IP \[bu] 3 diese Capability war nicht in der Begrenzungsmenge des Aufrufenden; oder .IP \[bu] die Capability war nicht in der erlaubten Menge des Aufrufenden und dem Aufrufenden fehlte die Capability \fBCAP_SETPCAP\fP in seiner effektiven Menge. .RE .TP \fBEPERM\fP Der Aufrufende versuchte, \fBcapset\fP() zu verwenden, um die Capabilities eines von ihm selbst verschiedenen Threads zu verändern, hatte dazu aber nicht die benötigten Privilegien. Für Kernel, die VFS\-Capabilities unterstützen, ist dies nie erlaubt. Für Kernel ohne VFS\-Unterstützung wird die Capability \fBCAP_SETPCAP\fP benötigt. (Ein Fehler in Kerneln vor Linux 2.6.11 führte dazu, dass dieser Fehler auch auftreten konnte, falls ein Thread ohne diese Capability versuchte, seine eigenen Capabilities zu ändern, indem er das Feld \fIpid\fP auf einen von numerisch Null verschiedenen Wert (d.h. den von \fBgetpid\fP(2) zurückgelieferten Wert) anstatt 0 wählte.) .TP \fBESRCH\fP Kein solcher Thread. .SH STANDARDS Linux. .SH ANMERKUNGEN Die portable Schnittstelle der Capability\-Abfrage\- und \-Setzfunktionen wird durch die Bibliothek \fIlibcap\fP bereitgestellt, die unter folgender Adresse erhältlich ist: .br .UR http://git.kernel.org/cgit\:/linux\:/kernel\:/git\:/morgan\:\:/libcap.git .UE .SH "SIEHE AUCH" \fBclone\fP(2), \fBgettid\fP(2), \fBcapabilities\fP(7) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Mario Blättermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .