Если я создаю файл как непривилегированный пользователь и изменяю режим разрешений на него 400
, он корректно воспринимается этим пользователем как доступный только для чтения:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Все хорошо.
Но потом приходит root:
# [ -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
).