Suojaa tiedostot/hakemistot ACL:illä (Access Control Lists) Linuxissa


Järjestelmänvalvojana meidän ensisijaisena tavoitteenamme on suojata ja suojata tiedot luvattomalta käytöltä. Olemme kaikki tietoisia käyttöoikeuksista, jotka asetamme käyttämällä hyödyllisiä Linux-komentoja, kuten chmod, chown, chgrp… jne. Nämä oletusoikeudet ovat kuitenkin sarjoilla on joitain rajoituksia, eivätkä ne välttämättä toimi tarpeidemme mukaisesti. Emme voi esimerkiksi määrittää eri käyttöoikeusjoukkoja eri käyttäjille samassa hakemistossa tai tiedostossa. Näin ollen käyttöoikeusluettelot (ACL:t) otettiin käyttöön.

Oletetaan, että sinulla on kolme käyttäjää, tecmint1, tecmint2 ja tecmint3. Jokaiselle yhteiselle ryhmälle sanotaan "acl". Käyttäjä 'tecmint1' haluaa, että vain 'tecmint2' -käyttäjä voi lukea ja käyttää tiedostoja, jotka omistaa ' tecmint1" eikä kenelläkään muulla pitäisi olla pääsyä siihen.

ACL:n (Käyttöoikeusluettelot) avulla voimme tehdä saman tempun. Näiden ACL-luetteloiden avulla voimme myöntää käyttöoikeuksia käyttäjälle, ryhmälle ja mille tahansa käyttäjäryhmälle, joka ei ole käyttäjän ryhmäluettelossa.

Huomaa: Redhat-tuotedokumentaation mukaan se tarjoaa ACL-tuen ext3-tiedostojärjestelmille ja NFS-vietyille tiedostojärjestelmille.

Kuinka tarkistaa ACL-tuki Linux-järjestelmissä

Ennen kuin siirryt eteenpäin, sinulla pitäisi olla tuki ACL:ille nykyisessä ytimessä ja liitetyissä tiedostojärjestelmissä.

1. Tarkista ytimen ACL-tuki

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

[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. Tarkista vaaditut paketit

Ennen kuin aloitat pelaamisen ACL:illä, varmista, että olet asentanut tarvittavat paketit. Alla on vaaditut paketit, jotka on asennettava käyttämällä yum- tai apt-get-komentoa.

[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. Tarkista liitetyn tiedostojärjestelmän ACL-tuki

Tarkista nyt asennetusta tiedostojärjestelmästä, onko se liitetty ACL-vaihtoehdolla vai ei. Voimme käyttää 'mount'-komentoa tarkistaaksesi saman alla olevan kuvan mukaisesti.

[root@linux ~]# mount  | grep -i root

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

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

[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep acl

Default mount options:    user_xattr acl

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

[root@linux ~]# mount -o remount,acl /

Lisää seuraavaksi alla oleva merkintä '/etc/fstab'-tiedostoon tehdäksesi siitä pysyvä.

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

Asenna osio uudelleen.

[root@linux ~]# mount -o remount  /

4. NFS-palvelimelle

Jos NFS-palvelimella NSF-palvelimen viemä tiedostojärjestelmä tukee ACL-luetteloa ja NFS-asiakkaat voivat lukea ACL-luetteloita, asiakasjärjestelmä käyttää ACL-luetteloita.

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

Kuinka ottaa ACL-tuki käyttöön Linux-järjestelmissä

ACL-luetteloita on kahta tyyppiä:

  1. Käyttöoikeusluettelot: Pääsyn ACL-luetteloita käytetään lupien myöntämiseen mille tahansa tiedostolle tai hakemistolle.
  2. Oletus-ACL:t: Oletus-ACL-luetteloita käytetään vain tietyn hakemiston käyttöoikeusluettelon myöntämiseen/asetukseen.

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

  1. ACL-oletusasetusta voidaan käyttää vain hakemistotasolla.
  2. Kaikki kyseisessä hakemistossa luodut alihakemistot tai tiedostot perivät ACL:t emohakemistostaan. Toisaalta tiedosto perii oletusarvoiset ACL-luettelot käyttöoikeusluetteloinsa.
  3. Käytämme "–d" oletus-ACL-luetteloiden asettamiseen, ja oletus-ACL-luettelot ovat valinnaisia.
Ennen oletusarvoisten ACL-luetteloiden asettamista

Voit määrittää tietyn tiedoston tai hakemiston oletusarvoiset ACL-luettelot getfacl-komennolla. Alla olevassa esimerkissä getfacl-komennolla saadaan oletusarvoiset ACL-luettelot kansiolle Musiikki.

[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-
Oletus-ACL-luetteloiden asettamisen jälkeen

Jos haluat määrittää oletusarvoiset ACL-luettelot tietylle tiedostolle tai hakemistolle, käytä setfacl-komentoa. Alla olevassa esimerkissä setfacl-komento asettaa uudet ACL-luettelot (lue ja suorita) Music-kansioon. vahva>.

[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

Uusien ACL-luetteloiden asettaminen

Käytä setfacl-komentoa minkä tahansa tiedoston tai hakemiston määrittämiseen tai muokkaamiseen. Voit esimerkiksi antaa luku- ja kirjoitusoikeudet käyttäjälle tecmint1.

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

Kuinka tarkastella ACL-luetteloita

Käytä getfacl-komentoa tarkastellaksesi minkä tahansa tiedoston tai hakemiston ACL-luetteloa. Jos haluat esimerkiksi tarkastella ACL-luetteloa kohdassa /tecmint1/example, käytä alla olevaa komentoa.

getfacl /tecmint1/example

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

ACL-luetteloiden poistaminen

ACL-luettelon poistamiseen mistä tahansa tiedostosta/hakemistosta käytämme x- ja b -vaihtoehtoja alla kuvatulla tavalla.

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 skenaarioissa.

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

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

[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

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

[root@linux ~]# groupadd acl
[root@linux ~]# usermod -G acl tecmint1
[root@linux ~]# usermod -G acl tecmint2

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

[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

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

[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

Vaihe 5: Aseta nyt ACL käyttämällä setfacl-komentoa, jotta tecmint1:llä on kaikki rwx-oikeudet, 'tecmint2'lla on vain luku-oikeus esimerkki-kansiossa, ja muilla ei ole 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 toisella käyttäjällä, esim. 'tecmint2' toisella päätteellä, ja vaihda hakemistoksi '/tecmint1'. Yritä nyt tarkastella sisältöä ls-komennolla ja yritä sitten vaihtaa hakemistoa ja nähdä ero kuten alla.

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

Vaihe 7: Anna nyt suorita-lupa sovellukselle tecmint2 example-kansiossa ja käytä sitten 'cd'-komento nähdäksesi tehosteen. Nyt 'tecmint2'lla on oikeudet tarkastella ja muuttaa hakemistoa, mutta sillä ei ole oikeuksia kirjoittaa mitään.

[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

Huomaa: ACL:n käyttöönoton jälkeen näet ylimääräisen +-merkin ls –l-tulosteelle alla kuvatulla tavalla.

[root@linux tecmint1]# ll

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

Viitelinkit

ACL:n dokumentaatio