$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password:
$ groups
user2 user1
$ rm testfile
rm: cannot remove `testfile': Permission denied
อะไรหายไป?
$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password:
$ groups
user2 user1
$ rm testfile
rm: cannot remove `testfile': Permission denied
อะไรหายไป?
คำตอบ:
การลบไฟล์หมายความว่าคุณกำลังทำการเปลี่ยนแปลงในไดเรกทอรีที่อยู่ในนั้นไม่ใช่ตัวไฟล์เอง กลุ่มของคุณต้องการ rw ในไดเรกทอรีเพื่อให้สามารถลบไฟล์ได้ สิทธิ์ในไฟล์นั้นใช้สำหรับการเปลี่ยนแปลงไฟล์เท่านั้น
สิ่งนี้อาจเกิดความสับสนในตอนแรกจนกระทั่งคุณคิดว่าระบบไฟล์ทำงานอย่างไร ไฟล์เป็นเพียงไอโหนดและไดเร็กทอรีอ้างถึงไอโหนด คุณจะลบการอ้างอิงถึง inode ของไฟล์นั้นในไดเรกทอรี ดังนั้นคุณจะเปลี่ยนไดเรกทอรีไม่ใช่ไฟล์ คุณอาจมีลิงค์ฮาร์ดไดรฟ์ไปยังไฟล์นั้นในไดเรกทอรีอื่นและคุณยังสามารถลบออกจากไดเรกทอรีแรกโดยไม่ต้องเปลี่ยนไฟล์จริง แต่จะยังคงอยู่ในไดเรกทอรีอื่น
ls -ld /path/to/directory
หรือls -ld .
ถ้าคุณเคยไปที่ไดเรกทอรีนั้นแล้ว
getent group 1002
เพื่อดูว่าข้อผิดพลาด verbose เพิ่มเติมหรือไม่
มีเพียงระบบเท่านั้นที่สามารถลบไฟล์ได้และหากไม่มีการอ้างอิง ผู้ใช้เพียงสามารถยกเลิกการเชื่อมโยงไฟล์ได้นั่นคือลบออกจากไดเรกทอรี คุณต้องมีสิทธิ์เขียนเพื่อเข้าถึงไดเรกทอรีเพื่อยกเลิกการเชื่อมโยงไฟล์จากมัน การยกเลิกการเชื่อมโยงไฟล์จะไม่แก้ไขไฟล์ดังนั้นการเข้าถึงเพื่อเขียนไฟล์จึงไม่เกี่ยวข้อง
775 drwxrwxr-x
ไดเรกทอรี