Home / LinuxUser / 2009 / 06 / Grenzen setzen

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(179 Punkte bei 5 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)
Mageia 2 ist fertig
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.
AA_stacheldraht_sxc_1098251.jpg

© sxc.hu

Grenzen setzen

Rechte über File-Capabilities einschränken

20.05.2009 Zu viel Root tut nicht gut. Aus diesem Grund führten die Kernel-Entwickler mit Version 2.6.24 die Posix-File-Capabilities ein. Dieser Artikel erklärt, wozu diese gut sind.

Ich bin Root, ich darf das! So lautet einer der Lieblingssprüche von Linux-Nutzern auf T-Shirts, Kaffeetassen und anderen Fanartikeln. In der Tat verfügt Linux über ein relativ einfaches Rechtemanagement: Es gibt Root, den Benutzer und "die Anderen" sowie Rechte zum Lesen, Schreiben und Ausführen. Zugriffe kontrolliert das System über eine relativ einfache Matrix dieser Berechtigungen, und root darf immer alles.

Das Setuid-Bit

Es gibt allerdings Programme, die weitergehende Rechte benötigen, als sie einem durchschnittlichen Benutzer zustehen. Dazu zählen etwa der passwd-Befehl, der die Passwörter in der Datei /etc/shadow (oder /etc/passwd) ändert, oder der ping-Befehl, mit dem man die Netzwerkkarte eines anderen Rechners anspricht. Traditionellerweise verleiht der Systemadministrator solchen Tools über chmod u+s das Setuid-Bit. Das führt dazu, dass das Programm mit den Rechten des Benutzers arbeitet, dem die Datei gehört – normalerweise arbeiten Programme mit den Rechten des Ausführenden. Manche Programme kommen von Haus aus mit gesetztem S-Bit, je nach Distribution.

Die Wirkungsweise des S-Bits lässt sich an einem kleinen Beispiel leicht nachvollziehen. Geben Sie dazu in einem Terminal den Befehl su - Benutzername ein:

marcel@kim:~ $ su - marcel
Passwort:

Rufen Sie nun in einem zweiten Terminalfenster den Befehl ps -au | grep su auf, so sehen Sie, dass der su-Befehl vom Benutzer root ausgeführt wurde. Während es beim su-Befehl noch relativ offensichtlich erscheint, warum er spezielle oder gar Root-Rechte benötigt, sieht es zum Beispiel bei ping ganz anders aus. Eigentlich würde es genügen, dem Ping-Befehl den Zugriff auf die entsprechenden Netzwerk-Socket zu gewähren – das ist aber mit traditionellen Unix-Rechten nicht möglich. Abhilfe schaffen die Posix-File-Capabilities.

Rechte minimieren

Die Posix-File-Capabilities bilden einen Teil der allgemeinen Posix-Capabilities [1]. Sie teilen die möglichen Berechtigungen in verschiedene Rechtebereiche (Capabilities) auf, die zusammen die Rechte des Administrators Root ergeben. Zurzeit gibt es 33 solcher Rechtebereiche, die Tabelle "Posix-Capabilities" gibt einen kurzen Überblick. Während die grundlegenden Capabilities bereits seit Kernel 2.2 Bestandteil von Linux sind, beherrscht Linux die File-Capabilities erst seit Version 2.6.24. Detaillierte Informationen zu den einzelnen Fähigkeiten finden sich in der Datei /usr/include/linux/capability.h

Auch bei den Posix-Access-Control-Listen (ACLs), die eine feingliedrige Rechteverteilung auf Verzeichnisse und Dateien ermöglichen, handelt es sich im weiteren Sinn um Posix-Capabilities; sie werden als erweiterte Attribute im Dateisystem abgelegt. Für den Einsatz von Posix-ACLs und File-Capabilities muss das Dateisystem deshalb mit der Option user_xattr eingehängt sein.

Posix-Capabilities

Nummer

Name

Erklärung

0 CAP_CHOWN Eigentümer von Files beliebig setzen
1 CAP_DAC_OVERRIDE Sich über Dateizugriffsrechte hinwegsetzen (DAC, Discretionary Access Control), nur das Immutable-Flag ist davon nicht betroffen
2 CAP_DAC_READ_SEARCH In allen Files und Verzeichnissen lesen
3 CAP_FOWNER Auf alle Files die Funktionen ausüben, die üblicherweise nur deren Eigentümern gestattet sind (etwa chmod() und utime())
4 CAP_FSETID Set-UID-Flag auch für fremde Files setzen
5 CAP_KILL Beliebigen Prozessen Signale senden
6 CAP_SETGID Beliebige Gruppen-ID annehmen
7 CAP_SETUID Beliebige User-ID annehmen
8 CAP_SETPCAP Eigene Capabilities an fremde Prozesse übertragen oder dort entfernen
9 CAP_LINUX_IMMUTABLE Immutable- und Append-Only-Attribute ändern
10 CAP_NET_BIND_SERVICE Privilegierte Ports verwenden
11 CAP_NET_BROADCAST Broadcast-Nachrichten senden und empfangen
12 CAP_NET_ADMIN Sammlung vieler Netzwerk-Konfigurationen (Interface, Firewall, Routing, Sockets, Promiscuous Mode setzen u.a.m..)
13 CAP_NET_RAW Sockets vom Typ Raw (IPv4-Pakete) und Packet (Ethernet-Frames) verwenden
14 CAP_IPC_LOCK Shared-Memory-Segmente sperren
15 CAP_IPC_OWNER Nachrichten per IPC (Interprozesskommunikation) an beliebige Prozesse senden
16 CAP_SYS_MODULE Kernel-Module laden und entladen, den Kernel beliebig ändern sowie Capabilities-Bounding-Sets ändern
17 CAP_SYS_RAWIO Verwenden von ioperm() und iopl() sowie beliebige USB-Kommunikation
18 CAP_SYS_CHROOT chroot()-Kommando absetzen
19 CAP_SYS_PTRACE Beliebige Prozesse mit ptrace() überwachen und kontrollieren
20 CAP_SYS_PACCT Prozess-Accounting konfigurieren
21 CAP_SYS_ADMIN Viele administrative Aufgaben, etwa Domain- und Hostnamen ändern, Dateisysteme ein- und aushängen, Swapping ein/<0x200B>ausschalten, Semaphore löschen uvm.
22 CAP_SYS_BOOT Das System per reboot() neu starten
23 CAP_SYS_NICE Die Priorität per nice() hochsetzen, Realtime-Scheduling verwenden und die CPU-Affinität fremder Prozesse ändern
24 CAP_SYS_RESOURCE Ressourcenlimits überschreiten, etwa Quota, reservierter Filesystemraum, Größenbeschränkungen bei IPC-Nachrichten etc..
25 CAP_SYS_TIME Die Systemzeit stellen
26 CAP_SYS_TTY_CONFIG TTY-Geräte konfigurieren
27 CAP_MKNOD Alle Funktionen von mknod() beim Anlegen von Gerätedateien nutzen
28 CAP_LEASE Dateien leasen (siehe fcntl()-Leases)
29 CAP_AUDIT_WRITE Meldungen an das Audit-Subsystem senden
30 CAP_AUDIT_CONTROL Audit-Subsystem per auditctl() konfigurieren
31 CAP_SETFCAP Posix-Capabilities im Extended Attribute capability speichern, also File Posix-Capabilities setzen
32 CAP_MAC_OVERRIDE Erlaubt es, zwingende Zugriffskontrollen (Mandatory Access Control, MAC) des Linux-Sicherheitsmoduls (LSM) zu überschreiben
33 CAP_MAC_ADMIN Erlaubt administrativen Zugriff auf die zwingenden Zugriffskontrollen

Wie erwähnt verfügt ping unter den meisten Distributionen von Haus aus über das Setuid-Bit. Um einem normalen Nutzer den Ping-Befehl zu ermöglichen, könnte man entweder den Zugriff auf die Netzwerk-Geräte über die typischen Unix-Dateirechte freigeben oder über die File-Capabilities genau das Feature freischalten, das der Ping-Befehl benötigt – in diesem Fall CAP_NET_RAW. Danach lässt sich das Setuid-Bit ausschalten.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

705 Hits
Wertung: 97 Punkte (6 Stimmen)

Schlecht Gut

Infos zum Autor

Marcel Hilzinger

Marcel Hilzinger

Marcel Hilzinger arbeitet als Redakteur für die Zeitschriften LinuxUser und EasyLinux. Am liebsten schreibt er Artikel zu netten Gadgets oder Multimedia-Software. In seiner Freizeit spielt er gerne Kicker.

Zum Blog von Marcel Hilzinger →


Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...