rm: ไม่สามารถลบไดเรกทอรี /: ปฏิเสธการอนุญาต


17

ฉันสร้างไดเรกทอรีชื่อ "shadi" และตั้งค่าการอนุญาตนี้

sinoosh@ubuntu:/home$ ls -ld shadi
drwxr-xrwx 2 root root 4096 Jul  1 01:58 shadi

ในสถานการณ์นี้ฉันมีสิทธิ์ "อื่น ๆ " แต่ทำไมฉันไม่สามารถลบมันได้?

sinoosh@ubuntu:/home$ rm -r shadi/
rm: cannot remove ‘shadi/’: Permission denied

คำตอบ:


25

นี่คือปัญหาคือคุณไม่ได้รับอนุญาต "w" ใน/homeไดเรกทอรี ในขณะที่ลบบันทึกไฟล์ที่คุณไม่ได้เขียนไปยังไฟล์นั้น แต่คุณกำลังเปลี่ยนเนื้อหาของไดเรกทอรีที่มีไฟล์ดังนั้นการได้รับอนุญาต "w" ในไดเรกทอรีนั้นเป็นสิ่งจำเป็นหากคุณต้องการลบไฟล์ใด ๆ จากไดเรกทอรี

ภาพหน้าจอเทอร์มินัลของ "ls -ld / home"

หากฉันอยู่ในไดเรกทอรีที่มีสิทธิ์ "w" ฉันสามารถลบไฟล์ใด ๆ โดยไม่ต้องกังวลเกี่ยวกับการอนุญาตของไฟล์เอง โปรดทราบว่าไดเรกทอรีปัจจุบันของฉันคือ/home/rohithที่มีสิทธิ์ "w" และด้วยเหตุนี้ฉันสามารถลบไฟล์ใด ๆ โดยไม่คำนึงถึงสิทธิ์ของไฟล์

ภาพหน้าจอเทอร์มินัลของการลบ / home / rohith / shadi

หากไฟล์เดียวกันถูกสร้างขึ้นในไดเรกทอรี '/ home' ซึ่งไม่มีสิทธิ์ "w" ฉันจะได้ผลลัพธ์เช่นเดียวกับคุณ! :)

ภาพหน้าจอเทอร์มินัลของการพยายามลบ / home / shadi


9

สิ่งนี้เกิดขึ้นเพราะคุณไม่ได้เป็นเจ้าของไดเรกทอรีมันเป็นของกลุ่ม 'root' และกลุ่ม 'root' ดังนั้นในการลบคุณสามารถเปลี่ยนความเป็นเจ้าของแล้วลบออก (ที่นี่คุณยกระดับสิทธิ์ของคุณและกลายเป็น 'ราก' สำหรับการเป็นเจ้าของ):

sudo chown $USER:$USER ./shadi
rm -r ./shadi

หรือคุณข้ามการเป็นเจ้าของและทำsudo rmเพื่อยกระดับสิทธิ์ของคุณและกลายเป็น 'ราก' สำหรับการลบ:

sudo rm -r ./shadi

หมายความว่ามีเพียงเจ้าของเท่านั้นที่สามารถลบไฟล์ได้
Sinoosh

ใช่หรือคุณต้องการยกระดับสิทธิ์ของคุณด้วยsudoคำสั่ง สิ่งนี้จะถามรหัสผ่านของคุณจากนั้นคุณจะกลายเป็น 'รูต' สำหรับคำสั่งต่อไปนี้
Videonauth

คุณจะทำตอนนี้ถ้า "Shadi" เป็นไฟล์ฉันสามารถเอามันออกไปด้วย "sinoosh" ใช้มันไม่ได้จำเป็นต้องมี "sudo" มันไม่ทำให้ฉากสำหรับฉันทำไมมันไม่ได้ทำงานกับไดเรกทอรี
Sinoosh

6

ลองสิ่งนี้:

sudo rm -r ./shadi

การอนุญาตแสดงเจ้าของรูทและกลุ่มรูทดังนั้นคุณต้องใช้ sudo


1
ใช่คำสั่งนี้จะ ok แต่ปัญหาของฉันคือเหตุผล RM ไม่ได้ทำงานกับสิทธิ์นี้ผมมีสิทธิ์เต็มรูปแบบสำหรับไดเรกทอรีนี้ในด้านอื่น ๆ
Sinoosh

"ฉันมีสิทธิ์แบบเต็มสำหรับไดเรกทอรีนี้" ไม่คุณไม่ได้ "เขตข้อมูลอื่น" shadi ไม่ใช่ "อื่น ๆ "
Rinzwind

แต่ "sinoosh" เป็นของคนอื่นและเขาดำเนินการ "rm -r shadi"
Sinoosh

0

มันเป็นบัญชีที่ต่างกัน

คุณคาดหวังถึงความปลอดภัยจากบัญชีของคุณอย่างไรหากทุกคนมีสิทธิ์ในการลบไดเรกทอรีบ้านของคุณ

คุณไม่ได้มีwสิทธิ์ในการลบคนอื่นไดเรกทอรีบ้านโดยค่าเริ่มต้นยกเว้นถ้าพวกchmod +wมัน

นี่คือสิทธิ์ที่แตกต่างกันและตัวอย่าง (-rwxr-x--- / rwxrx):

+ - + - + - + - +
| + | ยู | กรัม | o |
+ - + - + - + - +
| R | 1 | 1 | 1 |
+ - + - + - + - +
| W | 2 | 2 | 2 |
+ - + - + - + - +
| x | 4 | 4 | 4 |
+ - + - + - + - +
| * | 7 | 5 | 0 |
+ - + - + - + - +
มันจะไปเช่นนี้1 + 2 + 4 = 7, 1 + 4 = 5, 0 = 0ดังนั้น750เช่นระบบได้รับอนุญาตในอุดมคติ เจ้าของ ( uในกรณีนี้) สามารถอ่านเขียนและเรียกใช้ไฟล์กลุ่มของเจ้าของ ( gในกรณีนี้) สามารถอ่านและดำเนินการและทุกคนอื่น ๆ ( oในกรณีนี้) ไม่สามารถทำอะไรได้ นี่คือตำนาน:
u: ผู้ใช้ปัจจุบัน (ผู้ใช้)
g: กลุ่มผู้ใช้ปัจจุบัน (กลุ่ม)
o: ไม่ใช่กลุ่มผู้ใช้ปัจจุบัน (อื่น ๆ )
r: สิทธิ์การอ่าน (อ่าน)
w: การอนุญาตให้เขียน (Write)
x: ดำเนินการอนุญาต (X-ecute)
.

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