Pertanyaan Linux - Apakah ada cara untuk mencegah / melindungi file dari dihapus bahkan oleh root?


Saya memiliki file yang sangat penting yang digunakan aplikasi di tempat kerja saya, saya perlu memastikan bahwa itu tidak menghapus apa pun, bagaimana saya bisa melakukannya?


86
2017-12-02 16:02




Buat cadangan, sehingga Anda dapat memulihkannya ... Selain itu, chattr +i mungkin membantu tetapi akan membuat file hanya-baca juga (dan dapat ditimpa chattr -i), Anda juga dapat mencoba untuk melindunginya dengan SELInux dll. - Sven♦
Bisakah root membuat proses yang bahkan root tidak bisa membunuh? - Mark Gabriel
@MarkGabriel Ya. Sebuah bom garpu. :) - reirab
Tuhan, Root, apa bedanya? - Dan Neely
Admin HW dapat datang dan menghapus disk, memusnahkannya, membakar sisa-sisa dan memberi mereka makan ke hogh. Atau, lebih baik, beberapa programmer C (++) mungkin menginduksi beberapa setan sengau. Apa pun yang penting bagi Anda, mendukungnya. Dua kali. - Pavel


Jawaban:


Ya, Anda dapat mengubah atribut file menjadi hanya-baca.

Perintahnya adalah:

chattr +i filename

Dan untuk menonaktifkannya:

chattr -i filename

Dari man chattr:

Sebuah file dengan file i atribut tidak dapat dimodifikasi: tidak dapat dihapus atau diganti namanya, tidak ada tautan yang dapat dibuat ke file ini dan tidak ada data yang dapat ditulis ke file. Hanya superuser atau proses yang memiliki file CAP_LINUX_IMMUTABLE kemampuan dapat mengatur atau menghapus atribut ini.


127
2017-12-02 16:04



Bagi yang berminat, ekuivalen bsd adalah chflags schg - Andrew Domaszek
Perhatikan bahwa pengguna dengan akses root dapat membatalkan flag itu dan kemudian menghapus file tersebut. Itu tidak mungkin terjadi secara kebetulan tetapi tidak prorect terhadap penghapusan yang disengaja. - Grant
@Grant, bukan jika Securelevel diatur cukup tinggi. Proses booting mengatur securelevel ke 2 sebelum jaringan diaktifkan, sehingga menyetel ulang benderanya membutuhkan akses mesin lokal (tetapi ini berarti file yang digunakan dalam proses boot sebelum waktu tersebut juga perlu diubah). - Simon Richter
@Grant Jika seseorang ingin membawanya ke ekstrem, Anda tidak dapat mencegah partisi dihapus atau disk dimasukkan ke dalam tungku atau peluruhan proton dalam 10 ^ 30 tahun ... - Hagen von Eitzen
@Itai Ganot man Kuharap aku sudah membacanya 4 hari yang lalu. Saya adalah pertanyaan dalam pemeriksaan yang saya ambil = / - vfbsilva


Bakar ke CD. Masukkan CD ke dalam drive CD-ROM dan akses dari sana.


80
2017-12-03 15:18



1 untuk berpikir di luar kotak. Dan, afaik, itu juga telah digunakan sebelumnya dalam beberapa keadaan (drive cdrom kotak hitam dengan cd di dalamnya dikirim ke tujuannya). Mungkin tidak tepat jika seseorang dapat memutuskan sambungan drive. - Alex Mazzariol
CIUMAN. Aku menyukainya! +1 - MonkeyZeus
Saya pikir itu jawaban yang benar untuk pertanyaan ini. Mengubah atribut file (chattr -i) tidak dapat mencegah tindakan jahat. - Bruno von Paris
Hari ini kartu SD ukuran penuh pada pembaca kartu bawaan dapat menjadi solusi yang lebih baik - konsumsi daya yang lebih rendah, akses yang lebih cepat dalam banyak kasus dan lebih tahan lama dalam penggunaan tanpa menulis. - Chris H
@ jpmc26 maka drive CD-ROM. Itu hanya baca / saja. - Thorbjørn Ravn Andersen


  1. Buat gambar sistem file.
  2. Pasang gambar.
  3. Salin file ke gambar yang di-mount.
  4. Lepas gambar dan hubungkan ulang sebagai hanya-baca.
  5. Sekarang Anda tidak dapat menghapusnya.

Contoh:

# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt 
can't delete this
# rm readonlyfolder/permanent.txt 
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system

28
2017-12-03 20:33



mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt - Kaz Wolfe
Mengambil ini sedikit lebih jauh, Anda dapat menggunakan squashfs atau cramfs yang dikompresi dan hanya-baca. Diperlukan alat khusus untuk membangun filesystem. - Zan Lynx


Anda harus membuat banyak tautan keras ke file juga. Ini harus di berbagai lokasi yang tidak dapat diakses oleh pengguna biasa.

Dengan cara ini, bahkan jika mereka berhasil mengganti perlindungan chattr Anda, data akan tetap ada dan Anda dapat dengan mudah mengembalikannya di tempat aplikasi Anda mencarinya.


6
2017-12-03 05:15



Tautan keras tidak akan melindungi konten file. - 200_success
Namun mereka akan memberikan perlindungan tambahan dari DELETION, yang merupakan pertanyaan asli. - barbecue
@barbecue Jika file tersebut dibatalkan tautannya pada nama yang dicari oleh aplikasi, tidak masalah jika konten file ada di bawah beberapa nama lain. Untuk apa pun yang mencari file dengan nama yang diharapkan, file tersebut masih telah dihapus. - α CVn


Linux memiliki apa yang disebut mengikat-mount opsi yang merupakan fitur yang agak kuat dan berguna untuk mengetahui:

%  cd $TMP && mkdir usebindmountluke && cd usebindmountluke
%  echo usebindmountluke > preciousfile
%  sudo mount -B preciousfile preciousfile
%  sudo mount -oremount,ro preciousfile
%  echo sowhat > preciousfile
zsh: read-only file system: preciousfile
%  rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system

- Apa yang sedang dilakukan di sini adalah file bind-mount ke dirinya sendiri (ya, Anda dapat melakukannya di Linux), lalu dipasang kembali dalam mode R / O. Tentu saja ini bisa dilakukan ke direktori juga.


6
2017-12-06 23:40





Orang lain telah menjawab pertanyaan Anda seperti yang Anda minta. Seperti yang disebutkan oleh @Sven dalam komentar, solusi umum untuk pertanyaan, "Bagaimana cara memastikan saya tidak pernah kehilangan file?" adalah membuat cadangan file. Buat salinan file dan simpan di banyak tempat. Selain itu, jika file tersebut sangat penting dan perusahaan Anda memiliki kebijakan untuk mencadangkan data penting dengan layanan pencadangan, Anda mungkin melihat ke dalam memiliki file ini termasuk dalam layanan.


5
2017-12-03 07:02



Yah, tentu saja file ini sedang dicadangkan secara teratur, saya hanya ingin lapisan perlindungan lain terhadap pengguna yang terkadang bekerja pada kotak dengan izin pengguna root.


Dalam komentar untuk jawabannya oleh Kevin, Jerry menyebutkan:

Yah, tentu saja file ini sedang dicadangkan secara teratur, saya hanya ingin lapisan perlindungan lain terhadap pengguna yang terkadang bekerja pada kotak dengan izin pengguna root. -

Saya akan berasumsi bahwa Anda tidak dapat mengubah praktik ini, karena ini benar-benar ide yang sangat buruk.

Semua saran tentang penggunaan perangkat hanya-baca memiliki masalah yang sama - itu membuat PITA bagi Anda untuk membuat perubahan yang sah ketika Anda perlu. Dalam kasus drive yang dapat dikunci, seperti kartu SD, Anda mengalami masalah bahwa Anda tiba-tiba rentan ketika Anda membuka kuncinya untuk membuat perubahan Anda.

Apa yang saya sarankan adalah membuat mesin lain sebagai server NFS, dan berbagi direktori dengan file penting ke mesin (s) bahwa pengguna memiliki root pada. Bagikan tunggangan sebagai hanya-baca, sehingga mesin dengan pengguna yang tidak Anda percayai tidak dapat melakukan modifikasi apa pun. Ketika Anda perlu secara sah membuat perubahan, Anda dapat terhubung ke server NFS dan membuat perubahan kami di sana.

Kami menggunakan ini untuk webservers kami, sehingga mengeksploitasi yang berhasil terhadap webserver tidak akan dapat memasukkan atau mengubah file apa pun yang kemudian akan dilayani oleh server, atau mengubah konfigurasi.

Perhatikan bahwa ini dapat dengan susah payah dilewati dengan cara yang sama seperti semua yang terkait dengan titik mount dapat berupa:

  • Buat salinan direktori yang dilindungi
  • Unmount direktori
  • Pindahkan salinan di tempat mount, atau symlink ke dalam jika mount itu tidak memiliki ruang yang cukup.

3
2017-12-07 13:04



Mengapa "benar-benar ide yang buruk" untuk mencadangkan file penting secara teratur dan juga berusaha melindungi dokumen asli dari penghapusan tidak disengaja? Dalam pertanyaan awal OP, dan dari komentar OP atas jawaban yang Anda referensikan, jelas bahwa kekhawatiran itu bukan aktivitas berbahaya, tetapi aktivitas yang tidak disengaja / tidak kompeten. - Craig
@Craig: itu ide yang buruk untuk memiliki banyak pengguna dengan root, terutama jika mereka tidak dipercaya untuk tidak mengacaukan file penting. - Joe H.
Ah ... ya tentu saja. :-) Tapi itu bukan inti dari pertanyaan OP. OP menegaskan itu di sana adalah pengguna dengan akses root yang harus dilindungi secara tidak sengaja menghapus file. - Craig
@Craig: itu mungkin bukan inti dari pertanyaan, tapi itu aku s inti masalah (masalah XY?) ... tapi saya tidak tahu apa yang mereka lakukan sebagai root, jadi jika mereka bisa menggunakan hak setuid dan / atau hak sudo yang terbatas. Dan Anda harus membaca kembali pertanyaannya, karena saya tidak menyebutkan oleh Jerry bahwa dia hanya mencoba melindungi dari penghapusan yang tidak disengaja ("saya harus memastikan itu tidak menghapus apa pun"), dan dia hanya memberikan satu tindak lanjut yang saya lihat (yang memicu respons saya). - Joe H.
Lihat tanggapan OP atas jawaban ini - Craig