Jeśli utworzę plik jako użytkownik nieuprzywilejowany i zmienię tryb uprawnień na 400
, ten użytkownik zobaczy go jako tylko do odczytu, poprawnie:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Wszystko dobrze.
Ale potem pojawia się root:
# [ -w somefile ] && echo rw || echo ro
rw
Co za cholera? Jasne, root może zapisywać do plików tylko do odczytu, ale nie powinien mieć z tego zwyczaju: najlepsza praktyka dyktuje, że powinienem być w stanie przetestować bit uprawnień do zapisu, a jeśli nie, to został ustawiony w ten sposób z jakiegoś powodu.
Chyba chcę zrozumieć, dlaczego tak się dzieje, i jak mogę uzyskać fałszywy kod powrotu podczas testowania pliku, w którym nie ma ustawionego bitu zapisu?
/etc/dhcp/dhcpd.conf
, której właścicielem jest root. Korzystam z dostarczonego przez dostawcę dhcpd
. Totalna katastrofa, co? Plik jest sprawdzany w RCS, automatyzuję korzystanie rcsdiff
, ci
a co
ponieważ mamy operatorów, którzy muszą ... operować. Kontrola bitów uprawnień ( -w
jak szczegółowo opisano test(1)
) miała być pierwszą linią awarii, działającą na podstawie, która ci -u
pozostawia plik tylko do odczytu. Porzucam to, idę prosto rcsdiff -q
i sprawdzam $?
. Niesmaczny dhcpd
? Byłby własnością dhcpd
.
bash
i test
doprowadziły mnie do przekonania, że po to [ -w
jest.
4.1.2(1)-release
), jak i RHEL7 (4.2.46(2)-release
).