Suojaa tiedostot/hakemistot Linuxin ACL-luetteloilla (kulunvalvontaluettelot)


Järjestelmänvalvojana ensisijaisena tavoitteena on suojata ja suojata tietoja luvattomalta käytöltä. Olemme kaikki tietoisia oikeuksista, jotka asetimme käyttämällä hyödyllisiä Linux-komentoja, kuten chmod, chown, chgrp ... jne. Näillä oletusoikeussarjoilla on kuitenkin joitain rajoituksia, eivätkä ne välttämättä toimi tarpeidemme mukaisesti. Emme esimerkiksi voi asettaa eri käyttöoikeusjoukkoja eri käyttäjille samaan hakemistoon tai tiedostoon. Siten kulunvalvontaluettelot (ACL) otettiin käyttöön.

Oletetaan, että sinulla on kolme käyttäjää, tecmint1, tecmint2 ja tecmint3. Jokaisella, jolla on yhteinen ryhmä, sanotaan "acl". Käyttäjä 'tecmint1' haluaa, että vain 'tecmint2' -käyttäjä voi lukea ja käyttää 'tecmint1': n omistamia tiedostoja, eikä kenellekään muulle pitäisi olla pääsyä siihen.

ACL: t (pääsynhallintaluettelot) antavat meille mahdollisuuden tehdä sama temppu. Näiden ACL-luetteloiden avulla voimme myöntää käyttöoikeuksia käyttäjälle, ryhmälle ja kaikille käyttäjien ryhmille, jotka eivät ole käyttäjän ryhmäluettelossa.

Huomautus: Redhat-tuotedokumentaation mukaisesti se tarjoaa ACL-tuen ext3-tiedostojärjestelmälle ja viedyille NFS-tiedostojärjestelmille.

Kuinka tarkistaa ACL-tuki Linux-järjestelmissä

Ennen kuin siirryt eteenpäin, sinulla on oltava tuki nykyisten ytimen ja asennettujen tiedostojärjestelmien ACL-luetteloille.

Suorita seuraava komento tarkistaaksesi ACL-tuki tiedostojärjestelmälle ja POSIX_ACL = Y-vaihtoehdolle (jos Y: n sijaan on N, se tarkoittaa, että ydin ei tue ACL: ää ja se on käännettävä uudelleen).

 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

Ennen kuin aloitat pelaamisen ACL: llä, varmista, että olet asentanut paketit. Alla on vaaditut paketit, jotka on asennettava yumilla tai apt-getillä.

 yum install nfs4-acl-tools acl libacl		[on RedHat based systems]
 mount  | grep -i root

/dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)

Mutta meidän tapauksessamme se ei näytä acl oletuksena. Joten seuraavaksi meillä on mahdollisuus asentaa asennettu osio uudelleen käyttämällä acl-vaihtoehtoa. Mutta ennen eteenpäin siirtymistä meillä on toinen vaihtoehto varmistaa, että osio on asennettu acl-vaihtoehdolla vai ei, koska viimeaikaisessa järjestelmässä se voi olla integroitu oletusasennusvaihtoehtoon.

 tune2fs -l /dev/mapper/fedora-root | grep acl

Default mount options:    user_xattr acl

Yllä olevasta lähdöstä näet, että oletusasennusvaihtoehdolla on jo tuki acl: lle. Toinen vaihtoehto on asentaa osio uudelleen alla olevan kuvan mukaisesti.

 mount -o remount,acl /

Lisää seuraavaksi seuraava merkintä tiedostoon/etc/fstab, jotta se pysyvä.

/dev/mapper/fedora-root /	ext4    defaults,acl 1 1

Asenna osio uudelleen.

 mount -o remount  /

NFS-palvelimella, jos NSF-palvelimen viemä tiedostojärjestelmä tukee ACL: ää ja NFS-asiakkaat voivat lukea ACL: itä, asiakasjärjestelmä käyttää ACL: itä.

Jos haluat poistaa ACL: t käytöstä NFS-jaossa, sinun on lisättävä vaihtoehto “no_acl” NFS-palvelimen ”/ etc/exportfs” -tiedostoon. Jos haluat poistaa sen käytöstä NSF-asiakaspuolella, käytä "no_acl" -vaihtoehtoa asennuksen aikana.

Kuinka toteuttaa ACL-tuki Linux-järjestelmissä

ACL-luetteloita on kahdenlaisia:

  1. Pääsy ACL: iin: Pääsy ACL: itä käytetään myöntämään käyttöoikeudet mihin tahansa tiedostoon tai hakemistoon.
  2. ACL-oletusarvot: Oletus-ACL: itä käytetään käyttöoikeusluettelon myöntämiseen/asettamiseen vain tietyssä hakemistossa.

Ero Access ACL: n ja oletus ACL: n välillä:

  1. ACL-oletusasetusta voidaan käyttää vain hakemistotasolla.
  2. Jokainen siihen hakemistoon luotu alihakemisto tai tiedosto perii ACL: t päähakemistostaan. Toisaalta tiedosto perii oletusarvoiset ACL: t käyttöoikeusluetteloiksi.
  3. Käytämme "-d": tä oletusarvoisten ACL-luetteloiden asettamiseen ja oletus-ACL: t ovat vaihtoehtoisia.

Voit määrittää tietyn tiedoston tai hakemiston oletusarvoiset ACL-luettelot käyttämällä komentoa getfacl. Alla olevassa esimerkissä getfacl-tiedostoa käytetään oletusarvoisten ACL-luetteloiden hakemiseen kansiolle "Music".

 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-

Määritä tietylle tiedostolle tai hakemistolle oletusarvoiset käyttöoikeusluettelot käyttämällä komentoa setfacl. Alla olevassa esimerkissä setfacl-komento asettaa uudet ACL-luettelot (lue ja suorita) kansioon ”Music”.

 setfacl -m d:o:rx Music/
 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

Käytä 'setfacl' -komentoa minkä tahansa tiedoston tai hakemiston asettamiseen tai muokkaamiseen. Esimerkiksi antaa luku- ja kirjoitusoikeudet käyttäjälle tecmint1.

# setfacl -m u:tecmint1:rw /tecmint1/example

Käytä getfacl-komentoa ACL: n tarkastelemiseen missä tahansa tiedostossa tai hakemistossa. Käytä esimerkiksi alla olevaa komentoa, jos haluat tarkastella ACL-tiedostoa ‘/ tecmint1/example’ -kohdassa.

# getfacl /tecmint1/example

# file: tecmint1/example/
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

ACL: n poistamiseksi mistä tahansa tiedostosta/hakemistosta käytämme x- ja b-vaihtoehtoja alla olevan kuvan mukaisesti.

# setfacl -x ACL file/directory  	# remove only specified ACL from file/directory.

# setfacl -b  file/directory   		#removing all ACL from file/direcoty

Toteutetaan ACL: t seuraavissa tilanteissa.

Kaksi käyttäjää (tecmint1 ja tecmint2), molemmilla on yhteinen toissijainen ryhmä nimeltä acl. Luomme yhden hakemiston, jonka omistaa 'tecmint1', ja annamme kyseisen hakemiston luku- ja suoritusoikeuden käyttäjälle 'tecmint2'.

Vaihe 1: Luo kaksi käyttäjää ja poista salasana molemmista

 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

Vaihe 2: Luo ryhmä ja käyttäjät toissijaiseen ryhmään.

 groupadd acl
 usermod -G acl tecmint1
 usermod -G acl tecmint2

Vaihe 3: Luo hakemisto/tecmint ja vaihda omistajaksi tecmint1.

 mkdir /tecmint1
 chown tecmint1 /tecmint1/
 ls -ld /tecmint1/

drwxr-xr-x 2 tecmint1 root 4096 Apr 17 14:46 /tecmint1/
 getfacl /tecmint1

getfacl: Removing leading '/' from absolute path names
# file: tecmint1
# owner: tecmint1
# group: root
user::rwx
group::r-x
other::r-x

Vaihe 4: Kirjaudu sisään tecmint1: llä ja luo hakemisto/tecmint-kansioon.

[[email  ~]$ su - tecmint1

Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ mkdir example
[[email  tecmint1]$ ll

total 4
drwxrwxr-x 2 tecmint1 tecmint1 4096 Apr 17 14:50 example
[[email  tecmint1]$ whoami 
tecmint1

Vaihe 5: Aseta nyt ACL käyttämällä 'setfacl', niin että 'tecmint1' on kaikki rwx-oikeudet, 'tecmint2': lla on vain lukuoikeus esimerkki-kansiossa ja muilla ei ole käyttöoikeuksia.

$ 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::---

Vaihe 6: Kirjaudu nyt sisään toisen käyttäjän eli 'tecmint2' kanssa toisessa päätelaitteessa ja vaihda hakemistoksi '/ tecmint1'. Yritä nyt tarkastella sisältöä ‘ls’ -komennolla ja yritä sitten muuttaa hakemistoa ja nähdä ero alla olevan mukaisesti.

[[email  ~]$ su - tecmint2

Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ ls -lR example/
example/:
total 0
[[email  tecmint1]$ cd example/

-bash: cd: example/: Permission denied
[[email  tecmint1]$ getfacl example/

# file: example
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r--
group::rwx
mask::rwx
other::---

Vaihe 7: Anna nyt 'suorita' lupa 'tecmint2' esimerkki-kansioon ja käytä sitten 'cd' -komentoa nähdäksesi vaikutuksen. Nyt tecmint2: lla on käyttöoikeudet hakemiston tarkasteluun ja muuttamiseen, mutta hänellä ei ole oikeuksia kirjoittaa mitään.

[[email  tecmint1]$ setfacl -m u:tecmint2:r-x example/
[[email  tecmint1]$ getfacl example/

# file: example
# owner: tecmint1
# group: tecmint1
user::rwx
user:tecmint1:rwx
user:tecmint2:r-x
group::rwx
mask::rwx
other::---
[[email  ~]$ su - tecmint2

Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5
[[email  ~]$ cd /tecmint1/
[[email  tecmint1]$ cd example/
[[email  example]$ getfacl .
[[email  example]$ mkdir test

mkdir: cannot create directory ‘test’: Permission denied
[[email  example]$ touch test

touch: cannot touch ‘test’: Permission denied

Huomaa: Kun olet ottanut ACL: n käyttöön, näet ylimääräisen '+' -merkin 'ls –l' -ulostulolle kuten alla.

 ll

total 4
drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example

Viitelinkit

ACL: n dokumentaatio