Fájlok/könyvtárak biztonságossá tétele ACL-ek (Hozzáférés-vezérlési listák) használatával Linuxban
Rendszeradminisztrátorként elsődleges feladatunk az adatok védelme és védelme lesz a jogosulatlan hozzáféréssel szemben. Mindannyian tisztában vagyunk azokkal az engedélyekkel, amelyeket néhány hasznos Linux-parancs, például chmod, chown, chgrp stb. használatával állítunk be. Ezek az alapértelmezett engedélyek azonban a készletek bizonyos korlátozásokkal rendelkeznek, és előfordulhat, hogy nem az igényeinknek megfelelően működnek. Például nem állíthatunk be különböző engedélykészleteket különböző felhasználók számára ugyanabban a könyvtárban vagy fájlban. Így a Hozzáférés-vezérlési listák (ACL-ek) megvalósult.
Tegyük fel, hogy három felhasználója van: „tecmint1”, „tecmint2” és „tecmint3”. Mindegyik közös csoporthoz mondja azt, hogy „acl”. A 'tecmint1' felhasználó azt szeretné, hogy csak a 'tecmint2' felhasználó olvashassa és férjen hozzá a ' tulajdonában lévő fájlokhoz tecmint1' és senki másnak nem szabad hozzáférnie ehhez.
Az ACL-ek (Hozzáférés-vezérlési listák) lehetővé teszik számunkra, hogy ugyanezt a trükköt megtegyük. Ezek az ACL-ek lehetővé teszik számunkra, hogy engedélyeket adjunk egy felhasználónak, csoportnak és bármely olyan felhasználócsoportnak, amely nem szerepel egy felhasználó csoportlistáján.
Megjegyzés: A Redhat termékdokumentációja szerint ACL támogatást biztosít az ext3 fájlrendszerekhez és az NFS exportált fájlrendszerekhez.
Az ACL támogatás ellenőrzése Linux rendszerekben
Mielőtt továbblépne, támogatnia kell az ACL-eket a jelenlegi kerneleken és a csatlakoztatott fájlrendszereken.
1. Ellenőrizze az ACL-támogatást a Kernelben
Futtassa a következő parancsot a fájlrendszer ACL-támogatásának és a POSIX_ACL=Y beállításának ellenőrzéséhez (ha az Y helyett N van, akkor ez a rendszermagot jelenti nem támogatja az ACL-t, és újra kell fordítani).
[root@linux ~]# grep -i acl /boot/config*
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y
2. Ellenőrizze a szükséges csomagokat
Mielőtt elkezdené játszani az ACL-ekkel, győződjön meg arról, hogy telepítette a szükséges csomagokat. Az alábbiakban felsoroljuk azokat a szükséges csomagokat, amelyeket a yum vagy az apt-get használatával kell telepíteni.
[root@linux ~]# yum install nfs4-acl-tools acl libacl [on RedHat based systems]
[tecmint@linux ~]$ sudo apt-get install nfs4-acl-tools acl [on Debian based systems]
3. Ellenőrizze a csatolt fájlrendszerben az ACL-ek támogatását
Most ellenőrizze a csatlakoztatott fájlrendszert, hogy fel van-e csatlakoztatva ACL opcióval vagy sem. A 'mount' paranccsal ellenőrizhetjük ugyanezt az alábbiak szerint.
[root@linux ~]# mount | grep -i root
/dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)
De a mi esetünkben alapértelmezés szerint nem mutatja az acl-t. Tehát ezután lehetőségünk van újra felcsatolni a felcsatolt partíciót az acl opció használatával. De mielőtt továbblépnénk, van egy másik lehetőségünk is, hogy megbizonyosodjunk arról, hogy a partíció fel van-e szerelve acl opcióval vagy sem, mert a legutóbbi rendszereknél előfordulhat, hogy az alapértelmezett beillesztési opcióval van integrálva.
[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep acl
Default mount options: user_xattr acl
A fenti kimenetben láthatja, hogy az alapértelmezett csatolási opció már támogatja az acl-t. Egy másik lehetőség a partíció újracsatlakoztatása az alábbiak szerint.
[root@linux ~]# mount -o remount,acl /
Ezután adja hozzá az alábbi bejegyzést az „/etc/fstab” fájlhoz, hogy az állandó legyen.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
Ismét csatlakoztassa újra a partíciót.
[root@linux ~]# mount -o remount /
4. NFS-kiszolgálóhoz
Az NFS-kiszolgálón, ha az NSF-kiszolgáló által exportált fájlrendszer támogatja az ACL-t, és az ACL-eket az NFS-kliensek tudják olvasni, akkor az ACL-eket az ügyfélrendszer használja.
Az ACL-ek letiltásához az NFS-megosztáson, hozzá kell adnia a „no_acl” opciót az „/etc/exportfs” fájlhoz az NFS-kiszolgálón. Az NSF-kliens oldalon történő újbóli letiltásához használja a „no_acl” opciót a csatlakoztatási idő alatt.
Az ACL támogatás megvalósítása Linux rendszerekben
Kétféle ACL létezik:
- Hozzáférés ACL-ekhez: A hozzáférési ACL-ek bármely fájlhoz vagy könyvtárhoz használhatók engedélyek megadására.
- Alapértelmezett ACL-ek: Az alapértelmezett ACL-ek csak a hozzáférés-vezérlési lista megadására/beállítására szolgálnak egy adott könyvtárban.
Az Access ACL és az alapértelmezett ACL közötti különbség:
- Az alapértelmezett ACL csak címtárszinten használható.
- A könyvtárban létrehozott minden alkönyvtár vagy fájl az ACL-eket a szülőkönyvtárától örökli. Másrészt a fájl az alapértelmezett ACL-eket örökli hozzáférési ACL-ként.
- Az alapértelmezett ACL-ek beállításához a „–d” billentyűt használjuk, az alapértelmezett ACL-ek pedig nem kötelezőek.
Az alapértelmezett ACL-ek beállítása előtt
Egy adott fájl vagy könyvtár alapértelmezett hozzáférési listája meghatározásához használja a „getfacl” parancsot. Az alábbi példában a getfacl a „Zene” mappa alapértelmezett hozzáférési listáinak lekérésére szolgál.
[root@linux ~]# getfacl Music/
file: Music/
owner: root
group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::rw-
Az alapértelmezett ACL-ek beállítása után
Egy adott fájl vagy könyvtár alapértelmezett hozzáférési listája beállításához használja a „setfacl” parancsot. Az alábbi példában a setfacl parancs új ACL-eket állít be (olvasás és végrehajtás) egy „Zene” mappában..
[root@linux ~]# setfacl -m d:o:rx Music/
[root@linux ~]# getfacl Music/
file: Music/
owner: root
group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x
Új ACL-ek beállítása
A „setfacl” paranccsal bármely fájl vagy könyvtár beállításához vagy módosításához használja. Például, hogy olvasási és írási engedélyeket adjon a „tecmint1” felhasználónak.
setfacl -m u:tecmint1:rw /tecmint1/example
Az ACL-ek megtekintése
Használja a 'getfacl' parancsot bármely fájl vagy könyvtár ACL-jének megtekintéséhez. Például a „/tecmint1/example” ACL megtekintéséhez használja az alábbi parancsot.
getfacl /tecmint1/example
file: tecmint1/example/
owner: tecmint1
group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---
Az ACL-ek eltávolítása
Az ACL bármely fájlból/könyvtárból való eltávolításához az x és a b opciókat használjuk az alábbiak szerint.
setfacl -x ACL file/directory # remove only specified ACL from file/directory.
setfacl -b file/directory #removing all ACL from file/direcoty
Valósítsuk meg az ACL-eket a következő forgatókönyveken.
Két felhasználó (tecmint1 és tecmint2), mindkettőnek közös másodlagos csoportja az „acl”. Létrehozunk egy könyvtárat a 'tecmint1 tulajdonában, és az olvasási és végrehajtási engedélyt biztosítjuk a 'tecmint2< felhasználó számára.'.
1. lépés: Hozzon létre két felhasználót, és távolítsa el mindkettőből a jelszavát
[root@linux ~]# for user in tecmint1 tecmint2
> do
> useradd $user
> passwd -d $user
> done
Removing password for user tecmint1.
passwd: Success
Removing password for user tecmint2.
passwd: Success
2. lépés: Hozzon létre egy csoportot és felhasználókat a másodlagos csoportba.
[root@linux ~]# groupadd acl
[root@linux ~]# usermod -G acl tecmint1
[root@linux ~]# usermod -G acl tecmint2
3. lépés: Hozzon létre egy /tecmint könyvtárat, és módosítsa a tulajdonost a tecmint1 névre.
[root@linux ~]# mkdir /tecmint1
[root@linux ~]# chown tecmint1 /tecmint1/
[root@linux ~]# ls -ld /tecmint1/
drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/
[root@linux ~]# getfacl /tecmint1
getfacl: Removing leading '/' from absolute path names
file: tecmint1
owner: tecmint1
group: root
user::rwx
group::r-x
other::r-x
4. lépés: Jelentkezzen be a tecmint1 segítségével, és hozzon létre egy könyvtárat a /tecmint mappában.
[tecmint@linux ~]$ su - tecmint1
Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4
[tecmint1@linux ~]$ cd /tecmint1/
[tecmint1@linux tecmint1]$ mkdir example
[tecmint1@linux tecmint1]$ ll
total 4
drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example
[tecmint1@linux tecmint1]$ whoami
tecmint1
5. lépés: Most állítsa be az ACL-t a „setfacl” használatával, hogy a „tecmint1” rendelkezzen minden rwx engedéllyel, A 'tecmint2' csak olvasási jogosultsággal rendelkezik az 'example' mappában, a többi pedig nem.
setfacl -m u:tecmint1:rwx example/
setfacl -m u:tecmint2:r-- example/
setfacl -m other:--- example/
getfacl example/
file: example
owner: tecmint1
group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::r-x
mask::rwx
other::---
6. lépés: Most jelentkezzen be egy másik felhasználóval, például a „tecmint2”-vel egy másik terminálon, és módosítsa a könyvtárat a következőre: „/tecmint1”. Most próbálja meg megtekinteni a tartalmat az 'ls' paranccsal, majd próbálja meg megváltoztatni a könyvtárat, és meglátja a különbséget az alábbiak szerint.
[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5
[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ ls -lR example/
example/:
total 0
[tecmint2@linux tecmint1]$ cd example/
-bash: cd: example/: Permission denied
[tecmint2@linux tecmint1]$ getfacl example/
file: example
owner: tecmint1
group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---
7. lépés: Most adjon 'execute' engedélyt a 'tecmint2' számára a 'example' mappában, majd használja a 'cd' parancsot a hatás megtekintéséhez. Mostantól a 'tecmint2' jogosult a könyvtár megtekintésére és módosítására, de nincs engedélye semmi írására.
[tecmint1@linux tecmint1]$ setfacl -m u:tecmint2:r-x example/
[tecmint1@linux tecmint1]$ getfacl example/
file: example
owner: tecmint1
group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r-x
group::rwx
mask::rwx
other::---
[tecmint@linux ~]$ su - tecmint2
Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5
[tecmint2@linux ~]$ cd /tecmint1/
[tecmint2@linux tecmint1]$ cd example/
[tecmint2@linux example]$ getfacl .
[tecmint2@linux example]$ mkdir test
mkdir: cannot create directory ‘test’: Permission denied
[tecmint2@linux example]$ touch test
touch: cannot touch ‘test’: Permission denied
Megjegyzés: Az ACL megvalósítása után egy extra „+” jelet fog látni az „ls –l” kimenethez, az alábbiak szerint.
[root@linux tecmint1]# ll
total 4
drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
Referencia hivatkozások
Az ACL dokumentációja