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ä:
- Käyttöoikeusluettelot: Pääsyn ACL-luetteloita käytetään lupien myöntämiseen mille tahansa tiedostolle tai hakemistolle.
- 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ä:
- ACL-oletusasetusta voidaan käyttää vain hakemistotasolla.
- Kaikki kyseisessä hakemistossa luodut alihakemistot tai tiedostot perivät ACL:t emohakemistostaan. Toisaalta tiedosto perii oletusarvoiset ACL-luettelot käyttöoikeusluetteloinsa.
- 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