Drošie faili/direktoriji, izmantojot Linux ACL (piekļuves kontroles saraksti)
Kā sistēmas administratoram mūsu galvenā prioritāte būs aizsargāt un aizsargāt datus no nesankcionētas piekļuves. Mēs visi zinām par atļaujām, kuras esam iestatījuši, izmantojot dažas noderīgas Linux komandas, piemēram, chmod, chown, chgrp ... utt. Tomēr šīm noklusējuma atļauju kopām ir daži ierobežojumi, un dažreiz tās var nedarboties atbilstoši mūsu vajadzībām. Piemēram, mēs nevaram iestatīt dažādas atļauju kopas dažādiem lietotājiem vienā direktorijā vai failā. Tādējādi tika ieviesti piekļuves kontroles saraksti (ACL).
Pieņemsim, ka jums ir trīs lietotāji “tecmint1”, “tecmint2” un “tecmint3”. Katrs, kam ir kopīga grupa, saka “acl”. Lietotājs “tecmint1” vēlas, lai tikai “tecmint2” lietotājs varētu lasīt un piekļūt failiem, kas pieder “tecmint1”, un nevienam citam tam nebūtu jābūt piekļuvei.
ACL (piekļuves kontroles saraksti) ļauj mums veikt to pašu triku. Šīs ACL ļauj mums piešķirt atļaujas lietotājam, grupai un visām lietotāju grupām, kuras nav lietotāja grupu sarakstā.
Piezīme. Saskaņā ar Redhat produkta dokumentāciju tas nodrošina ACL atbalstu ext3 failu sistēmai un NFS eksportētajām failu sistēmām.
Kā pārbaudīt ACL atbalstu Linux sistēmās
Pirms virzīties uz priekšu, jums ir jāatbalsta ACL pašreizējā kodola un pievienoto failu sistēmās.
Palaidiet šo komandu, lai pārbaudītu failu sistēmas ACL atbalstu un opciju POSIX_ACL = Y (ja Y vietā ir N, tas nozīmē, ka kodols neatbalsta ACL un ir jāpārkompilē).
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
Pirms sākat spēlēt ar ACL, pārliecinieties, vai ir instalētas pakotnes. Tālāk ir norādītas nepieciešamās pakotnes, kuras jāinstalē, izmantojot yum vai 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)
Bet mūsu gadījumā tā pēc noklusējuma nerāda acl. Tātad, pēc tam mums ir iespēja vēlreiz uzstādīt uzstādīto nodalījumu, izmantojot opciju acl. Bet, pirms virzīties uz priekšu, mums ir vēl viena iespēja pārliecināties, vai nodalījums ir uzstādīts ar acl opciju vai nē, jo jaunākajai sistēmai tas var būt integrēts ar noklusējuma stiprināšanas opciju.
tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
Iepriekš minētajā izvadē varat redzēt, ka noklusējuma stiprināšanas opcijai jau ir atbalsts acl. Vēl viena iespēja ir nodalījuma nodalīšana, kā parādīts zemāk.
mount -o remount,acl /
Pēc tam pievienojiet zemāk esošo ierakstu failam “/ etc/fstab”, lai padarītu to pastāvīgu.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
Atkal pārinstalējiet nodalījumu.
mount -o remount /
NFS serverī, ja failu sistēma, kuru eksportē NSF serveris, atbalsta ACL un ACL var nolasīt NFS klienti, klienta sistēma izmanto ACL.
Lai atspējotu ACL NFS koplietošanā, jums jāpievieno opcija “no_acl” failā “/ etc/exportfs” NFS serverī. Lai to atspējotu NSF klienta pusē, uzstādīšanas laikā vēlreiz izmantojiet opciju “no_acl”.
Kā ieviest ACL atbalstu Linux sistēmās
Ir divu veidu ACL:
- Piekļuves ACL: piekļuves ACL izmanto, lai piešķirtu atļaujas jebkuram failam vai direktorijam.
- Noklusējuma ACL: noklusējuma ACL izmanto piekļuves kontroles saraksta piešķiršanai/iestatīšanai tikai noteiktā direktorijā.
Atšķirība starp piekļuves ACL un noklusējuma ACL:
- Noklusējuma ACL var izmantot tikai direktoriju līmenī.
- Jebkurš šajā direktorijā izveidots apakšdirektors vai fails mantos ACL no tā vecākdirektorija. No otras puses, fails manto noklusējuma ACL kā piekļuves ACL.
- Noklusējuma ACL iestatīšanai mēs izmantojam “–d”, un noklusējuma ACL ir izvēles iespējas.
Lai noteiktu noklusējuma ACL noteiktu failu vai direktoriju, izmantojiet komandu getfacl. Šajā piemērā getfacl tiek izmantots, lai noklusējuma ACL iegūtu mapei ‘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-
Lai iestatītu noklusējuma ACL konkrētam failam vai direktorijai, izmantojiet komandu “setfacl”. Tālāk sniegtajā piemērā komanda setfacl iestatīs jaunus ACL (lasīt un izpildīt) mapē ‘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
Izmantojiet komandu “setfacl”, lai iestatītu vai modificētu jebkuru failu vai direktoriju. Piemēram, lai piešķirtu lasīšanas un rakstīšanas atļaujas lietotājam ‘tecmint1’.
# setfacl -m u:tecmint1:rw /tecmint1/example
Izmantojiet komandu getfacl, lai skatītu ACL jebkurā failā vai direktorijā. Piemēram, lai skatītu ACL mapē ‘/ tecmint1/example’, izmantojiet komandu zemāk.
# getfacl /tecmint1/example # file: tecmint1/example/ # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
Lai noņemtu ACL no jebkura faila/direktorija, mēs izmantojam opcijas x un b, kā parādīts zemāk.
# setfacl -x ACL file/directory # remove only specified ACL from file/directory. # setfacl -b file/directory #removing all ACL from file/direcoty
Īstenosim ACL saskaņā ar šādiem scenārijiem.
Divi lietotāji (tecmint1 un tecmint2), kuriem abiem ir kopīga sekundārā grupa ar nosaukumu “acl”. Mēs izveidosim vienu direktoriju, kas pieder ‘tecmint1’, un nodrošināsim lasītāja un izpildītāja atļauju šajā direktorijā lietotājam ‘tecmint2’.
1. darbība: izveidojiet divus lietotājus un noņemiet paroli no abiem
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
2. darbība: izveidojiet grupu un lietotājus sekundārajai grupai.
groupadd acl usermod -G acl tecmint1 usermod -G acl tecmint2
3. darbība: izveidojiet direktoriju/tecmint un mainiet īpašumtiesības uz 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
4. solis: Piesakieties, izmantojot tecmint1, un mapē/tecmint izveidojiet direktoriju.
[[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
5. solis: Tagad iestatiet ACL, izmantojot ‘setfacl’, tā ka ‘tecmint1’ būs visas rwx atļaujas, ‘tecmint2’ būs tikai lasīšanas atļauja mapē ‘example’, bet citām nebūs atļauju.
$ 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::---
6. solis: Tagad piesakieties ar citu lietotāju, t.i., ‘tecmint2’ citā terminālā un nomainiet direktoriju uz ‘/ tecmint1’. Tagad mēģiniet apskatīt saturu, izmantojot komandu ‘ls’, un pēc tam mēģiniet mainīt direktoriju un redzēt atšķirību, kā norādīts zemāk.
[[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::---
7. solis: Tagad dodiet ‘izpildīt’ atļauju ‘tecmint2’ mapē ‘piemērs’ un pēc tam izmantojiet komandu ‘cd’, lai redzētu efektu. Tagad ‘tecmint2’ ir atļaujas apskatīt un mainīt direktoriju, taču nav atļaujas neko rakstīt.
[[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
Piezīme: Pēc ACL ieviešanas jūs redzēsiet papildu “+” zīmi izejai “ls –l”, kā norādīts zemāk.
ll total 4 drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
Atsauces saites
ACL dokumentācija