Je suis tombé sur un comportement de permission surprenant (pour moi) sur FreeBSD. Supposons que j'opère en tant qu'utilisateur non root . Je crée un fichier, définit son autorisation en lecture seule, puis j'essaye d'y écrire:
$ touch f
$ chmod 400 f
$ ls -l f
-r-------- 1 user wheel f
$ echo a >> t
t: Permission denied.
Jusqu'ici tout va bien. Maintenant, je fais la même chose que root et il écrit dans le fichier:
# ls -l f2
-r-------- 1 root wheel f2
# echo a >> f2
# echo $?
0
Est-ce un bug ou un comportement voulu? Puis-je supposer en toute sécurité que cela fonctionnerait ainsi sur n'importe quel Unix et Linux?
files
permissions
root
arrowd
la source
la source
CAP_DAC_OVERRIDE
peut le faire. Sur presque tous les systèmes Linux, cela signifie que root peut le faire, c'est donc intentionnel. Je ne peux pas parler pour la partie FreeBSD mais j'imagine qu'ils ont une configuration similaire.chmod
il ne peut pas écrire dans le fichier.touch somefile; chmod 0000 somefile; chmod 0644 somefile
tant qu'utilisateur normal.Réponses:
Il est normal de
root
pouvoir remplacer les autorisations de cette manière.Un autre exemple est la
root
possibilité de lire un fichier sans accès en lecture:Certains systèmes ont le concept de fichiers immuables . par exemple sur FreeBSD:
Maintenant, même
root
ne peut pas écrire dans le fichier. Mais, bien sûr,root
peut supprimer le drapeau:Avec FreeBSD, vous pouvez aller plus loin et définir un indicateur de noyau pour éviter
root
de supprimer l'indicateur:Maintenant, personne, même pas, ne
root
peut modifier ce fichier.(Le système doit être redémarré pour réduire le niveau de sécurité).
la source
chattr +i tst
définit l' attribut immuable .Oui, c'est très normal. root n'a pas de limites en lecture / écriture (avec très peu d'exceptions), car il est le root.
la source