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, ciet coparce 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 -uun fichier en lecture seule. J'abandonne cela, je vais directement rcsdiff -qet je vérifie $?. Pas désastreux dhcpd? Il appartiendrait à dhcpd.
                bashet testm'ont amené à croire que c'était pour ça [ -w.
                
4.1.2(1)-release) et RHEL7 (4.2.46(2)-release).