ไม่สามารถอ่านไฟล์แม้ว่าจะอยู่ในกลุ่มของฉันและตั้งค่าการอนุญาตสำหรับการอ่านกลุ่ม


15

ฉันพบปัญหาแปลก ๆ ในเครื่อง unix / linux:

ฉันเป็นสมาชิกของกลุ่มลองเรียกมันว่ากลุ่ม A และไฟล์บางอย่าง (ซึ่งมีเจ้าของที่แตกต่างกัน) เป็นของกลุ่ม A เช่นกัน สิทธิ์ของไฟล์นั้นคือ

-rw-rw----

ดังนั้นฉันคาดหวังว่าฉันควรจะสามารถเปิดไฟล์นั้นได้ แต่ฉันไม่ใช่: ฉันจะได้รับข้อความแสดงข้อผิดพลาด "การอนุญาตถูกปฏิเสธ" เมื่อฉันพยายามดูเนื้อหาของไฟล์ (โดยใช้ cat)

เนื่องจากการอนุญาตดูเหมือนจะถูกต้องมีอะไรอีกที่ทำให้เกิดปัญหานี้ มีข้อ จำกัด สิทธิ์ "ทับ" ในสถานที่หรือไม่ ถ้าเป็นเช่นนั้นฉันจะรู้ได้อย่างไร?


2
สิ่งที่เกี่ยวกับการอนุญาตไดเรกทอรี?
Karlson

หากคุณอยู่ในหลายกลุ่มกลุ่มปัจจุบันของคุณถูกตั้งค่าเป็น A หรือไม่?
Code-Guru

2
@Karlson หากสิทธิ์ของไดเรกทอรีเป็นปัญหาคุณจะไม่สามารถดูสิทธิ์ของไฟล์ได้ตั้งแต่แรก
cjm

โปรดแสดงเส้นทางและชื่อไฟล์ทั้งหมดให้เราทราบ
jippie

มันอยู่ใน /home/theotheruser/somefolder/bla.txt ฉันอยู่ในหลายกลุ่ม
Lagerbaer

คำตอบ:


8

คุณออกจากระบบและกลับเข้าสู่ระบบอีกครั้งตั้งแต่คุณถูกเพิ่มในกลุ่ม A?

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

คุณสามารถทดสอบสิ่งนี้ได้โดยการล็อกอินอีกครั้งบนคอนโซลอื่นหรือผ่านทาง ssh หรือสิ่งที่ต้องการexec sudo -u $(id -u -n) -i(เพื่อฆ่าและแทนที่เชลล์ปัจจุบันด้วยเชลล์ใหม่ได้อย่างมีประสิทธิภาพ - กระบวนการพื้นหลังใด ๆ ที่เป็นของเชลล์นั้นจะถูกกำพร้า)


ไม่นั่นไม่ใช่ปัญหา ฉันออกจากระบบและกลับมาใหม่และไม่ได้แก้ไข
Lagerbaer

3

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

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

นั่นอาจเป็นคำอธิบายสำหรับมัน เฉพาะผู้ดูแลระบบของเครื่องโลคัลและ / หรือเครื่องระยะไกลเท่านั้นที่สามารถทำสิ่งนั้นได้โดยการเปลี่ยนรูปแบบการรักษาความปลอดภัยหรือการตั้งค่าเซิร์ฟเวอร์ NFS หรือโดยการลดจำนวนกลุ่มที่คุณเป็นสมาชิก


ฉันมีความรู้สึกที่แข็งแกร่งว่านี่คือเหตุผลเนื่องจากกลุ่มฉันปรากฏที่ตำแหน่ง 19 ในผลลัพธ์ของคำสั่ง "กลุ่ม" ฉันจะแสดงคำตอบนี้ให้ผู้ดูแลระบบ sys และดูว่ามันจะช่วย :)
Lagerbaer

คุณจะเปลี่ยน "รูปแบบความปลอดภัย" ใน NFS เพื่อแก้ไขปัญหานี้ได้อย่างไร
Danny

3

/home/usernameในขณะที่คุณทราบในความคิดเห็นคุณไม่ได้มีสิทธิ์ในการอ่าน แต่หากต้องการอ่าน/home/username/path1/path2/fileคุณต้องมีสิทธิ์ในการใช้งานสำหรับพา ธ ทั้งหมด

ในการแก้ไขปัญหานี้ให้เรียกใช้namei -l /home/username/path1/path2/fileในฐานะผู้ใช้ที่อ่านไฟล์


นั่นคือปัญหาในกรณีของฉัน ฉันต้องการให้สิทธิ์ผู้ใช้อื่นเพื่อดำเนินการในโฟลเดอร์ย่อยของ dir บ้านของฉัน แต่ dir บ้านของฉันมีการเข้าถึง 700 ดังนั้นพวกเขาจึงได้รับ "ปฏิเสธการอนุญาต" สำหรับคำสั่งใด ๆ
Cerberus

1

อาจเป็น ACL ดู

getfacl the-file

อาจเป็นได้ว่าด้วยเหตุผลบางอย่างกลุ่มที่คุณตั้งใจจะอยู่ไม่ได้รับการตั้งค่าอย่างเหมาะสม ตรวจสอบกับ

id -a

เกี่ยวกับอะไร

namei -xl "$(readlink -f the-file)"

getfattr -dm- the-file

sudo lsattr the-file

ระบบไฟล์นั้นอยู่ในประเภทใด?

มี apparmor, SELinux หรือระบบควบคุมการเข้าออกที่จำเป็นในระบบหรือไม่?

คุณแน่ใจหรือว่าไฟล์ไม่มีข้อความ "สิทธิ์ถูกปฏิเสธ" ใช่ไหม ;-)?


ไม่ไม่มี ACL พิเศษมันแค่ทำซ้ำสิ่งที่ธงมาตรฐานบอกฉันและ id -a บอกฉันว่าฉันอยู่ในกลุ่มของไฟล์นั้น
Lagerbaer

สิ่งประหลาดคือฉันสามารถดูไฟล์ของผู้ใช้คนอื่นที่อยู่ในกลุ่ม B ซึ่งฉันยังเป็นสมาชิก ...
Lagerbaer

ระบบไฟล์ดูเหมือนจะเป็น nfs4 namei ให้ฉัน / และบ้านเป็นของรูท, รูท / home / ชื่อผู้ใช้ที่เป็นของชื่อผู้ใช้และกลุ่ม X (ซึ่งฉันไม่ใช่สมาชิก) จากนั้นส่วนที่เหลือคือ / home / ชื่อผู้ใช้ / path1 / path2 / ไฟล์ที่ path1 เป็นชื่อผู้ใช้และกลุ่ม X และ path2 เป็นชื่อผู้ใช้และ กลุ่ม A ซึ่งฉันเป็นสมาชิกอยู่
Lagerbaer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.