Wenn ich eine Datei als nicht privilegierter Benutzer erstelle und den Berechtigungsmodus auf ändere 400
, wird sie von diesem Benutzer korrekt als schreibgeschützt angesehen:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Alles ist gut.
Aber dann kommt die Wurzel:
# [ -w somefile ] && echo rw || echo ro
rw
Was zum Teufel? Sicher, root kann in schreibgeschützte Dateien schreiben, aber es sollte nicht zur Gewohnheit werden: Best Practice würde tendenziell vorschreiben, dass ich in der Lage sein sollte, das Schreibberechtigungsbit zu testen, und wenn dies nicht der Fall ist, wurde es gesetzt auf diese Weise aus einem Grund.
Ich möchte wohl verstehen, warum dies geschieht und wie ich beim Testen einer Datei, für die das Schreibbit nicht gesetzt ist, einen falschen Rückkehrcode erhalten kann.
/etc/dhcp/dhcpd.conf
, die root gehört. Ich verwende den vom Hersteller gelieferten dhcpd
. Totale Katastrophe, oder? Die Datei wird in RCS aktiviert ist, ich bin die Automatisierung Verwendung rcsdiff
, ci
und co
weil wir Betreiber , dass Notwendigkeit, ... arbeiten. Die Berechtigungsbitprüfung ( -w
wie von detailliert beschrieben test(1)
) war eine erste Fehlerzeile, die auf der Grundlage arbeitete, dass ci -u
eine Datei schreibgeschützt bleibt. Ich lasse das fallen und gehe direkt zu rcsdiff -q
und überprüfe $?
. Undisastrous dhcpd
? Es würde im Besitz von sein dhcpd
.
bash
und veranlassten test
mich zu glauben, dass das [ -w
ist , wofür ist.
4.1.2(1)-release
) als auch RHEL7 (4.2.46(2)-release
).