Bagaimana mencegah pengguna menghapus direktori?


9

Saya mencoba "chattr + i DIRNAME", itu hebat, tetapi saya tidak dapat membuat file di DIR setelah chattr. Apa lagi yang ada untuk mencegah pengguna menghapus direktori?

root@HOST ~] mkdir test
[root@HOST ~] chattr +i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
touch: cannot touch `sth': Permission denied
[root@HOST ~/test] cd ..
[root@HOST ~] chattr -i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
[root@HOST ~/test] 

UPDATE: hanya penghapusan direktori yang penting, jadi saya masih perlu file yang akan dihapus di dalamnya


Lihatlah /tmpdan /var/tmp. Meskipun setiap pengguna dapat membuat file di sana, ia hanya dapat menghapus file / direktori sendiri, tetapi tidak pada direktori itu sendiri.
— Nils

Jawaban:


3

Jadi apa yang salah dengan chown / chmod yang sederhana ?:

cd /tmp
mkdir question
sudo chown root:root question
[sudo] password for user: 
chmod 777 ./question
touch sth
rm sth
cd ..
rm question -rf
rm: cannot remove `question': Operation not permitted

OK, izinkan saya memberi tahu Anda apa yang salah dengan ini: setiap pengguna memiliki semua akses ke setiap file dalam questiondirektori karena 777izin. Lebih baik untuk

  • buat grup baru groupadd question
  • mkdir question
  • chown root:question ./question
  • chmod 770 ./question
  • tambahkan pengguna yang harus memiliki akses ke file ke grup baru: usermod -G group user

Trik penting di sini adalah direktori tersebut memiliki pemilik yang berbeda dari pengguna mana pun yang akan mencoba menghapusnya.


2
Tergantung juga di mana direktori ini berada. Jika seseorang dari grup pertanyaan memiliki hak rwx pada direktori yang berisi direktori pertanyaan, ia akan dapat menghapusnya.
— Laurentiu Roescu

Tambahkan ekstra sudo chmod o+t ..untuk mengatur tbendera pada direktori induk. The tbendera akan melarang untuk menghapus file yang tidak dimiliki oleh pengguna. tbiasanya digunakan /tmpuntuk melakukan hal itu. UserA tidak dapat menghapus file yang dimiliki oleh UserB.
— jippie

Atau sekali lagi cukup masukkan kepemilikan yang benar bit izin pada direktori.
— jippie

Itu tidak bekerja dalam wadah buruh pelabuhan. :(
— Kirby

13

Buat file ".protected" dan lakukan sebagai root

chattr +i .protected

Anda kemudian dapat menghapus semua file kecuali .protecteddalam direktori ini, sehingga direktori tidak dapat dihapus oleh pengguna lain.


Sederhana, dan efektif. Jawaban yang bagus
— Wug

Itu tidak bekerja dalam wadah buruh pelabuhan. :(
— Kirby

1
Untuk menghapusnya, gunakan "chattr -i [nama file]" untuk menghapus atribut yang tidak dapat diubah.
— emeraldhieu

3
chattr +a

harus melakukan pekerjaan. Anda dapat membuat file di dalamnya tetapi Anda tidak akan bisa menghapusnya.


saya memperbarui pertanyaan
— gasko peter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.