Weboldal keresés

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:

  1. 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.
  2. 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:

  1. Az alapértelmezett ACL csak címtárszinten használható.
  2. 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.
  3. 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