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:
- Pääsy ACL: iin: Pääsy ACL: itä käytetään myöntämään käyttöoikeudet mihin tahansa tiedostoon tai hakemistoon.
- 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ä:
- ACL-oletusasetusta voidaan käyttää vain hakemistotasolla.
- Jokainen siihen hakemistoon luotu alihakemisto tai tiedosto perii ACL: t päähakemistostaan. Toisaalta tiedosto perii oletusarvoiset ACL: t käyttöoikeusluetteloiksi.
- 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