Szerkesztő:Saras

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Saras (vitalap | szerkesztései) 2010. december 18., 15:22-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

1 Capabilityk

1.1 Fogalma:

1.2 Capabilities Lista

Az alábbi felsorolás tartalmazza a Linuxon implementált capabilitiket, és a megengedett műveleteket minden egyes capabilitire:

CAP_AUDIT_CONTROL (Linux 2.6.11)

             A kernel auditing ki, és bekapcsolása; auditing szűrési szabályok megváltoztatása; lekérdezése auditing az  státusz és szűrési  szabályoknak.
      CAP_AUDIT_WRITE (Linux 2.6.11)
             Rekordok írása a kernel ellenőrzési logjába
      CAP_CHOWN
             Tetszés szerint lehet változtatni egy fájl UID-jét és GID-jét
      CAP_DAC_OVERRIDE
              Fájlrendszer-jogok figyelmen kívül hagyása.  (DAC= "discretionary access control".)
      CAP_DAC_READ_SEARCH
             Kereshetünk az egész fájlrendszerben.
      CAP_FOWNER
             * Jogosultságok ellenőrzés kikerülése (ha más a fájl rendszer UID és process UID)
             * kiterjesztett fájlattribútumok beállítása tetszőleges fájlra
             * ACL-ek beállítása tetszőleges fájlra
             * sticky bit figyelmen kívül hagyása fájl törlésnél
             * O_NOATIME tetszőleges fájl műveletnél
      CAP_FSETID

Nem törli a Set-UID és a Set-GID biteket amikor a fájlt módosítják beállítja a Set-GID-et

      CAP_IPC_LOCK

Memória Lockolás

      CAP_IPC_OWNER
             Engedély figyelmen kívül hagyása System V IPC objektumokon végezett műveleteknél
      CAP_KILL
             Jogosultságok figyelmen kívül hagyása szignál küldésnél.
      CAP_LEASE (Linux 2.4)
             fcntl()
      CAP_LINUX_IMMUTABLE
            A FS_APPEND_FL és a FS_IMMUTABLE_FL i-node flagek beállítása.
      CAP_MAC_ADMIN (Linux 2.6.25)
             Felülbírálja  Mandatory Access Control (MAC).  Implementálva a  Smack
             Linux Security Module (LSM)-nek.
      CAP_MAC_OVERRIDE Linux 2.6.25)
             Engedélyezi MAC konfigurációt vagy státusz váltást.  Implementálva a   Smack
             LSM-nek.
      CAP_MKNOD (Linux 2.4)
            Speciális fájlok használata
      CAP_NET_ADMIN
            Hálózati műveletek engedélyezése (routing tábla módosítása, multicast engedélyezése ).
      CAP_NET_BIND_SERVICE
             1024 alatti porthoz bindol
      CAP_NET_BROADCAST
             (Unused) Broadcast socketet csinál, és multicast figyel
      CAP_NET_RAW
             Használja a RAW és a PACKET socketeket.
      CAP_SETGID
             Tetszőlegesen beállítható a process GID és a kiegészítő GID lista
      CAP_SETFCAP (since Linux 2.6.24)
             Fájl capabilitik beállítása
      CAP_SETPCAP
             Ha a fájl capabilityk nem támogatottak: akkor beállít vagy eltávolít bármely capabilitit. A hívó megengedett capabilitit állíthat bármely más processznek( ha a kernel támogatja a capabiliiket akkor ezt tiltja)
             Ha a fájl capabilitik támogatottak akkor bármely capability hozzáadható a hívó folyamathoz a hívó beállíthatja a thread's bounding set-et inheritable set-re, vagy eldobhatja a capabilitiket a bounding set
      CAP_SETUID
             Tetszőleges process UID manipuláció
      CAP_SYS_ADMIN
             * Az alábbi műveletekre lesz jogunk:
               quotactl(), mount(), umount(), swapon(), swapoff(),
               setdomainname();
             * elvégezhető IPC_SET és az IPC_RMID művelet bármely System V IPC
               objektumon;
             * Műveletek a megbízható és a biztonsági kiterjesztett attribútumokon
             *  lookup_dcookie();
             * Használja ioprio_set()-nél az OPRIO_CLASS_RT és (Linux 2.6.25) IOPRIO_CLASS_IDLE I / O ütemezés osztályokat
             * Haladja meg a /proc/sys/fs/file-max, a rendszer-szintű korlátozása száma a megnyitott fájlokat a rendszer hívásoknál
      CAP_SYS_BOOT
              reboot() és kexec_load() használata.
      CAP_SYS_CHROOT
      CAP_SYS_MODULE
             Kernel modulok ki- és betöltése
      CAP_SYS_NICE
             A nice érték beállítása
      CAP_SYS_PACCT
             Use acct(2).
      CAP_SYS_PTRACE
             Nyomon követés tetszőleges eljárások segíségével
      CAP_SYS_RAWIO
             Perform I/O port operations (iopl(2) and ioperm(2)); access
             /proc/kcore.
      CAP_SYS_RESOURCE
             * fenntartott hely  használata ext2-n
             * octl() hívással kontrollja az ext3 journalinget;
             * felül írja a diszk kvóta limiteket


      CAP_SYS_TIME
             Óra beállítása
      CAP_SYS_TTY_CONFIG
             használja a vhangup().

--Implementációk a most és régen A capabilitik teljes megvalósítására szükség van:

      1. minden privilegizált műveletet a kernelnek ellenőriznie kell, hogy a szál a

a szükséges capabilitit a effektívre megállapított.

      2. A kernelnek biztosítania kell rendszer hívásokat, amelyek lehetővé teszik egy szál capability beállításainak megváltoztatását
      3. A fájl rendszernek támogatni kell a futtatható fájlokhoz rendelhető capabilitket, annak érdekében hogy a processek kihasználhassák a capabilitiket ha futnak.
      A 2.6.24-es kernel verzió előtt csak az első kettő teljesült, a2.6.24-től minden meg van hogy hatékonyan használhassuk a capabilitket


--Capabilityk átalakulása az execve() alatt A execve( ) hívásnál a kernel kiszámolja a használandó capabilitket amiket a process használni fog az alábbi algoritmussal:

          P'(permitted) = (P(inheritable) & F(inheritable)) |
                          (F(permitted) & cap_bset)
          P'(effective) = F(effective) ? P'(permitted) : 0
          P'(inheritable) = P(inheritable)    [nem változott]
      ahol:
          P         jelöli az értéket amit egy szál capability beállított az 
                    execve() előtt
          P'        azok a capabilitik amikre az execve(2) után volt szükség
          F         a fájl capability beállítások
          cap_bset a capability bounding set értéke.

--Capabilityk és a programok rootként végre hajtása

      Capabilitit használóprogram  ootként fusson az execve ()-et használva:
      1. A  set-user-ID-root program futtatásával, vagy a valós UID jét a processnek  0-ra állítjuk akkor a fájl számára örökölhető és engedélyezett lesz  minden jogosultság ( minden capability engedélyezett
      2. Ha a set-user-ID-root programmal hajtjuk végre akkora fájl effektív bitje  definició szerint egy(engedélyezett).


 --Capabilityk hatása a User ID-re

Megőrzi a hagyományos szemantikát átjárhatóan a 0 és a "nem nulla " user ID-k között. A kernelen az alábbi változtatásokat eszközölték a szálak capabilitiének beállításához: a szál valós, effektív mentett állapotú, és a van fájl rendszer UID: 1. Ha egy vagy több valós, effektív vagy mentett user id volt előzőleg 0 és ennek hatására a UID megváltozik mindegyik hatására akkor ezek az "ID-k nem null értékűek", amikor minden capability mentes a megengedéstől és az effektív határozza meg.

2. Ha az effektív user ID megváltozott 0-ról "nem nullára", akkor minden capability törlődik az effektív beállításból.

3.ha az effektív user ID megváltozik "nem nulláról" 0-ra akkor a megengedő beállítások be másolódnak az effektív beállításokba 4. Ha a fájlrendszer user ID-je megváltozott 0-ról nem nullára akkor a következő capabilitik törölve lesznek az effektív beállításból:CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH, CAP_FOWNER, CAP_FSETID,CAP_LINUX_IMMUTABLE (Linux 2.2.30), CAP_MAC_OVERRIDE, and CAP_MKNOD(Linux 2.2.30) 5. Ha a fájlrendszer UID-je "nem nulláról" 0-ra változik akkor a fent felsorolt capabilitk mind engedélyezettek lesznek az effektív beállításban


 --Programból beállítható capability sets

Egy thread helyre áll és megváltozik a capability beállítások a capget()-et és a capset()-et rendszer hívást használják. Mégis a cap_get_proc () használata és a cap-set_proc() is benne van a libcap csomagban, erre a célra preferálva. A következő szabályok irányítják a változásokat a szál capability beállításokban: 1. ha a hívónak nincs CAP_SETPCAP capabilitije az új örökölhető beállításnak rendelkeznie kell az al-beállításával a jelenlegi örökölhető és megengedett beállításoknak 2. (kernel 2.6.25) Az új örökölhető beállítás kötlelezően az részhalmaza az örökölhető és a bounding set-nek 3. Az új megengedett beállítás az al-beállítása a létező megengedett beállításnak 4. Az új effektív beállítás az al-beállítása az új megengedett beállításnak.

--A "securebits" flagek:"Létrehozni egy csak capabilitis környezetet"

2.6.26-os kernellel kezdődően és a kernellel  amiben a fájl capabilitik engedélyezve vannak, a linux implementál a pre-thread(elő-szál??) securebit flag beállításokat. Ezek az alábbiak:
      SECBIT_KEEP_CAPS

Engedélyezi a szálnak egy vagy több 0 UID-t megörizen.Eza flag minden execve(9-nél törlődik

      SECBIT_NO_SETUID_FIXUP

A flag hatására meg áll a kernel capability beállító képessége

      SECBIT_NOROOT

Ha bit aktív akkor a kernel nem tudja garantálni a capabilitiket amikor a set-user-ID-root program fut, vagy amikor a process effektív vagy valós UID-je 0

Személyes eszközök