การอนุญาตของไฟล์ทำงานอย่างไร


37

คุณสามารถอธิบายแนวคิดหลักและเครื่องมือบรรทัดคำสั่งที่ใช้เพื่อจัดการสิทธิ์การใช้ไฟล์ได้หรือไม่

คำตอบ:


23

แต่ละไฟล์มีสิทธิ์สำหรับสามหมวดหมู่ที่แตกต่างกัน:

  • เจ้าของไฟล์
  • กลุ่มที่เกี่ยวข้องกับไฟล์และ
  • คนอื่น ๆ.

สิทธิ์หมายถึงสิทธิ์ในการอ่านไฟล์สิทธิในการเขียนไฟล์หรือสิทธิในการเรียกใช้ไฟล์ในกรณีของสคริปต์หรือโปรแกรม

บน CLI คุณสามารถ

  • เปลี่ยนเจ้าของด้วยchownเช่นchown guillermooo
  • เปลี่ยนกลุ่มด้วยchgrpเช่นchgrp root
  • เปลี่ยนสิทธิ์ด้วยchmodเช่นchmod u+w filename.ext(เพิ่มสิทธิ์การเขียนสำหรับเจ้าของไฟล์filename.ext)

หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับแต่ละของเครื่องมือเหล่านี้เปิด terminal และพิมพ์เช่นman [tool]man chmod


8
เป็นเรื่องยุ่งยากเล็กน้อยเกี่ยวกับไดเรกทอรี - จำเป็นต้องมีสิทธิ์ดำเนินการเพื่อเข้าถึงเนื้อหาของไดเรกทอรี ซึ่งหมายความว่า (ตัวอย่าง) ในการอ่านหรือเขียนไฟล์คุณจำเป็นต้องเรียกใช้งานการเข้าถึงไดเร็กทอรีที่มีไฟล์รวมถึงสิทธิ์ที่เหมาะสมของไฟล์เอง สิ่งนี้แทบไม่เคยเกิดขึ้นเลย แต่นั่นเป็นเหตุผลว่าทำไมจึงมีการบันทึก / เข้าใจไม่ดี!
adamnfish

ฮะ. คุณถูก. ฉันจะแก้ไขในวันพรุ่งนี้เมื่อฉันง่วงนอนน้อยลง
ParanoiaPuppy

1
chown guillermoooไม่ควรเป็นเช่นนี้chown guillermooo filename?
Zeynel

32

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

สิทธิ์ของไฟล์

Ubuntu ได้สืบทอดแนวคิดของการอนุญาตจาก Unix เมื่อไฟล์หรือไดเรกทอรีมีสามงานที่เราสามารถอนุญาตหรือปฏิเสธ:

  • r (อ่าน) ไฟล์ / ไดเร็กทอรีอาจถูกเปิดเพื่อให้สามารถอ่านได้
  • w (เขียน) ไฟล์ / ไดเร็กทอรีอาจถูกเปิดเพื่อการเข้าถึงการเขียน / แก้ไข
  • อาจทำการเรียกใช้ไฟล์x (รัน) เนื่องจากโปรแกรม / ไดเรกทอรีอาจถูกส่งผ่าน

(การสำรวจไดเรกทอรีหมายถึงการใช้เป็นส่วนหนึ่งของชื่อพา ธ ดูที่https://unix.stackexchange.com/a/13891หรือhttps://unix.stackexchange.com/questions/21251สำหรับคำอธิบายเพิ่มเติม)

นอกจากนี้เรามีสามกรณีที่เราอนุญาตให้:

  • u (ผู้ใช้) เจ้าของไฟล์ได้รับการอนุญาตใด ๆ
  • g (กลุ่ม) กลุ่มไฟล์ที่เป็นของได้รับอนุญาต
  • o (อื่น ๆ ) อื่น ๆ ทั้งหมดได้รับอนุญาต

ตอนนี้เพื่อให้ได้ชุดของการเรียงลำดับเหล่านี้เราใช้ระบบไบนารีที่แต่ละบิตกำหนดสิทธิ์ สามารถแสดงได้ดีที่สุดในตารางต่อไปนี้

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

ตอนนี้ถ้าเราต้องการตัวอย่าง

ก) เจ้าของไฟล์ (= ผู้ใช้) มีอาอี๊ด, Wพระราชพิธี, และ e x ecute อนุญาต
ข) ไฟล์ของกลุ่มได้รับอาอี๊ดและ e x ecute สิทธิ์และ
ค) คนอื่น ๆ ทุกคนควรจะมีเพียงRเข้าถึงอี๊ด

จากนั้นการอนุญาตไฟล์ผลลัพธ์จะเป็น:

 u   g   o
rwx r-x r--

เพื่อให้ได้สิ่งนี้ในจำนวนฐานแปดเช่น สำหรับchmodคำสั่งหรือเมื่อเราต้องเข้าใจข้อผิดพลาดเราจำเป็นต้องกรอกตารางด้านบนดังต่อไปนี้:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

ต้องเพิ่มแต่ละหมายเลขสิทธิ์เพื่อสรุปรวมสำหรับผู้ใช้ (4 + 2 + 1 = 7) กลุ่ม (4 + 0 + 1 = 5) และอื่น ๆ (4 + 0 + 0 = 4) หมายเลขผลลัพธ์คือ:

 u   g   o
 7   5   4

ขณะนี้เรามีสองตัวเลือกในการเปลี่ยนบิตสิทธิ์ด้วยchmod:

chmod u+rwx g+rx o+r filename

หรือง่ายกว่ามากด้วย

chmod 751 filename

คำสั่งทั้งสองจะทำเช่นเดียวกัน

สิทธิ์เริ่มต้นของไฟล์ที่สร้างขึ้นใหม่ในบ้านของเราจะเป็น 664 (-rw-rw-r--)

หากเราต้องการให้ไฟล์ทำงานได้เป็นโปรแกรมเราจะต้องเปลี่ยนการอนุญาตนี้

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

  • เมื่อคัดลอกไฟล์ไปที่บ้านของเรามันจะสูญเสียสิทธิ์ซึ่งจะถูกแทนที่ด้วยสิทธิ์เริ่มต้นของเราเอง (เว้นแต่ว่าเราคัดลอกโดยใช้ตัวเลือกขั้นสูงเช่นตัวเลือกการเก็บถาวร)

  • นอกจากนี้โปรดทราบว่าไฟล์อาจได้รับอนุญาตจากจุดเชื่อมต่อ ตัวเลือกการเมานต์ สิ่งนี้มีความสำคัญเมื่อทำการติดตั้งไดรฟ์ที่ฟอร์แมต Windows ซึ่งไม่รองรับสิทธิ์ Unix

ผู้ใช้และกลุ่ม

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

ทุกครั้งที่เราสร้างไฟล์เราจะเป็นเจ้าของไฟล์และกลุ่มของไฟล์จะเป็นเราด้วย ด้วยls -lเราสามารถดูสิทธิ์การเป็นเจ้าของและกลุ่มตามที่เห็นได้จากผลลัพธ์ตัวอย่างต่อไปนี้:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • เราได้รับอนุญาตให้เปลี่ยนสิทธิ์กลุ่มหรือความเป็นเจ้าของไฟล์ที่เป็นของเรา

หากเราไม่ใช่เจ้าของไฟล์เราจะได้รับPermission deniedข้อผิดพลาด เฉพาะ root เท่านั้นที่สามารถเปลี่ยนแปลงสิ่งนี้สำหรับไฟล์ทั้งหมด นี่คือเหตุผลที่เราต้องใช้sudoเมื่อแก้ไขการอนุญาตของไฟล์ที่ไม่ใช่ของเรา มีคำสั่งในตัวสองคำสั่งchownสำหรับผู้ใช้และchgrpกลุ่ม

หากต้องการเปลี่ยนความเป็นเจ้าของไฟล์จากใครเป็นtakkatเราอาจใช้คำสั่งนี้:

sudo chown takkat testfile

หากต้องการเปลี่ยนกลุ่มของไฟล์ที่takkatเราออก

sudo chgrp takkat testfile

อ่าน manpages ของคำสั่งสำหรับรายละเอียดและตัวเลือกเพิ่มเติม นอกจากนี้ยังมีคำแนะนำที่ประณีตยิ่งขึ้นสำหรับการอ่านเพิ่มเติม:

ค้นหาคำถามที่เกี่ยวข้องได้ที่นี่:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.