เป็นไปได้ไหมที่จะสร้างไฟล์ที่มีสิทธิ์แบบเต็มสำหรับทุกคน แต่เป็นไปไม่ได้ที่จะลบ?


15

โดยไม่ใช้ sudo จะดีกว่าไหม?


2
พระเจ้ารากสิ่งที่แตกต่างคืออะไร? ars.userfriendly.org/cartoons/?id=19981111 ในทางปฏิบัติไฟล์ที่แม้แต่รากไม่สามารถลบได้ในภายหลังจะเป็นนักเขียนมัลแวร์ที่ฝัน
แดนเล่นซอโดย Firelight

ฉันยอมรับการจัดรูปแบบ @DanNeely Plus เป็นรูปแบบหนึ่งของการลบไฟล์ด้วย)
Rinzwind

คำตอบ:


3

ลอง:

chattr +i filename

การทำเช่นนี้จะทำให้ไฟล์ไม่สามารถลบได้แม้กระทั่งกับrootผู้ใช้ - ใช้ด้วยความระมัดระวัง


5
เมื่อทำtouch test && chattr +i testมันผิดพลาด; chattr: Operation not permitted while setting flags on test. คุณต้องการsudoสิ่งนี้ ถัดจากนั้น: ยังคงเป็นไปได้ที่จะลบไฟล์: ใช้sudo chattr -i test && rm testงานได้
Rinzwind

23

ไม่เป็นไปไม่ได้ เป็นไปไม่ได้สำหรับผู้ใช้ทั่วไปที่จะลบไฟล์: แน่นอน

  1. คุณจะต้องsudoป้องกันไม่ให้ผู้ใช้ลบไฟล์ ผู้ดูแลระบบของคุณจะ - สามารถ - ลบไฟล์ได้

  2. sudo chattr +i testสามารถป้องกันการลบ sudoแต่ไม่จำเป็นต้องใช้ ง่าย ๆsudo chattr -i testทำให้สามารถลบไฟล์ได้ ไม่มีผู้ใช้อื่นที่ไม่ใช่ผู้ดูแลระบบสามารถchattrใช้ได้

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


8

มันค่อนข้างหยาบ แต่ก็ใกล้ - ถ้าคุณลบสิทธิ์การเขียนในไดเรกทอรีไฟล์ที่อยู่ภายในจะไม่สามารถลบได้ และไม่จำเป็นsudoถ้าคุณเป็นเจ้าของ:

=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme 
=^_^= izkata@izein:~$ cat test/delme 
Hello
=^_^= izkata@izein:~$ rm test/delme 
rm: cannot remove `test/delme': Permission denied

ดังนั้นคุณสามารถกำหนดสิทธิ์ในไฟล์เองได้ตามที่คุณต้องการ

นอกจากนี้ตามที่ระบุไว้โดย @Rinzwind มีหลายวิธีรอบตัว


ดูเหมือนว่าสิ่งที่ OP ต้องการ (แม้ว่าทำไมพวกเขาต้องการฉันไม่แน่ใจ) ผู้ใช้สามารถอ่านเปลี่ยนแปลงและเรียกใช้ไฟล์ แต่ไม่สามารถยกเลิกการเชื่อมโยง (ลบ) พวกเขา
Eliah Kagan

8

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

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

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

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

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

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