Sticky bit dan chattr

2

Saya ingin melindungi folder saya di $ HOME dari penghapusan tidak disengaja. saya melamar chattr +i pada mereka, tetapi saya perhatikan bahwa yang terakhir diterapkan secara rekursif, dengan demikian, memang folder tidak dapat dihapus tetapi juga saya tidak bisa menulis di dalamnya.

Saya juga mencoba menerapkan sedikit lengket dengan chmod 1775 dan ubah kepemilikan folder dengan chown root foldername. Biasanya, dengan bit sticky diaktifkan, hanya pemilik folder yang dapat menghapusnya tetapi, anehnya, dalam kasus saya meskipun folder tersebut dimiliki oleh root, saya dapat menghapusnya dengan pengguna normal saya.

Saya perhatikan bahwa folder pengguna di /home partisi, meskipun mereka dimiliki oleh pengguna saat ini dan miliki rwx izin untuk pemilik, mereka tidak dapat dihapus / diubah. Bagaimana ini dicapai?

Saya menggunakan Arch Linux 32-bit dan sistem file ext4.

droidlock
sumber

Jawaban:

3

Saya ingin melindungi folder saya di $ HOME dari penghapusan tidak disengaja. Saya menerapkan chattr + i pada mereka tetapi saya perhatikan bahwa yang terakhir diterapkan secara rekursif, dengan demikian, memang folder tidak dapat dihapus tetapi juga saya tidak bisa menulis di dalamnya.

Ini bukan rekursif, hanya bagaimana direktori berfungsi. Direktori pada dasarnya adalah file khusus dengan daftar nama dan inode. (Setidaknya dulu; Anda masih bisa cat direktori pada beberapa BSD.) Ketika Anda mencoba membuat, mengganti nama atau menghapus file, Anda tidak mengubah file itu sendiri, Anda mengubah direktori induknya. Jika direktori ditandai tidak dapat diubah, Anda tidak dapat mengubahnya - tetapi subdirektori masih dapat dimodifikasi.

Saya juga mencoba menerapkan sedikit sticky dengan chmod 1775 dan mengubah kepemilikan folder dengan chown root foldername. Biasanya, dengan bit sticky diaktifkan, hanya pemilik folder yang dapat menghapusnya tetapi, anehnya, dalam kasus saya meskipun folder tersebut dimiliki oleh root, saya dapat menghapusnya dengan pengguna normal saya.

Bit lengket memungkinkan menghapus objek jika Anda memiliki objek itu sendiri atau direktori induknya.

Saya perhatikan bahwa folder pengguna di partisi / home, meskipun mereka dimiliki oleh pengguna saat ini dan memiliki izin rwx untuk pemiliknya, mereka tidak dapat dihapus / diubah. Bagaimana ini dicapai?

Lihat di atas - ketika menghapus objek sistem file, Anda harus memiliki izin 'tulis' di direktori induk , bukan pada objek itu sendiri. Pada kasus ini, /home dimiliki oleh root, dan Anda hanya memiliki izin "baca" + "jalankan".

Kesimpulannya,

backup.


objek filesystem: n. file, direktori, simpul perangkat, symlink, pipa, soket Unix, atau apa pun yang bisa disimpan di sistem file.

grawity
sumber
0

Untuk membuat, menghapus, atau mengganti nama item dalam direktori, Anda harus memiliki izin menulis ke direktori. Biasanya /home tidak dapat ditulisi oleh pengguna biasa sehingga Anda tidak dapat membuat, menghapus, atau mengganti nama direktori di bawah /home.

Bit sticky pada direktori menambahkan persyaratan tambahan bahwa hanya pemilik file atau direktori (atau superuser) yang dapat menghapus atau mengganti nama item yang ada dalam direktori. Itu tidak akan mencegah Anda menghapus hal-hal yang Anda miliki. Ini dimaksudkan untuk direktori publik seperti /tmp, untuk mengizinkan siapa saja membuat file baru, dan menghapus atau mengganti nama file yang mereka miliki, tetapi untuk mencegah penghapusan atau penggantian nama file yang dimiliki oleh pengguna lain.

Membuat direktori tidak berubah ( chattr +i ) berarti tidak dapat diubah sama sekali, sehingga tidak ada file baru yang dapat dibuat di dalamnya, dan tidak ada di dalamnya yang dapat dihapus atau diganti namanya. Jika Anda ingin mencegah direktori dihapus tetapi tetap ingin dapat membuat, menghapus, dan mengganti nama file di dalamnya, Anda bisa melakukannya dengan membuat file yang tidak dapat diubah di dalam direktori, karena direktori tidak dapat dihapus selama ada ada sesuatu di dalamnya. Atau Anda dapat membuat subdirektori tanpa izin menulis yang berisi setidaknya satu file.

mark4o
sumber
0

Sedikit terlambat ke pesta tapi chattr +a (opsional -R untuk rekursif) akan memungkinkan Anda membuat file baru tetapi tidak menghapusnya.

Itu +a kekuatan bendera hanya ditambahkan ke direktori (padahal +i memaksanya untuk tidak berubah).

Apakah ini berarti bahwa ketika Anda mencoba untuk menghapus file, OS akan mencoba untuk menghapusnya dari direktori yang akan gagal, menyebabkan seluruh operasi penghapusan gagal.

arcyqwerty
sumber