Salama Faili/saraka kwa kutumia ACL (Orodha za Udhibiti wa Ufikiaji) katika Linux
Kama Msimamizi wa Mfumo, kipaumbele chetu cha kwanza kitakuwa kulinda na kulinda data dhidi ya ufikiaji ambao haujaidhinishwa. Sote tunafahamu ruhusa ambazo tunaweka kwa kutumia baadhi ya amri muhimu za Linux kama vile chmod, chown, chgrp... n.k. Hata hivyo, seti hizi za ruhusa chaguomsingi zina vikwazo na wakati mwingine huenda zisifanye kazi kulingana na mahitaji yetu. Kwa mfano, hatuwezi kusanidi seti tofauti za ruhusa kwa watumiaji tofauti kwenye saraka au faili moja. Hivyo, Orodha za Udhibiti wa Upatikanaji (ACLs) zilitekelezwa.
Wacha tuseme, una watumiaji watatu, 'tecmint1', 'tecmint2' na 'tecmint3'. Kila moja ikiwa na kundi la kawaida sema 'acl'. Mtumiaji ‘tecmint1’ anataka mtumiaji wa ‘tecmint2’ pekee ndiye anayeweza kusoma na kufikia faili zinazomilikiwa na ‘tecmint1’ na hakuna mtu mwingine anayepaswa kuwa na ufikiaji wowote kwa hilo.
ACLs (Orodha za Udhibiti wa Ufikiaji) huturuhusu kufanya hila sawa. ACL hizi huturuhusu kutoa ruhusa kwa mtumiaji, kikundi na kikundi chochote cha watumiaji wowote ambao hawako katika orodha ya kikundi cha mtumiaji.
Kumbuka: Kulingana na Hati ya Bidhaa ya Redhat, inatoa usaidizi wa ACL kwa mfumo wa faili wa ext3 na mifumo ya faili iliyosafirishwa ya NFS.
Jinsi ya Kuangalia Usaidizi wa ACL katika Mifumo ya Linux
Kabla ya kusonga mbele unapaswa kuwa na usaidizi wa ACL kwenye Kernel ya sasa na mifumo ya faili iliyowekwa.
Tekeleza amri ifuatayo ili kuangalia Usaidizi wa ACL kwa mfumo wa faili na chaguo la POSIX_ACL=Y (ikiwa kuna N badala ya Y, basi inamaanisha Kernel haitumii ACL na inahitaji kukusanywa tena).
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
Kabla ya kuanza kucheza na ACL hakikisha kuwa umesakinisha vifurushi. Ifuatayo ni vifurushi vinavyohitajika ambavyo vinahitaji kusakinishwa kwa kutumia yum au apt-get.
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)
Lakini kwa upande wetu haionyeshi acl kwa msingi. Kwa hivyo, inayofuata tunayo chaguo la kuweka tena kizigeu kilichowekwa tena kwa kutumia chaguo la acl. Lakini, kabla ya kusonga mbele, tuna chaguo lingine la kuhakikisha kuwa kizigeu kimewekwa na chaguo la acl au la, kwa sababu kwa mfumo wa hivi karibuni inaweza kuunganishwa na chaguo-msingi la kupachika.
tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
Katika matokeo ya hapo juu, unaweza kuona kwamba chaguo-msingi la kuweka tayari lina usaidizi kwa acl. Chaguo jingine ni kuweka tena kizigeu kama inavyoonyeshwa hapa chini.
mount -o remount,acl /
Kisha, ongeza ingizo lililo hapa chini kwenye faili ya '/etc/fstab' ili kuifanya iwe ya kudumu.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
Tena, weka tena kizigeu.
mount -o remount /
Kwenye seva ya NFS, ikiwa mfumo wa faili unaosafirishwa na seva ya NSF unatumia ACL na ACL zinaweza kusomwa na Wateja wa NFS, basi ACL hutumiwa na Mfumo wa mteja.
Ili kuzima ACL kwenye kushiriki kwa NFS, lazima uongeze chaguo \no_acl katika faili ya ‘/etc/exportfs’ kwenye Seva ya NFS. Ili kuizima kwa upande wa mteja wa NSF tumia tena chaguo la \no_acl wakati wa kupachika.
Jinsi ya Kutekeleza Usaidizi wa ACL katika Mifumo ya Linux
Kuna aina mbili za ACLs:
- Acl za Ufikiaji: ACL za Ufikiaji hutumiwa kutoa ruhusa kwenye faili au saraka yoyote.
- ACL Chaguomsingi: ACL chaguomsingi hutumika kutoa/kuweka orodha ya udhibiti wa ufikiaji kwenye saraka mahususi pekee.
Tofauti kati ya Access ACL na ACL Default:
- ACL chaguo-msingi inaweza kutumika katika kiwango cha saraka pekee.
- Saraka yoyote ndogo au faili iliyoundwa ndani ya saraka hiyo itarithi ACL kutoka saraka kuu yake. Kwa upande mwingine faili hurithi ACL chaguo-msingi kama ACL zake za ufikiaji.
- Tunatumia \–d kuweka ACL chaguomsingi na ACL Chaguomsingi ni chaguo.
Kuamua ACL chaguo-msingi kwa faili au saraka maalum, tumia amri ya 'getfacl'. Katika mfano ulio hapa chini, getfacl inatumika kupata ACL chaguo-msingi za folda ya 'Muziki'.
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-
Ili kuweka ACL chaguo-msingi kwa faili au saraka maalum, tumia amri ya 'setfacl'. Katika mfano ulio hapa chini, amri ya setfacl itaweka ACL mpya (soma na kutekeleza) kwenye folda ya 'Muziki'.
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
Tumia amri ya 'setfacl' kwa kuweka au kurekebisha kwenye faili au saraka yoyote. Kwa mfano, kutoa ruhusa za kusoma na kuandika kwa mtumiaji ‘tecmint1’.
# setfacl -m u:tecmint1:rw /tecmint1/example
Tumia amri ya 'getfacl' kwa kutazama ACL kwenye faili au saraka yoyote. Kwa mfano, kutazama ACL kwenye ‘/tecmint1/example‘ tumia amri iliyo hapa chini.
# getfacl /tecmint1/example # file: tecmint1/example/ # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
Kwa kuondoa ACL kutoka kwa faili/saraka yoyote, tunatumia chaguzi za x na b kama inavyoonyeshwa hapa chini.
# setfacl -x ACL file/directory # remove only specified ACL from file/directory. # setfacl -b file/directory #removing all ACL from file/direcoty
Wacha tutekeleze ACL kwa kufuata hali.
Watumiaji Wawili (tecmint1 na tecmint2), wote wakiwa na kikundi cha upili kinachoitwa 'acl'. Tutaunda saraka moja inayomilikiwa na 'tecmint1' na tutatoa ruhusa ya kusoma na kutekeleza kwenye saraka hiyo kwa mtumiaji 'tecmint2'.
Hatua ya 1: Unda watumiaji wawili na uondoe nenosiri kutoka kwa wote wawili
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
Hatua ya 2: Unda Kikundi na Watumiaji kwa Kikundi cha Sekondari.
groupadd acl usermod -G acl tecmint1 usermod -G acl tecmint2
Hatua ya 3: Unda Saraka /tecmint na ubadilishe umiliki kuwa 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
Hatua ya 4: Ingia na tecmint1 na uunde Saraka katika /tecmint folda.
[[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
Hatua ya 5: Sasa weka ACL ukitumia 'setfacl', ili 'tecmint1' iwe na ruhusa zote za rwx, 'tecmint2' itakuwa na ruhusa ya kusoma tu kwenye folda ya 'example' na nyingine haitakuwa na ruhusa.
$ 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::---
Hatua ya 6: Sasa ingia na mtumiaji mwingine yaani 'tecmint2' kwenye terminal nyingine na ubadilishe saraka kuwa '/tecmint1'. Sasa jaribu kutazama yaliyomo kwa kutumia 'ls'amri kisha ujaribu kubadilisha saraka na uone tofauti kama ilivyo hapo chini.
[[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::---
Hatua ya 7: Sasa toa ruhusa ya 'kutekeleza' kwa 'tecmint2' kwenye folda ya 'mfano' kisha utumie amri ya 'cd' kuona athari. Sasa 'tecmint2' wana ruhusa ya kutazama na kubadilisha saraka, lakini huna ruhusa ya kuandika chochote.
[[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
Kumbuka: Baada ya kutekeleza ACL, utaona ishara ya ziada ya '+' ya towe la 'ls -l' kama ilivyo hapo chini.
ll total 4 drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
Viungo vya Marejeleo
Nyaraka za ACL