Si je crée un fichier en tant qu'utilisateur non privilégié et que je change le mode d'autorisation en 400
, il est correctement vu en lecture seule par cet utilisateur:
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
Tout est bien.
Mais la racine arrive:
# [ -w somefile ] && echo rw || echo ro
rw
Que diable? Bien sûr, root peut écrire dans des fichiers en lecture seule, mais il ne devrait pas en prendre l'habitude: les meilleures pratiques auraient tendance à dicter que je devrais pouvoir tester le bit de permission d'écriture, et si ce n'est pas le cas, il a été défini de cette façon pour une raison.
Je suppose que je veux comprendre à la fois pourquoi cela se produit et comment puis-je obtenir un faux code retour lors du test d'un fichier qui n'a pas le bit d'écriture défini?
/etc/dhcp/dhcpd.conf
, qui appartient à root. J'utilise le fournisseur fourni dhcpd
. Catastrophe totale, hein? Le fichier est archivé dans RCS, j'automatise l'utilisation de rcsdiff
, ci
et co
parce que nous avons des opérateurs qui doivent ... fonctionner. La vérification des bits d'autorisation ( -w
, comme détaillé par test(1)
) allait être une première ligne d'échec, fonctionnant sur la base d' ci -u
un fichier en lecture seule. J'abandonne cela, je vais directement rcsdiff -q
et je vérifie $?
. Pas désastreux dhcpd
? Il appartiendrait à dhcpd
.
bash
et test
m'ont amené à croire que c'était pour ça [ -w
.
4.1.2(1)-release
) et RHEL7 (4.2.46(2)-release
).