Jika saya membuat file sebagai pengguna yang tidak berhak, dan mengubah mode izin menjadi 400
, itu dilihat oleh pengguna itu sebagai hanya-baca, dengan benar:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Semua baik-baik saja.
Tapi kemudian root muncul:
# [ -w somefile ] && echo rw || echo ro
rw
Apa apaan? Tentu, root dapat menulis ke file read-only, tetapi seharusnya tidak membiasakannya: Praktik Terbaik cenderung mendikte bahwa saya harus dapat menguji bit izin tulis, dan jika tidak, maka ditetapkan seperti itu karena suatu alasan.
Saya rasa saya ingin memahami mengapa hal ini terjadi, dan bagaimana saya bisa mendapatkan kode pengembalian yang salah saat menguji file yang tidak memiliki bit tulis set?
/etc/dhcp/dhcpd.conf
, yang dimiliki oleh root. Saya menggunakan vendor yang disediakan dhcpd
. Bencana total, ya? File diperiksa ke RCS, saya mengotomatisasi penggunaan rcsdiff
, ci
dan co
karena kami memiliki operator yang perlu ... beroperasi. Pemeriksaan bit izin ( -w
, seperti yang dijelaskan oleh test(1)
) akan menjadi baris pertama kegagalan, bekerja atas dasar yang ci -u
membuat file hanya dapat dibaca. Saya membuang itu dan langsung ke rcsdiff -q
dan memeriksa $?
. Tidak berbahaya dhcpd
? Itu akan dimiliki oleh dhcpd
.
bash
dan test
membuat saya percaya itu untuk apa [ -w
.
4.1.2(1)-release
) dan RHEL7 (4.2.46(2)-release
).