โดยไม่ใช้ sudo จะดีกว่าไหม?
โดยไม่ใช้ sudo จะดีกว่าไหม?
คำตอบ:
ลอง:
chattr +i filename
การทำเช่นนี้จะทำให้ไฟล์ไม่สามารถลบได้แม้กระทั่งกับroot
ผู้ใช้ - ใช้ด้วยความระมัดระวัง
touch test && chattr +i test
มันผิดพลาด; chattr: Operation not permitted while setting flags on test
. คุณต้องการsudo
สิ่งนี้ ถัดจากนั้น: ยังคงเป็นไปได้ที่จะลบไฟล์: ใช้sudo chattr -i test && rm test
งานได้
ไม่เป็นไปไม่ได้ เป็นไปไม่ได้สำหรับผู้ใช้ทั่วไปที่จะลบไฟล์: แน่นอน
คุณจะต้องsudo
ป้องกันไม่ให้ผู้ใช้ลบไฟล์ ผู้ดูแลระบบของคุณจะ - สามารถ - ลบไฟล์ได้
sudo chattr +i test
สามารถป้องกันการลบ sudo
แต่ไม่จำเป็นต้องใช้ ง่าย ๆsudo chattr -i test
ทำให้สามารถลบไฟล์ได้ ไม่มีผู้ใช้อื่นที่ไม่ใช่ผู้ดูแลระบบสามารถchattr
ใช้ได้
และ ... เพียงรีบูตเครื่องและเข้าสู่โหมดช่วยเหลือจะอนุญาตให้บุคคลนั้นสามารถลบไฟล์นั้นได้ มันจะเป็นความเสี่ยงด้านความปลอดภัยหากมีวิธีการที่จะไม่สามารถลบไฟล์
มันค่อนข้างหยาบ แต่ก็ใกล้ - ถ้าคุณลบสิทธิ์การเขียนในไดเรกทอรีไฟล์ที่อยู่ภายในจะไม่สามารถลบได้ และไม่จำเป็น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 มีหลายวิธีรอบตัว
ในการลบไฟล์คุณต้องมีสิทธิ์เขียนไปยังไดเรกทอรีทั้งหมดที่เชื่อมโยงกับไฟล์ หากต้องการยกเลิกการเชื่อมโยงจากไดเรกทอรีเดียวคุณต้องมีสิทธิ์เขียนไปยังไดเรกทอรีนั้น
ดังนั้นตราบใดที่คุณให้สิทธิ์การเขียน (หรือแม้กระทั่งความเป็นเจ้าของ) ให้กับไฟล์ แต่ไม่ได้อยู่ในไดเรกทอรีหรือไดเรกทอรีที่ไฟล์นั้นเชื่อมโยงอยู่ไฟล์นั้นจะไม่สามารถลบได้
วิธีที่ดีที่สุดในการทำให้สำเร็จคือการเชื่อมโยงไฟล์นั้นไปยังไดเรกทอรีที่เป็นของ root และไม่มีใครเขียนได้ คุณสามารถทำให้มันเป็นของคุณแทนซึ่งจะหมายถึงทั้งคุณและรูทสามารถลบได้
ซึ่งจะยังอนุญาตให้ผู้ใช้รายอื่นเชื่อมโยงไฟล์นั้นไปยังไดเรกทอรีอื่นและยกเลิกการเชื่อมโยงจากที่นั่นหลังจากนั้น แต่พวกเขายังคงไม่สามารถลบไฟล์ได้เนื่องจากพวกเขาจะสามารถยกเลิกการเชื่อมโยงจากไดเรกทอรีของคุณเอง
โปรดทราบว่าเพื่อให้สามารถทำงานได้อย่างสมบูรณ์สิทธิ์ในการเขียนของทุกองค์ประกอบของพา ธ ไปยังไฟล์จะต้องมีการควบคุม เพราะเช่นถ้าไฟล์เป็น/a/b/the-file
และคุณ/a/b
ไม่ได้เขียนโดยใคร แต่ทุกคนมีการเข้าถึงการเขียน/a
จากนั้นพวกเขาสามารถเปลี่ยนชื่อ/a/b
เป็นอย่างอื่นและสร้างของพวกเขาเอง/a/b
และสร้างของพวกเขาที่/a/b/the-file
นั่น