Jawaban lain di sini mungkin akan berfungsi. Secara khusus, solusi symlink mungkin akan menjadi solusi termudah. Saya menawarkan ini terutama untuk kelengkapan.
Solusi yang melibatkan mknod
(atau cp -a
) menjadi bermasalah jika sistem file yang berisi file tidak mendukung perangkat (misalnya, sudah terpasang dengan nodev
opsi, misalnya). Dan tentu saja, tautan keras antar sistem file tidak akan berfungsi.
Alternatif untuk tautan keras atau membuat simpul perangkat baru adalah dengan menggunakan bind mounts, yang memungkinkan Anda memasang file atau direktori dari satu bagian dari susunan sistem file Anda ke yang lain. Jadi, misalnya, Anda dapat menjalankan:
mount -o bind /dev/null /path/to/log.txt
Ini sangat mirip dengan tautan keras, tetapi:
- Itu dapat beroperasi di seluruh filesystem (karena itu tidak didasarkan pada inode filesystem seperti hard link)
- Ini bekerja pada sistem file read-only (karena Anda sebenarnya tidak memodifikasi sistem file)
Untuk contoh lengkap:
bash-4.3# ls -l /var/log/boot.log
-rw-r--r--. 1 root root 7436 Dec 19 10:00 /var/log/boot.log
bash-4.3# mount -o bind /dev/null /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log
bash-4.3# echo words words words > /var/log/boot.log
bash-4.3# ls -l /var/log/boot.log
crw-rw-rw-. 1 root root 1, 3 Dec 19 09:58 /var/log/boot.log
chmod -w log.txt
?