ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

umask – ตั้งค่าการอนุญาตเริ่มต้น

พื้นที่ อูมาสก์ คำสั่งควบคุมสิทธิ์เริ่มต้นที่กำหนดให้กับไฟล์เมื่อสร้างขึ้น ใช้สัญกรณ์ฐานแปดเพื่อแสดง หน้ากาก ของบิตที่จะลบออกจากแอตทริบิวต์โหมดของไฟล์ ลองดู:



[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 ฉัน ฉัน 0 2016-03-06 14:53 foo.txt

[me@linuxbox ~]$ ls -l foo.txt

-rw-rw-r-- 1 ฉัน ฉัน 0 2016-03-06 14:53 foo.txt


ก่อนอื่นเราลบสำเนาเก่าของ ฟู.txt เพื่อให้แน่ใจว่าเรากำลังเริ่มต้นใหม่ ต่อไปเราวิ่ง อูมาสก์ คำสั่งที่ไม่มีอาร์กิวเมนต์เพื่อดูค่าปัจจุบัน มันตอบสนองด้วยค่า 0002 (มูลค่า 0022 เป็นค่าเริ่มต้นทั่วไปอีกค่าหนึ่ง) ซึ่งเป็นค่าฐานแปดของมาสก์ของเรา ต่อไปเราจะสร้างอินสแตนซ์ใหม่ของไฟล์ ฟู.txt และสังเกตการอนุญาต

เราจะเห็นได้ว่าทั้งเจ้าของและกลุ่มได้รับอนุญาตในการอ่านและเขียน ในขณะที่คนอื่นๆ จะได้รับสิทธิ์ในการอ่านเท่านั้น เหตุผลที่โลกไม่ได้รับอนุญาตให้เขียนเป็นเพราะคุณค่าของหน้ากาก มาดูตัวอย่างกันอีกครั้ง คราวนี้ตั้งค่าหน้ากากด้วยตัวเอง:



[me@linuxbox ~]$ RM foo.txt [me@linuxbox ~]$ อูมาสก์ 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt

-rw-rw-rw- 1 ฉัน ฉัน 0 2016-03-06 14:58 foo.txt

[me@linuxbox ~]$ RM foo.txt [me@linuxbox ~]$ อูมาสก์ 0000 [me@linuxbox ~]$ > foo.txt [me@linuxbox ~]$ ls -l foo.txt

-rw-rw-rw- 1 ฉัน ฉัน 0 2016-03-06 14:58 foo.txt


เมื่อเราตั้งหน้ากากไว้ที่ 0000 (ปิดได้อย่างมีประสิทธิภาพ) เราจะเห็นว่าไฟล์นี้เขียนได้ทั่วโลก เพื่อให้เข้าใจวิธีการทำงาน เราต้องดูเลขฐานแปดอีกครั้ง หากเราใช้มาสก์และขยายเป็นไบนารี จากนั้นเปรียบเทียบกับแอตทริบิวต์ เราจะเห็นว่าเกิดอะไรขึ้น:


โหมดไฟล์ต้นฉบับ

--- rw- rw- rw-

หน้ากาก

000

000

000

010

ผล

---

ร-

ร-

NS--


ละเว้นศูนย์นำหน้าสักครู่ (เราจะไปถึงตัวเลขนั้นในไม่กี่นาที) และสังเกตว่าตำแหน่งที่ 1 ปรากฏในหน้ากากของเรามีการลบแอตทริบิวต์-ในกรณีนี้โลกเขียนอนุญาต นั่นคือสิ่งที่หน้ากากทำ ทุกๆ 1 ปรากฏในค่าไบนารีของมาสก์ แอตทริบิวต์จะไม่ได้ตั้งค่า หากเราดูค่ามาสก์ของ 0022, เราสามารถเห็นสิ่งที่มันทำ:


โหมดไฟล์ต้นฉบับ

--- rw- rw- rw-

หน้ากาก

000

000

010

010

ผล

---

ร-

NS--

NS--


อีกครั้ง โดยที่ 1 ปรากฏในค่าไบนารี แอตทริบิวต์ที่เกี่ยวข้องจะไม่ถูกตั้งค่า เล่นกับค่าบางอย่าง (ลองสามเจ็ด) เพื่อทำความคุ้นเคยกับวิธีการทำงาน เมื่อเสร็จแล้ว ให้สมาชิกใหม่เพื่อล้างข้อมูล:



[me@linuxbox ~]$ rm fo.txt; อูมาสก์ 0002

[me@linuxbox ~]$ rm fo.txt; อูมาสก์ 0002


ส่วนใหญ่เราจะไม่ต้องเปลี่ยนหน้ากาก ค่าเริ่มต้นจากการกระจายของคุณจะใช้ได้ อย่างไรก็ตาม ในสถานการณ์ที่มีความปลอดภัยสูง เราจะต้องการควบคุมมัน


สิทธิ์พิเศษบางอย่าง

แม้ว่าโดยปกติเราจะเห็นรูปแบบการอนุญาตฐานแปดที่แสดงเป็นตัวเลขสามหลัก แต่ในทางเทคนิคแล้ว การแสดงตัวเลขสี่หลักนั้นถูกต้องกว่าในทางเทคนิค ทำไม? เพราะนอกจากการอนุญาตในการอ่าน เขียน และดำเนินการแล้ว ยังมีการตั้งค่าอื่นๆ ที่ไม่ค่อยได้ใช้งานและเป็นภารกิจ

ครั้งแรกของเหล่านี้คือ setuid บิต (เลขฐานแปด 4000). เมื่อนำไปใช้กับไฟล์ปฏิบัติการ มันจะตั้งค่า ID ผู้ใช้ที่มีประสิทธิภาพ จากผู้ใช้จริง (ผู้ใช้ที่รันโปรแกรมจริง) ไปจนถึงของเจ้าของโปรแกรม ส่วนใหญ่มักจะมอบให้กับบางโปรแกรมที่ superuser เป็นเจ้าของ เมื่อผู้ใช้ทั่วไปรันโปรแกรมที่ “se-tuid root” โปรแกรมทำงานด้วยสิทธิ์ที่มีประสิทธิภาพของ superuser ซึ่งช่วยให้โปรแกรมเข้าถึงไฟล์และไดเร็กทอรีที่ผู้ใช้ทั่วไปปกติจะไม่สามารถเข้าถึงได้ เห็นได้ชัดว่า เนื่องจากสิ่งนี้ทำให้เกิดความกังวลด้านความปลอดภัย จำนวนโปรแกรม setuid จึงต้องถูกควบคุมให้เหลือน้อยที่สุด

การตั้งค่าที่ใช้น้อยครั้งที่สองคือ setgid บิต (octal 2000) ซึ่งเหมือนกับ setuid bit ที่เปลี่ยน ID กลุ่มที่มีประสิทธิภาพ จาก ID กลุ่มจริง ของผู้ใช้จริงกับเจ้าของไฟล์ หากตั้งค่าบิต setgid บนไดเร็กทอรี ไฟล์ที่สร้างขึ้นใหม่ในไดเร็กทอรีจะได้รับความเป็นเจ้าของกลุ่มของไดเร็กทอรีมากกว่าการเป็นเจ้าของกลุ่มของผู้สร้างไฟล์ สิ่งนี้มีประโยชน์ในไดเร็กทอรีที่ใช้ร่วมกันเมื่อสมาชิกของกลุ่มทั่วไปต้องการเข้าถึงไฟล์ทั้งหมดในไดเร็กทอรี โดยไม่คำนึงถึงกลุ่มหลักของเจ้าของไฟล์

ที่สามเรียกว่า เหนียวหนึบ (เลขฐานแปด 1000). นี่เป็นสิ่งที่หลงเหลือจาก Unix โบราณซึ่งเป็นไปได้ที่จะทำเครื่องหมายไฟล์ปฏิบัติการว่า "ไม่สามารถสลับได้" ในไฟล์ Linux จะไม่สนใจบิตติดหนึบ แต่ถ้าใช้กับไดเร็กทอรี จะป้องกันไม่ให้ผู้ใช้ลบหรือเปลี่ยนชื่อไฟล์ เว้นแต่ผู้ใช้จะเป็นเจ้าของไดเร็กทอรี เจ้าของไฟล์ หรือ superuser มักใช้เพื่อควบคุมการเข้าถึงไดเร็กทอรีที่ใช้ร่วมกัน เช่น / Tmp.



นี่คือตัวอย่างการใช้ chmod ด้วยสัญลักษณ์สัญลักษณ์เพื่อกำหนดสิทธิ์พิเศษเหล่านี้ ขั้นแรกให้กำหนด setuid ให้กับโปรแกรม:

chmod u+s โครงการ

ถัดไป กำหนด setgid ให้กับไดเร็กทอรี:

chmod g+s dir

สุดท้าย กำหนดบิตปักหมุดให้กับไดเร็กทอรี:

ชโมด+ที dir

เมื่อดูผลลัพธ์จาก lsคุณสามารถกำหนดสิทธิ์พิเศษได้ นี่คือตัวอย่างบางส่วน. ก่อนอื่น โปรแกรมที่เป็น setuid:

-rwsr-xr-x

ไดเร็กทอรีที่มีแอตทริบิวต์ setgid:

ดริวsrx

ไดเร็กทอรีที่มีชุดบิตเหนียว:

drwxrwxrwt


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: