เข้าถึงการเขียนโดยไม่ต้องอ่าน


15

เป็นไปได้หรือไม่ที่ผู้ใช้จะมีสิทธิ์เขียนเพื่อเข้าถึงไฟล์และไม่สามารถอ่านได้? มันเป็นไปได้ยังไงกัน?

ฉันลองคำสั่งต่อไปนี้:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

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

คำตอบ:


18

มันไม่ได้เป็นข้อผิดพลาด แต่เป็นฟีเจอร์TM (เช่นเดียวกับผลที่ตามมาของวิธียูนิกซ์สากลในการอนุญาต)

นอกเหนือจากการดรอปบ็อกเหมือนพฤติกรรมในกรณีของไดเรกทอรี (ตามที่อธิบาย BillThor), เครื่องเขียนเพียง แต่เป็นสิ่งที่จำเป็นสำหรับบางพิเศษ (หลอก) ไฟล์ภายใต้และ/proc /sysไฟล์ดังกล่าวใช้เพื่อตั้งค่าคุณสมบัติไดรเวอร์หรือเคอร์เนลบางอย่างหรือเรียกการทำงานของระบบ คุณไม่สามารถอ่านได้เนื่องจากใช้สำหรับการส่งสัญญาณทางเดียวเท่านั้นคุณสามารถสะท้อนข้อความ / ข้อมูลบางอย่างกับพวกเขาเท่านั้น ในการค้นหาไฟล์ดังกล่าวคุณสามารถใช้

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

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


21

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

การมีสิทธิ์ในการเขียนโดยไม่มีสิทธิ์อ่านไม่สมเหตุสมผลสำหรับไฟล์ปกติ มันสมเหตุสมผลสำหรับไฟล์พิเศษต่าง ๆ

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

2

ไม่มีนี่ไม่ใช่ข้อผิดพลาด อย่างไรก็ตามฉันไม่เห็นมันใช้กับไฟล์ทั่วไป

ฉันเห็นบ่อยที่สุดเขียนเข้าถึงได้เฉพาะในไดเรกทอรี Dropbox ผู้ใช้สามารถเพิ่มไฟล์ลงในไดเรกทอรี แต่ไม่สามารถดูไฟล์ที่มีอยู่

สำหรับการเข้าถึงการเขียนไฟล์ข้อความปกติจะเหมาะสำหรับการเข้าถึงประเภทดรอปบ็อกซ์

การตั้งค่าการเข้าถึงเพื่อเขียนอย่างเดียวสำหรับตัวคุณเองจะไม่เป็นประโยชน์อย่างมาก

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

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


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