โฟลเดอร์ที่มีสิทธิ์ในการเขียนเท่านั้นไม่มีประโยชน์ใช่มั้ย


10

หลังจากทำงานกับ Linux มาหลายปีและพบว่าตัวเองมีเวลาว่างฉันก็เลยตัดสินใจทบทวนพื้นฐาน ดังนั้นฉันจึงอ่านเนื้อหาเกี่ยวกับการอนุญาต (โดยไม่ตรวจสอบซอร์สโค้ด) และกรณีพิเศษสำหรับโฟลเดอร์และมาพร้อมกับวิธีใหม่ (สำหรับฉันอย่างน้อย ... ) วิธีคิดเกี่ยวกับการอนุญาตโฟลเดอร์ (สำหรับผู้ใช้เฉพาะ / กลุ่ม / อื่น ๆ ): ฉันนึกภาพโฟลเดอร์เป็นตารางที่มีสองคอลัมน์เช่น:

filename | inode    
foo      | 111  
bar      | 222 

อ่านได้รับอนุญาตหมายความว่าคุณสามารถอ่าน (และรายการ) คอลัมน์ด้านซ้ายของโต๊ะเขียนได้รับอนุญาตสอดคล้องกับการเพิ่มและลบรายการในตารางและดำเนินการสอดคล้องกับการอนุญาตให้ความสามารถในการแปลจากชื่อไฟล์ inode; เช่นคุณสามารถเข้าถึงเนื้อหาของโฟลเดอร์

ฉันทำการทดลองบางอย่างและผลลัพธ์ทั้งหมดสอดคล้องกับ "มุมมองโลก" ของฉันนี้ แต่ข้อสรุปหนึ่งดูเหมือนจะหลีกเลี่ยงไม่ได้: โฟลเดอร์ที่ได้รับอนุญาตd-w-------ไม่มีประโยชน์โดยสิ้นเชิง คำอธิบายเพิ่มเติม: คุณไม่สามารถแสดงรายการเนื้อหาของมันคุณไม่สามารถอ่านไฟล์ใด ๆ ที่คุณรู้ว่ามีอยู่ภายใน (เพราะคุณไม่สามารถแปลชื่อเป็น inodes) คุณไม่สามารถลบหรือเปลี่ยนชื่อหรือเพิ่มไฟล์เพราะอีกครั้งที่แปลว่าแปล และคุณไม่สามารถเพิ่มฮาร์ดลิงก์ได้ (เพราะฉันคาดเดาว่าจะหมายถึงการเพิ่มชื่อเช่นเดียวกับหมายเลขไอโหนดซึ่งหมายความว่าคุณจะรู้ทั้งคู่ซึ่งในทางกลับกันการคาดคะเนการละเมิดสิทธิ์ในการดำเนินการอีกครั้ง) . และแน่นอนถ้ามีเป็นไฟล์ในโฟลเดอร์ดังกล่าวหนึ่งแล้วคุณจะไม่สามารถลบโฟลเดอร์ที่ทั้งเพราะคุณไม่สามารถลบเนื้อหา

ดังนั้น ... ฉันอยากถามสองคำถาม:

  1. การเปรียบเทียบของฉันนี้ถูกต้องหรือเป็นความผิดพลาดครั้งใหญ่?
  2. โดยไม่คำนึงถึงคำตอบก่อนหน้ามีสถานการณ์ใดบ้างที่มีโฟลเดอร์ที่มีสิทธิ์ตามที่อธิบายไว้เหมาะสมหรือไม่?

3
อาจเป็นไปได้ว่าไม่ใช่ทุกอย่างที่มีประโยชน์ ตัวอย่างเช่นในภาษาอังกฤษเรามีคำคำเหล่านี้ประกอบด้วยตัวอักษรไม่ใช่ชุดค่าผสมทั้งหมดจะประกอบคำที่ถูกต้อง เช่น aoeuidhtns
ctrl-alt-delor

ด้วยวิธีนี้คุณไม่สามารถสร้างไฟล์ได้เช่นกัน? คุณร้องขอพื้นที่ระบบไฟล์และ inode และหลังจากคุณเขียนชื่อและ inode ในตารางไดเรกทอรีของคุณ คุณควรจะมีปัญหาที่จะมี 2 ไฟล์ที่มีชื่อเดียวกัน แต่แตกต่างกันใน inode ไดเรกทอรีเดียวกัน ...
แฮสเธอร์

@Hastur: ผมคิดว่าอย่างนั้นเหมือนกัน แต่หลังจากที่ฉันได้รับmkdir foo ; chmod 200 foo ; touch foo/bar touch: cannot touch ‘foo/bar’: Permission deniedสิ่งนี้เกิดขึ้นแม้ว่า foo / bar มีอยู่แล้ว ฉันกำลังทดสอบใน bash (Arch Linux)
wmnorth

ความผิดของฉันฉันคิดว่าคุณกำลังเขียนใหม่จากซอร์สโค้ดระบบ ... เราไม่สามารถมี สองไฟล์ที่มีชื่อเดียวกันในไดเรกทอรีเดียวกันดังนั้นจึงเป็นเหตุผลที่ห้ามมิให้สร้างความเป็นไปได้
Hastur

ใช่มันไร้ประโยชน์ การแก้ปัญหา inode นั้นต้องการ "x" และ "r" เช่นกันดังนั้นในไดเรคทอรีแม้กระทั่ง "rw" เพียงอันเดียวก็ไร้ประโยชน์
peterh - Reinstate Monica

คำตอบ:


3

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

สิทธิ์ในการเขียนไปยังไดเรกทอรีที่ไม่มีการดำเนินการจึงไม่มีประโยชน์เลยเนื่องจากไม่มีสิ่งใดที่คุณสามารถเขียนได้จริงหากคุณไม่สามารถเข้าถึงไฟล์ที่อยู่ภายใน


1
  1. การเปรียบเทียบของฉันนี้ถูกต้องหรือเป็นความผิดพลาดครั้งใหญ่?

ฉันคิดว่าถูกต้องคุณต้องได้รับอนุญาตจาก wx ก่อนจึงจะสามารถเขียนไปยังโฟลเดอร์ได้

  1. โดยไม่คำนึงถึงคำตอบก่อนหน้ามีสถานการณ์ใดบ้างที่มีโฟลเดอร์ที่มีสิทธิ์ตามที่อธิบายไว้เหมาะสมหรือไม่?

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

สถานการณ์ที่อธิบายก่อนหน้านี้มีประโยชน์ในหน่วยบังคับใช้ความเร็วอัตโนมัติ หน่วยนี้จะต้องผ่านกระบวนการตรวจสอบที่เจ้าหน้าที่ของรัฐต้องลดความเป็นไปได้ของการปลอมปนให้น้อยที่สุด หน่วยบังคับใช้ความเร็วอัตโนมัติบางหน่วยมีการ์ดหน่วยความจำ sd ภายนอกที่ระบบบันทึกการละเมิด แต่มันยังสามารถจัดเก็บไฟล์ปรับแต่ง "เวทมนต์" ที่เปลี่ยนแปลงพฤติกรรมของหน่วยที่ตรวจสอบแล้วอย่างผิดกฎหมาย ดังนั้นกระบวนการที่เขียนการลงทะเบียนการละเมิดจะต้องไม่สามารถอ่านอะไรจากการ์ดหน่วยความจำ sd

นี่คือตัวอย่างแรกกับการเขียนเท่านั้นและวิธีทำให้มันทำงานกับ wx ได้:

ติดตั้งอุปกรณ์

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

จากนั้นให้ผู้ใช้บังคับให้ลองเขียนไฟล์ใหม่

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

unmount และ remount ด้วย wx

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

ลองอีกครั้ง

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

ด้วยการกำหนดค่านี้คุณสามารถเขียนได้แล้ว

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