Якщо я створюю файл як непривілейований користувач і змінюю режим дозволів на такий 400
, він вважає, що цей користувач є правильним лише для читання:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Все добре.
Але потім з'являється корінь:
# [ -w somefile ] && echo rw || echo ro
rw
Якого біса? Звичайно, root може писати файли лише для читання, але це не має звички: найкраща практика може диктувати, що я маю змогу перевірити біт дозволу на запис, а якщо це не так, тоді він був встановлений таким чином з причини.
Я думаю, я хочу зрозуміти і те, чому це відбувається, і як я можу отримати помилковий код повернення при тестуванні файлу, на якому не встановлено біт запису?
/etc/dhcp/dhcpd.conf
, яким належить root. Я використовую постачальника dhcpd
. Загальна катастрофа, так? Файл перевіряється в RCS, я автоматизую використання rcsdiff
, ci
і co
тому, що у нас є оператори, яким потрібно ... працювати. Перевірка бітів дозволів ( -w
як детально описано test(1)
) мала бути першим рядком відмови, працюючи на основі, що ci -u
залишає файл лише для читання. Я кидаю це і пряму до rcsdiff -q
та перевіряю $?
. Нечесно dhcpd
? Це було б у власності dhcpd
.
bash
і test
змусило мене повірити, що це і [ -w
є.
4.1.2(1)-release
), і RHEL7 (4.2.46(2)-release
).