umask – ກໍານົດການອະນຸຍາດເລີ່ມຕົ້ນ
ໄດ້ ໜ້າ ກາກ ຄໍາສັ່ງຄວບຄຸມການອະນຸຍາດເລີ່ມຕົ້ນທີ່ມອບໃຫ້ໄຟລ໌ໃນເວລາທີ່ມັນຖືກສ້າງຂຶ້ນ. ມັນໃຊ້ເຄື່ອງໝາຍເລກແປດເພື່ອສະແດງອອກ a ຫນ້າກາກ ຂອງ bits ທີ່ຈະເອົາອອກຈາກຮູບແບບຂອງໄຟລ໌ - tributes. ລອງເບິ່ງ:
[me@linuxbox ~]$ rm -f foo.txt
[me@linuxbox ~]$ ໜ້າ ກາກ
0002
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ rm -f foo.txt
[me@linuxbox ~]$ ໜ້າ ກາກ
0002
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 me me 0 2016-03-06 14:53 foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 me me 0 2016-03-06 14:53 foo.txt
ທໍາອິດພວກເຮົາເອົາສໍາເນົາເກົ່າຂອງ foo.txt ເພື່ອໃຫ້ແນ່ໃຈວ່າພວກເຮົາເລີ່ມສົດ. ຕໍ່ໄປ, ພວກເຮົາດໍາເນີນການ ໜ້າ ກາກ ຄໍາສັ່ງໂດຍບໍ່ມີການໂຕ້ຖຽງເພື່ອເບິ່ງມູນຄ່າປະຈຸບັນ. ມັນຕອບສະຫນອງກັບມູນຄ່າ 0002 (ຄ່າ 0022 ເປັນຄ່າເລີ່ມຕົ້ນທົ່ວໄປອີກອັນໜຶ່ງ), ເຊິ່ງເປັນຕົວແທນຂອງໜ້າກາກຂອງພວກເຮົາ. ຕໍ່ໄປພວກເຮົາຈະສ້າງຕົວຢ່າງໃຫມ່ຂອງໄຟລ໌ foo.txt ແລະປະຕິບັດຕາມການອະນຸຍາດຂອງມັນ.
ພວກເຮົາສາມາດເຫັນໄດ້ວ່າທັງເຈົ້າຂອງແລະກຸ່ມໄດ້ຮັບການອະນຸຍາດອ່ານແລະຂຽນ, ໃນຂະນະທີ່ຄົນອື່ນພຽງແຕ່ໄດ້ຮັບການອະນຸຍາດອ່ານ. ເຫດຜົນທີ່ໂລກບໍ່ມີການອະນຸຍາດຂຽນແມ່ນຍ້ອນຄຸນຄ່າຂອງຫນ້າກາກ. ຂໍໃຫ້ຍົກຕົວຢ່າງຂອງພວກເຮົາຄືນໃໝ່, ເທື່ອນີ້ຕັ້ງໜ້າກາກດ້ວຍຕົວເອງ:
[me@linuxbox ~]$ rm foo.txt [me@linuxbox ~]$ umask 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt
-rw-rw-rw- 1 me me 0 2016-03-06 14:58 foo.txt
[me@linuxbox ~]$ rm foo.txt [me@linuxbox ~]$ umask 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt
-rw-rw-rw- 1 me me 0 2016-03-06 14:58 foo.txt
ເມື່ອພວກເຮົາຕັ້ງຫນ້າກາກ 0000 (ປິດຢ່າງມີປະສິດທິຜົນ), ພວກເຮົາເຫັນວ່າໄຟລ໌ແມ່ນໃນປັດຈຸບັນໂລກຂຽນໄດ້. ເພື່ອເຂົ້າໃຈວິທີການເຮັດວຽກນີ້, ພວກເຮົາຕ້ອງເບິ່ງຕົວເລກຖານແປດອີກເທື່ອຫນຶ່ງ. ຖ້າພວກເຮົາເອົາຫນ້າກາກແລະຂະຫຍາຍມັນເຂົ້າໄປໃນຖານສອງ, ແລະຫຼັງຈາກນັ້ນປຽບທຽບມັນກັບຄຸນລັກສະນະທີ່ພວກເຮົາສາມາດເຫັນໄດ້ວ່າມີຫຍັງເກີດຂື້ນ:
ຮູບແບບໄຟລ໌ຕົ້ນສະບັບ | --- rw- rw- rw- | |||
ຫນ້າກາກ | 000 | 000 | 000 | 010 |
ຜົນ | --- | rw - | rw - | r-- |
ບໍ່ສົນໃຈໃນເວລານີ້ສູນຊັ້ນນໍາ (ພວກເຮົາຈະໄປຫາຜູ້ທີ່ຢູ່ໃນນາທີ) ແລະສັງເກດເຫັນວ່າບ່ອນທີ່ 1 ປາກົດຢູ່ໃນຫນ້າກາກຂອງພວກເຮົາ, ຄຸນລັກສະນະໄດ້ຖືກໂຍກຍ້າຍອອກ. - ໃນກໍລະນີນີ້, ໂລກຂຽນການອະນຸຍາດ. ນັ້ນແມ່ນສິ່ງທີ່ຫນ້າກາກເຮັດ. ຢູ່ທົ່ວທຸກແຫ່ງທີ່ 1 ປະກົດຢູ່ໃນຄ່າຖານສອງຂອງໜ້າກາກ, ຄຸນສົມບັດບໍ່ໄດ້ຖືກຕັ້ງ. ຖ້າພວກເຮົາເບິ່ງມູນຄ່າຫນ້າກາກຂອງ 0022, ພວກເຮົາສາມາດເບິ່ງສິ່ງທີ່ມັນເຮັດໄດ້:
ຮູບແບບໄຟລ໌ຕົ້ນສະບັບ | --- rw- rw- rw- | |||
ຫນ້າກາກ | 000 | 000 | 010 | 010 |
ຜົນ | --- | rw - | r-- | r-- |
ອີກເທື່ອ ໜຶ່ງ, ບ່ອນທີ່ 1 ປະກົດຢູ່ໃນມູນຄ່າຖານສອງ, ຄຸນລັກສະນະທີ່ສອດຄ້ອງກັນແມ່ນບໍ່ໄດ້ຕັ້ງ. ຫຼິ້ນກັບຄ່າບາງຢ່າງ (ລອງເຈັດບາງອັນ) ເພື່ອໃຊ້ກັບວິທີເຮັດວຽກນີ້. ເມື່ອທ່ານເຮັດສໍາເລັດ, ສະມາຊິກໃຫມ່ເພື່ອທໍາຄວາມສະອາດ:
[me@linuxbox ~]$ rm foo.txt ; umask 0002
[me@linuxbox ~]$ rm foo.txt ; umask 0002
ເວລາສ່ວນໃຫຍ່ພວກເຮົາຈະບໍ່ຈໍາເປັນຕ້ອງປ່ຽນຫນ້າກາກ; ຄ່າເລີ່ມຕົ້ນທີ່ສະໜອງໃຫ້ໂດຍການແຈກຢາຍຂອງເຈົ້າຈະດີ. ຢ່າງໃດກໍຕາມ, ໃນບາງສະຖານະການຄວາມປອດໄພສູງ, ພວກເຮົາຈະຕ້ອງການຄວບຄຸມມັນ.
ບາງການອະນຸຍາດພິເສດ
ເຖິງແມ່ນວ່າປົກກະຕິແລ້ວພວກເຮົາເຫັນຫນ້າກາກການອະນຸຍາດ octal ສະແດງອອກເປັນຕົວເລກສາມຕົວເລກ, ມັນເປັນທາງວິຊາການທີ່ຖືກຕ້ອງກວ່າທີ່ຈະສະແດງອອກເປັນສີ່ຕົວເລກ. ເປັນຫຍັງ? ເນື່ອງຈາກວ່າ, ນອກເຫນືອໄປຈາກການອ່ານ, ຂຽນ, ແລະປະຕິບັດການອະນຸຍາດ, ມີບາງການຕັ້ງຄ່າອື່ນໆ, ການນໍາໃຊ້ຫນ້ອຍ, ການອະນຸຍາດ.
ຫນ້າທໍາອິດຂອງການເຫຼົ່ານີ້ແມ່ນ setuid bit (ຕຸລາ 4000). ເມື່ອນໍາໃຊ້ກັບໄຟລ໌ທີ່ສາມາດປະຕິບັດໄດ້, ມັນກໍານົດ ID ຜູ້ໃຊ້ທີ່ມີປະສິດທິພາບ ຈາກຜູ້ໃຊ້ທີ່ແທ້ຈິງ (ຜູ້ໃຊ້ຈິງໆແລ່ນໂຄງການ) ໄປຫາເຈົ້າຂອງໂປຼແກຼມ. ສ່ວນຫຼາຍມັກ, ອັນນີ້ຖືກມອບໃຫ້ກັບໂປຣແກມຈໍານວນຫນ້ອຍທີ່ເປັນເຈົ້າຂອງໂດຍ superuser. ເມື່ອຜູ້ໃຊ້ທົ່ວໄປແລ່ນໂຄງການທີ່ເປັນ "ຮາກ se-tuid” , ໂຄງການດໍາເນີນການດ້ວຍສິດທິພິເສດທີ່ມີປະສິດທິພາບຂອງ superuser. ນີ້ອະນຸຍາດໃຫ້ໂຄງການເຂົ້າເຖິງໄຟລ໌ແລະໄດເລກະທໍລີທີ່ຜູ້ໃຊ້ທົ່ວໄປມັກຈະຖືກຫ້າມບໍ່ໃຫ້ເຂົ້າເຖິງ. ຢ່າງຊັດເຈນ, ເນື່ອງຈາກວ່ານີ້ເຮັດໃຫ້ຄວາມກັງວົນດ້ານຄວາມປອດໄພ, ຈໍານວນຂອງໂຄງການ setuid ຕ້ອງໄດ້ຮັບການຖືເປັນຕໍາ່ສຸດທີ່ຢ່າງແທ້ຈິງ.
ການຕັ້ງຄ່າທີສອງທີ່ໃຊ້ຫນ້ອຍແມ່ນ setgid bit (octal 2000) ເຊິ່ງ, ເຊັ່ນ setuid bit, ການປ່ຽນແປງ ID ກຸ່ມທີ່ມີປະສິດທິພາບ ຈາກ ID ກຸ່ມທີ່ແທ້ຈິງ ຂອງຜູ້ໃຊ້ທີ່ແທ້ຈິງກັບເຈົ້າຂອງໄຟລ໌. ຖ້າ setgid bit ຖືກຕັ້ງຢູ່ໃນໄດເລກະທໍລີ, ໄຟລ໌ທີ່ສ້າງໃຫມ່ໃນໄດເລກະທໍລີຈະໄດ້ຮັບຄວາມເປັນເຈົ້າຂອງກຸ່ມຂອງໄດເລກະທໍລີແທນທີ່ຈະເປັນເຈົ້າຂອງກຸ່ມຂອງຜູ້ສ້າງໄຟລ໌. ອັນນີ້ເປັນປະໂຫຍດໃນໄດເລກະທໍລີທີ່ໃຊ້ຮ່ວມກັນ ເມື່ອສະມາຊິກຂອງກຸ່ມທົ່ວໄປຕ້ອງການການເຂົ້າເຖິງໄຟລ໌ທັງໝົດໃນໄດເລກະທໍລີ ໂດຍບໍ່ຄໍານຶງເຖິງກຸ່ມຫຼັກຂອງເຈົ້າຂອງໄຟລ໌.
ອັນທີສາມເອີ້ນວ່າ ໜຽວ (ຕຸລາ 1000). ນີ້ແມ່ນການຍຶດເອົາຈາກ Unix ບູຮານ, ບ່ອນທີ່ມັນສາມາດຫມາຍໄຟລ໌ທີ່ປະຕິບັດໄດ້ວ່າ "ບໍ່ສາມາດແລກປ່ຽນໄດ້." ຢູ່ໃນໄຟລ໌, Linux ບໍ່ສົນໃຈສິ່ງທີ່ຕິດ, ແຕ່ຖ້າໃຊ້ກັບໄດເລກະທໍລີ, ມັນປ້ອງກັນຜູ້ໃຊ້ຈາກການລຶບຫຼືປ່ຽນຊື່ໄຟລ໌ເວັ້ນເສຍແຕ່ວ່າຜູ້ໃຊ້ເປັນເຈົ້າຂອງໄດເລກະທໍລີ, ເຈົ້າຂອງໄຟລ໌ຫຼື superuser. ນີ້ມັກຈະຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມການເຂົ້າເຖິງໄດເລກະທໍລີທີ່ໃຊ້ຮ່ວມກັນ, ເຊັ່ນ: / tmp.
ນີ້ແມ່ນບາງຕົວຢ່າງຂອງການນໍາໃຊ້ chmod ໂດຍມີສັນຍາລັກເພື່ອກໍານົດສິດພິເສດເຫຼົ່ານີ້. ທໍາອິດກໍານົດ setuid ໃຫ້ກັບໂຄງການ:
chmod u+s ໂຄງການ
ຕໍ່ໄປ, ກໍານົດ setgid ໃຫ້ກັບໄດເລກະທໍລີ:
chmod g+s dir
ສຸດທ້າຍ, ການມອບຫມາຍຫນຽວກັບໄດເລກະທໍລີ:
chmod +t dir
ເມື່ອເບິ່ງຜົນຜະລິດຈາກ ls, ທ່ານສາມາດກໍານົດການອະນຸຍາດພິເສດ. ນີ້ແມ່ນບາງຕົວຢ່າງ. ກ່ອນອື່ນ ໝົດ, ໂປແກຼມທີ່ຕັ້ງໄວ້ແມ່ນ:
-rwsr-xr-x
ໄດເຣັກທໍຣີທີ່ມີຄຸນລັກສະນະ setgid:
drwxrwsrx
ໄດເລກະທໍລີທີ່ມີຊຸດບິດຫນຽວ:
drwxrwxrwt