Secure Files/Directories gamit ang ACLs (Access Control Lists) sa Linux
Isip usa ka System Admin, ang among una nga prayoridad mao ang pagpanalipod ug pagsiguro sa datos gikan sa dili awtorisado nga pag-access. Kitang tanan nahibalo sa mga permiso nga atong gitakda gamit ang pipila ka makatabang nga Linux commands sama sa chmod, chown, chgrp... ug uban pa. Apan, kini nga mga default nga permiso nga set adunay pipila ka limitasyon ug usahay dili molihok sumala sa atong mga panginahanglan. Pananglitan, dili kami makahimo og lain-laing set sa pagtugot alang sa lain-laing tiggamit sa samang direktoryo o file. Busa, gipatuman ang Access Control Lists (ACLs).
Ingnon ta, ikaw adunay tulo ka tiggamit, 'tecmint1', 'tecmint2' ug 'tecmint3'. Ang matag usa adunay komon nga grupo moingon 'acl'. Gusto sa tiggamit nga 'tecmint1' nga ang 'tecmint2' nga tiggamit lamang ang makabasa ug maka-access sa mga file nga gipanag-iya sa 'tecmint1' ug wala’y lain nga adunay bisan unsang pag-access niana.
ACLs (Access Control Lists) nagtugot kanato sa pagbuhat sa sama nga lansis. Kini nga mga ACL nagtugot kanamo sa paghatag og mga pagtugot alang sa usa ka user, grupo ug bisan unsang grupo sa bisan kinsa nga tiggamit nga wala sa listahan sa grupo sa usa ka user.
Mubo nga sulat: Sama sa Redhat Product Documentation, naghatag kini og suporta sa ACL alang sa ext3 file system ug NFS exported file system.
Giunsa Pagsusi ang Suporta sa ACL sa Linux Systems
Sa dili pa mopadayon kinahanglan nga adunay suporta ka alang sa mga ACL sa kasamtangan nga Kernel ug gi-mount nga mga sistema sa file.
Pagdalagan ang mosunod nga sugo aron masusi ang ACL Support para sa file system ug POSIX_ACL=Y nga opsyon (kung adunay N imbes Y, nan kini nagpasabot nga ang Kernel dili mosuporta sa ACL ug kinahanglan nga i-recompiled).
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
Sa dili pa magsugod sa pagdula sa mga ACL siguruha nga kinahanglan nimo nga ma-install ang mga pakete. Sa ubos mao ang gikinahanglan nga mga pakete nga kinahanglan i-install gamit ang yum o 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)
Apan sa among kaso wala kini magpakita sa acl pinaagi sa default. Busa, sa sunod aduna kitay kapilian nga i-remount pag-usab ang mounted partition gamit ang acl option. Apan, sa dili pa molihok sa unahan, kita adunay lain nga kapilian sa pagsiguro nga ang partition gitaod sa acl kapilian o dili, tungod kay alang sa bag-o nga sistema kini mahimong integrated uban sa default mount kapilian.
tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
Sa ibabaw nga output, imong makita nga ang default mount option naa nay suporta para sa acl. Ang laing kapilian mao ang pag-remount sa partition sama sa gipakita sa ubos.
mount -o remount,acl /
Sunod, idugang ang ubos nga entry sa '/etc/fstab' nga file aron mahimo kini nga permanente.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
Pag-usab, i-remount ang partisyon.
mount -o remount /
Sa NFS server, kung ang file system nga gi-export sa NSF server nagsuporta sa ACL ug ACLs mabasa sa NFS Clients, nan ang ACLs gigamit sa client System.
Alang sa pag-disable sa mga ACL sa bahin sa NFS, kinahanglan nimong idugang ang opsyon nga \no_acl sa '/etc/exportfs' file sa NFS Server. Aron ma-disable kini sa bahin sa kliyente sa NSF gamita pag-usab ang \no_acl nga kapilian sa panahon sa pag-mount.
Giunsa Pagpatuman ang Suporta sa ACL sa Linux Systems
Adunay duha ka matang sa ACL:
- Access ACLs: Access ACLs kay gigamit para sa paghatag ug permiso sa bisan unsa nga file o directory.
- Mga Default nga ACL: Ang mga Default nga ACL gigamit para sa paghatag/pagbutang ug access control list sa usa ka piho nga direktoryo lamang.
Kalainan tali sa Access ACL ug Default ACL:
- Ang default nga ACL mahimong gamiton sa lebel sa direktoryo lamang.
- Bisan unsang sub directory o file nga gihimo sulod niana nga direktoryo makapanunod sa mga ACL gikan sa ginikanan nga direktoryo niini. Sa laing bahin ang usa ka file makapanunod sa default nga mga ACL isip mga access ACL niini.
- Among gigamit ang \–d” para sa pag-set sa default nga mga ACL ug ang mga Default nga ACL kay mga opsyonal.
Aron mahibal-an ang default nga mga ACL alang sa usa ka piho nga file o direktoryo, gamita ang 'getfacl' nga mando. Sa pananglitan sa ubos, ang getfacl gigamit aron makuha ang mga default nga ACL alang sa usa ka folder nga 'Musika'.
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-
Aron itakda ang mga default nga ACL alang sa usa ka piho nga file o direktoryo, gamita ang 'setfacl' nga mando. Sa pananglitan sa ubos, ang setfacl command magbutang ug bag-ong ACLs (basaha ug i-execute) sa usa ka folder nga '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
Gamita ang 'setfacl' nga sugo alang sa pag-set o pag-usab sa bisan unsang file o direktoryo. Pananglitan, ang paghatag og pagtugot sa pagbasa ug pagsulat sa user 'tecmint1'.
# setfacl -m u:tecmint1:rw /tecmint1/example
Gamita ang command 'getfacl' para sa pagtan-aw sa ACL sa bisan unsang file o direktoryo. Pananglitan, aron makita ang ACL sa '/tecmint1/example' gamita sa ubos nga sugo.
# getfacl /tecmint1/example # file: tecmint1/example/ # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
Alang sa pagtangtang sa ACL gikan sa bisan unsang file/direktoryo, gigamit namo ang x ug b nga mga kapilian sama sa gipakita sa ubos.
# setfacl -x ACL file/directory # remove only specified ACL from file/directory. # setfacl -b file/directory #removing all ACL from file/direcoty
Atong ipatuman ang ACL sa mga mosunod nga senaryo.
Duha ka Gumagamit (tecmint1 ug tecmint2), pareho nga adunay sagad nga sekondaryang grupo nga ginganlag 'acl'. Maghimo kami usa ka direktoryo nga gipanag-iya sa 'tecmint1' ug hatagan ang pagtugot sa pagbasa ug pagpatuman sa kana nga direktoryo sa tiggamit 'tecmint2'.
Lakang 1: Paghimo og duha ka tiggamit ug kuhaa ang password gikan sa duha
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
Lakang 2: Paghimo og Grupo ug Mga Gumagamit sa Secondary Group.
groupadd acl usermod -G acl tecmint1 usermod -G acl tecmint2
Lakang 3: Paghimo ug Direktoryo/tecmint ug usba ang pagpanag-iya sa 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
Lakang 4: Pag-login gamit ang tecmint1 ug paghimo og Direktoryo sa/tecmint folder.
[[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
Lakang 5: Karon ibutang ang ACL gamit ang 'setfacl', aron ang 'tecmint1' makabaton sa tanan nga rwx nga permiso, 'tecmint2' magbasa ra sa pagtugot sa 'pananglitan' nga folder ug ang uban wala’y pagtugot.
$ 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::---
Lakang 6: Karon pag-login sa ubang user ie 'tecmint2' sa laing terminal ug usba ang direktoryo sa '/tecmint1'. Karon sulayi ang pagtan-aw sa mga sulud gamit ang 'ls' nga mando ug dayon sulayi nga usbon ang direktoryo ug tan-awa ang kalainan sama sa ubos.
[[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::---
Lakang 7: Karon hatagi ang 'execute' permiso sa 'tecmint2' sa 'example' folder ug dayon gamita ang 'cd' command aron makita ang epekto. Karon ang 'tecmint2' adunay mga pagtugot sa pagtan-aw ug pagbag-o sa direktoryo, apan wala’y pagtugot sa pagsulat bisan unsa.
[[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
Mubo nga sulat: Human sa pagpatuman sa ACL, imong makita ang usa ka dugang nga '+' nga ilhanan alang sa 'ls -l' output sama sa ubos.
ll total 4 drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
Mga Reperensya nga Link
Dokumentasyon sa ACL