Cara membuat file bahkan pengguna root tidak bisa menghapusnya

13

Bagaimana cara membuat file yang bahkan pengguna root tidak bisa menghapusnya?

Kumar
sumber
9
Sementara jawaban tante harus mencakup pertanyaan Anda, satu meta-komentar untuk itu: Akan lebih mudah untuk menjawab jika Anda menambahkan alasan Anda untuk pertanyaan Anda. Mungkin ada solusi untuk masalah Anda yang tidak terdiri dari mencegah penghapusan file?
fschmitt

Jawaban:

33

Jawaban sederhana: Anda tidak bisa, root dapat melakukan segalanya.

Anda dapat mengatur atribut "i" dengan chattr (setidaknya jika Anda menggunakan ext {2,3,4}) yang membuat file tidak dapat diubah tetapi root hanya dapat menghapus atribut dan menghapus file.

Lebih kompleks (dan solusi peretasan yang jelek): Masukkan direktori yang Anda inginkan tidak dapat diubah untuk root pada server jauh dan pasang melalui NFS atau SMB. Jika server tidak menawarkan izin tulis yang mengunci akun root lokal. Tentu saja akun root lokal hanya dapat menyalin file secara lokal, unmount hal-hal yang jauh, meletakkan salinan di tempatnya dan mengubahnya.

Anda tidak dapat mengunci root dari menghapus file Anda. Jika Anda tidak dapat mempercayai root Anda untuk menjaga file tetap utuh, Anda mengalami masalah sosial, bukan masalah teknis.

tante
sumber
Pertanyaan ini ditanyakan oleh pewawancara kepada saya. Saya tidak tahu jawabannya. Saya memintanya untuk menjawab. Dia mengatakan itu mungkin dan mencari solusi sendiri.
Kumar
12
suatu hari nanti Anda juga akan menjadi pewawancara dan dapat mengajukan pertanyaan Anda sendiri yang tidak masuk akal: "dapatkah root membuat file begitu besar sehingga ia tidak bisa mvmelakukannya?" (Yang merupakan lelucon lumpuh berdasarkan pada teosofi Kristen, dan lelucon yang mengerikan jika Anda tidak terbiasa dengan bidang)
msw
5
@ msw: Orang bisa berargumen bahwa itu adalah lelucon yang mengerikan bahkan jika Anda terbiasa dengan bidang tersebut.
Matthew Crumley
@matthew crumley: bersalah seperti yang dibebankan :)
msw
@ msw: Saya baru tahu bahwa Anda bahkan mengakui itu adalah lelucon yang payah. Dan FWIW, saya suka (beberapa) lelucon jadi saya benar-benar menyukainya. Ini semakin jauh dari topik :)
Matthew Crumley
34

Letakkan di CD-rom! ;)

(ini seharusnya komentar tapi saya tidak bisa berkomentar ...)

laurent
sumber
Ada perasaan di balik batas reputasi untuk komentar ;-) Hanya dorongan kecil yang merangsang pikiran. tidak ada nyala api ;-)
echox
6
+1 Tapi itu akan berhasil.
Richard Holloway
1
Ini dan jawaban oleh @mouviciel adalah satu-satunya solusi yang benar. Bahkan @root Mahakuasa masih terikat oleh aturan yang ditetapkan oleh perangkat keras.
Lie Ryan
15

Letakkan file Anda pada sistem file yang hanya baca. Ini mungkin FS jarak jauh di mana root tidak lagi root, CD-ROM atau perangkat yang dapat dilepas yang dapat dilindungi dari penulisan, misalnya kartu SD.

mouviciel
sumber
2

Dulu saya menulis patch kernel (ke 2.2.ancient) di mana mencoba untuk menghapus file yang disebut SELFDESTRUCT membunuh proses panggilan. Ini dijaga terhadap "rm -rf *" yang tidak disengaja.

pjc50
sumber
dahulu kala dan jauh sekali. Bagaimana Anda sebenarnya melakukannya (perintah)?
Michael Durrant
1

Kamu bisa memakai chattr +i untuk membuat file tidak berubah.

Tentu saja pengguna yang mengerti dengan akses root masih bisa menggunakan chattr -i untuk menghapus atribut yang tidak dapat diubah dan kemudian menghapus file, tetapi mereka dapat membatalkan salah satu dari upaya lain untuk memblokir akses yang tercantum di sini juga.

Saya berpendapat bahwa chattr adalah cara Unix yang benar untuk melakukan ini.

jeremyjjbrown
sumber