ປອດໄພໄຟລ໌/ໄດເລກະທໍລີທີ່ໃຊ້ ACLs (ລາຍການຄວບຄຸມການເຂົ້າເຖິງ) ໃນ Linux
ໃນຖານະເປັນຜູ້ຄຸ້ມຄອງລະບົບ, ບູລິມະສິດ ທຳ ອິດຂອງພວກເຮົາແມ່ນເພື່ອປົກປ້ອງແລະຮັບປະກັນຂໍ້ມູນຈາກການເຂົ້າເຖິງທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດ. ພວກເຮົາທຸກຄົນຮູ້ກ່ຽວກັບສິດອະນຸຍາດທີ່ພວກເຮົາ ກຳ ນົດໃຊ້ບາງ ຄຳ ສັ່ງ Linux ທີ່ມີປະໂຫຍດເຊັ່ນ: chmod, chown, chgrp …ອື່ນໆ. ຕົວຢ່າງ, ພວກເຮົາບໍ່ສາມາດຕັ້ງຊຸດການອະນຸຍາດທີ່ແຕກຕ່າງກັນ ສຳ ລັບຜູ້ໃຊ້ທີ່ແຕກຕ່າງກັນໃນໄດເລກະທໍລີຫລືເອກະສານດຽວກັນ. ດັ່ງນັ້ນ, ລາຍການຄວບຄຸມການເຂົ້າເຖິງ (ACLs) ໄດ້ຖືກຈັດຕັ້ງປະຕິບັດ.
ໃຫ້ເວົ້າວ່າ, ທ່ານມີຜູ້ໃຊ້ສາມຄົນ, 'tecmint1', 'tecmint2' ແລະ 'tecmint3'. ແຕ່ລະກຸ່ມທີ່ມີກຸ່ມ ທຳ ມະດາເວົ້າວ່າ 'acl'. ຜູ້ໃຊ້ 'tecmint1' ຕ້ອງການໃຫ້ຜູ້ໃຊ້ສາມາດອ່ານແລະເຂົ້າເຖິງເອກະສານທີ່ເປັນເຈົ້າຂອງ 'tecmint1' ແລະບໍ່ມີຜູ້ອື່ນຄວນເຂົ້າເຖິງສິ່ງນັ້ນ.
ACLs (ລາຍການຄວບຄຸມການເຂົ້າເຖິງ) ອະນຸຍາດໃຫ້ພວກເຮົາເຮັດແນວທາງດຽວກັນ. ACLs ເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ພວກເຮົາອະນຸຍາດ ສຳ ລັບຜູ້ໃຊ້, ກຸ່ມແລະກຸ່ມຂອງຜູ້ໃຊ້ໃດ ໜຶ່ງ ທີ່ບໍ່ຢູ່ໃນລາຍຊື່ກຸ່ມຂອງຜູ້ໃຊ້.
ໝາຍ ເຫດ: ອີງຕາມເອກະສານຜະລິດຕະພັນ Redhat, ມັນໃຫ້ການສະ ໜັບ ສະ ໜູນ ACL ສຳ ລັບລະບົບແຟ້ມ ext3 ແລະລະບົບແຟ້ມເອກະສານສົ່ງອອກຂອງ NFS.
ວິທີການກວດສອບ ACL Support ໃນ Linux Systems
ກ່ອນທີ່ຈະກ້າວໄປຂ້າງ ໜ້າ ທ່ານຄວນຈະໄດ້ຮັບການສະ ໜັບ ສະ ໜູນ ACLs ໃນລະບົບ Kernel ແລະລະບົບແຟ້ມເອກະສານ.
ດຳ ເນີນການ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເພື່ອກວດສອບ ACL Support ສຳ ລັບລະບົບແຟ້ມເອກະສານແລະ POSIX_ACL = Y (ຖ້າມີ N ແທນ Y, ມັນ ໝາຍ ຄວາມວ່າ Kernel ບໍ່ສະ ໜັບ ສະ ໜູນ ACL ແລະ ຈຳ ເປັນຕ້ອງມີການສະ ເໜີ ໃໝ່).
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
ກ່ອນທີ່ຈະເລີ່ມຕົ້ນຫຼີ້ນກັບ ACLs ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ຕິດຕັ້ງແພກເກດທີ່ຕ້ອງການແລ້ວ. ຂ້າງລຸ່ມນີ້ແມ່ນຊຸດທີ່ ຈຳ ເປັນທີ່ຕ້ອງການຕິດຕັ້ງໂດຍໃຊ້ yum ຫຼື 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)
ແຕ່ໃນກໍລະນີຂອງພວກເຮົາມັນບໍ່ສະແດງ acl ໂດຍຄ່າເລີ່ມຕົ້ນ. ດັ່ງນັ້ນ, ຕໍ່ໄປພວກເຮົາມີທາງເລືອກທີ່ຈະແບ່ງປັນການແບ່ງປັນທີ່ຖືກຕິດຕັ້ງອີກເທື່ອ ໜຶ່ງ ໂດຍໃຊ້ທາງເລືອກ acl. ແຕ່ວ່າ, ກ່ອນທີ່ຈະກ້າວໄປຂ້າງ ໜ້າ, ພວກເຮົາມີທາງເລືອກອື່ນອີກເພື່ອໃຫ້ແນ່ໃຈວ່າການແບ່ງປັນຖືກຕິດກັບຕົວເລືອກ acl ຫຼືບໍ່, ເພາະວ່າ ສຳ ລັບລະບົບທີ່ຜ່ານມາມັນອາດຈະຖືກລວມເຂົ້າກັບຕົວເລືອກ mount ແບບເລີ່ມຕົ້ນ.
tune2fs -l /dev/mapper/fedora-root | grep acl Default mount options: user_xattr acl
ໃນຜົນໄດ້ຮັບຂ້າງເທິງ, ທ່ານສາມາດເຫັນວ່າຕົວເລືອກ mount ໃນຕອນຕົ້ນມີການສະຫນັບສະຫນູນ acl. ທາງເລືອກອີກຢ່າງ ໜຶ່ງ ຄືການແບ່ງປັນການແບ່ງປັນດັ່ງຮູບຂ້າງລຸ່ມນີ້.
mount -o remount,acl /
ຕໍ່ໄປ, ຕື່ມການເຂົ້າຂ້າງລຸ່ມນີ້ໃສ່ '/ etc/fstab' file ເພື່ອໃຫ້ມັນຖາວອນ.
/dev/mapper/fedora-root / ext4 defaults,acl 1 1
ອີກເທື່ອ ໜຶ່ງ, ແບ່ງສ່ວນແບ່ງອອກ.
mount -o remount /
ຢູ່ເຊີຟເວີ NFS, ຖ້າລະບົບເອກະສານທີ່ຖືກສົ່ງອອກໂດຍ server NSF ສະ ໜັບ ສະ ໜູນ ACL ແລະ ACL ສາມາດອ່ານໂດຍລູກຄ້າ NFS, ຫຼັງຈາກນັ້ນ, ACLs ຖືກ ນຳ ໃຊ້ໂດຍ System System.
ສຳ ລັບການປິດ ACLs ໃນການແບ່ງປັນ NFS, ທ່ານຕ້ອງເພີ່ມຕົວເລືອກ“ no_acl” ໃນເອກະສານ ‘/ etc/exportfs’ ໃນ NFS Server. ເພື່ອປິດມັນຢູ່ຂ້າງລູກຄ້າຂອງ NSF ອີກເທື່ອ ໜຶ່ງ ໃຫ້ໃຊ້ຕົວເລືອກ“ no_acl” ໃນຊ່ວງເວລາ mount.
ວິທີການຈັດຕັ້ງປະຕິບັດການສະ ໜັບ ສະ ໜູນ ACL ໃນ Linux Systems
ACLs ມີສອງປະເພດ:
<
ຄວາມແຕກຕ່າງລະຫວ່າງ Access ACL ແລະ Default ACL:
<
ເພື່ອ ກຳ ນົດຄ່າ ACLs ໃນຕອນຕົ້ນ ສຳ ລັບເອກະສານຫຼືໄດເລກະທໍລີສະເພາະ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ 'getfacl'. ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, getfacl ຖືກໃຊ້ເພື່ອເອົາຄ່າ ACLs ໄວ້ໃນຕອນຕົ້ນ ສຳ ລັບໂຟນເດີ ‘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-
ເພື່ອ ກຳ ນົດຄ່າ ACLs ໃນຕອນຕົ້ນ ສຳ ລັບເອກະສານຫຼືໄດເລກະທໍລີສະເພາະ, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ 'setfacl'. ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ຄຳ ສັ່ງ setfacl ຈະຕັ້ງ ACLs ໃໝ່ (ອ່ານແລະເຮັດ) ໃນໂຟນເດີ 'ເພັງ'.
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
ໃຊ້ ຄຳ ສັ່ງ 'setfacl' ສຳ ລັບຕັ້ງຫຼືດັດແປງເອກະສານຫຼືໄດເລກະທໍລີ. ຍົກຕົວຢ່າງ, ເພື່ອໃຫ້ສິດໃນການອ່ານແລະຂຽນໃຫ້ຜູ້ໃຊ້ 'tecmint1'.
# setfacl -m u:tecmint1:rw /tecmint1/example
ໃຊ້ ຄຳ ສັ່ງ ‘getfacl’ ສຳ ລັບເບິ່ງ ACL ໃນທຸກເອກະສານຫຼືໄດເລກະທໍລີ. ຍົກຕົວຢ່າງ, ເພື່ອເບິ່ງ ACL ໃນ '/ tecmint1/ຕົວຢ່າງ' ໃຊ້ຢູ່ຂ້າງລຸ່ມ ຄຳ ສັ່ງ.
# getfacl /tecmint1/example # file: tecmint1/example/ # owner: tecmint1 # group: tecmint1 user::rwx user:tecmint1:rwx user:tecmint2:r-- group::rwx mask::rwx other::---
ສຳ ລັບການຖອດ ACL ອອກຈາກໄຟລ໌/ໄດເລກະທໍລີໃດໆ, ພວກເຮົາໃຊ້ຕົວເລືອກ x ແລະ b ດັ່ງທີ່ສະແດງຢູ່ທາງລຸ່ມ.
# setfacl -x ACL file/directory # remove only specified ACL from file/directory. # setfacl -b file/directory #removing all ACL from file/direcoty
ໃຫ້ປະຕິບັດ ACL ຂອງສະຖານະການຕໍ່ໄປນີ້.
ສອງຜູ້ໃຊ້ (tecmint1 ແລະ tecmint2), ທັງສອງມີກຸ່ມມັດທະຍົມທົ່ວໄປທີ່ມີຊື່ວ່າ 'acl'. ພວກເຮົາຈະສ້າງໄດເລກະທໍລີ ໜຶ່ງ ທີ່ເປັນເຈົ້າຂອງໂດຍ 'tecmint1' ແລະຈະໃຫ້ການອ່ານແລະ ດຳ ເນີນການອະນຸຍາດໃນໄດເລກະທໍລີນັ້ນໃຫ້ຜູ້ໃຊ້ 'tecmint2'.
ຂັ້ນຕອນທີ 1: ສ້າງຜູ້ໃຊ້ສອງຄົນແລະເອົາລະຫັດຜ່ານຈາກທັງສອງ
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: ສ້າງກຸ່ມແລະຜູ້ ນຳ ໃຊ້ໃຫ້ກຸ່ມຮອງ.
groupadd acl usermod -G acl tecmint1 usermod -G acl tecmint2
ຂັ້ນຕອນທີ 3: ສ້າງ Directory/tecmint ແລະປ່ຽນເຈົ້າຂອງເປັນ 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: ເຂົ້າສູ່ລະບົບດ້ວຍ tecmint1 ແລະສ້າງ Directory ໃນ/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
ຂັ້ນຕອນທີ 5: ດຽວນີ້ ກຳ ນົດ ACL ໂດຍໃຊ້ 'setfacl', ເພື່ອວ່າ 'tecmint1' ຈະມີສິດອະນຸຍາດຂອງ rwx ທັງ ໝົດ, 'tecmint2' ຈະໄດ້ຮັບການອະນຸຍາດພຽງແຕ່ໃນ 'ຕົວຢ່າງ' ໂຟນເດີແລະອື່ນໆຈະບໍ່ມີສິດ.
$ 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: ດຽວນີ້ເຂົ້າສູ່ລະບົບກັບຜູ້ໃຊ້ອື່ນ i.e. ‘tecmint2‘ ຢູ່ທີ່ທ່າອື່ນແລະປ່ຽນໄດເລກະທໍລີໄປຫາ ‘/ tecmint1’. ຕອນນີ້ລອງເບິ່ງເນື້ອຫາໂດຍໃຊ້ ຄຳ ສັ່ງ ‘l’ ແລະຫຼັງຈາກນັ້ນພະຍາຍາມປ່ຽນແປງໄດເລກະທໍລີແລະເບິ່ງຄວາມແຕກຕ່າງຄືດັ່ງລຸ່ມນີ້.
[[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: ດຽວນີ້ໃຫ້ອະນຸຍາດໃຫ້ "tecmint2" ໃສ່ "ຕົວຢ່າງ" ໂຟນເດີແລະຫຼັງຈາກນັ້ນໃຫ້ໃຊ້ ຄຳ ສັ່ງ cd ເພື່ອເບິ່ງຜົນ ດຽວນີ້ 'tecmint2' ມີສິດທີ່ຈະເບິ່ງແລະປ່ຽນແປງໄດເລກະທໍລີ, ແຕ່ບໍ່ມີສິດໃນການຂຽນຫຍັງ.
[[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
ໝາຍ ເຫດ: ຫລັງຈາກຈັດຕັ້ງປະຕິບັດ ACL, ທ່ານຈະເຫັນປ້າຍເພີ່ມເຕີມ "+" ສຳ ລັບຜົນຜະລິດ 'ຂ້າງລຸ່ມ'.
ll total 4 drwxrwx---+ 2 tecmint1 tecmint1 4096 Apr 17 17:01 example
ລິ້ງອ້າງອີງ
ເອກະສານເອກະສານຂອງ ACL