Le 13/10/2024 à 20:58, didier gaumet a
écrit :
Bon, alors rappel: les ACL et moi ça fait deux, j'ai lu la doc en
diagonale pour comprendre un peu de quoi ça parle
( manpages de setfacl(1) et acl(5), page web
https://www.malekal.com/acl-access-control-lists-linux/#Modifier_le_mask_des_ACL
)
ce que je retiens de ton problème, a priori, si j'ai compris
correctement (pas sûr)
- tu établis des ACL de base (par opposition aux ACL étendues et
ACL par défaut)
- les ACL de base et les permissions/attributs de fichiers sont
équivalentes et interdépendantes (un chmod modifie le résultat
d'un getfacl et un setfacl (pour ACL de base) modifie le résultat
d'un ls)
- les ACL de base étant équivalentes aux permissions/attributs de
fichier, on peut les modifier mais pas les détruire (de même qu'on
ne peut modifier par chmod les permissions d'un fichier pour
rendre impossible lecture/écriture/exécution mais il n'est pas
possible de supprimer le système de permissions de fichiers sur ce
fichier)
donc il semblerait que dans ton cas pratique ce que tu veux c'est
modifier les ACL de base pour les remettre à une valeur
équivalente aux permissions de ton fichier à l'origine.
par contre si tu voulais supprimer des ACL étendues ou des ACL par
défaut, il n'y aurait pas de problème
Extrait du man de setfacl:
======================================================================
AUTOMATICALLY CREATED ENTRIES
Initially, files and directories contain only the three base ACL
entries for the owner, the group, and others. There are some rules
that need to be satisfied in order for an ACL to be valid:
The three base entries cannot be removed. There must be
exactly one entry of each of these base entry types.
======================================================================
Tout ça me passant largement au-dessus de la casquette, j'ai
peut-être rien compris ;-)
Voilà tout à fait j'ai rien compris : je crois avoir lu que
setfacl ne peut pas modifier les droits CHMOD.
C'est une surcouche ACL que l'on applique qui n'a aucun droit sur
les droits du propriétaire du fichier. Donc, les droits du
propriétaire du fichier n'ont en aucun cas a changer.
Les ACL peuvent donc appliquer des droits pour élever ou
restreindre les droits de groupe ou d'utilisateur.
Je comprend cela de la sorte, on applique une couche de droit
supplémentaire, qui n'a pas a changer la valeur réelle du CHMOD
qui a été appliqué.
Il semblerait que cela ne fonctionne pas ainsi, puisque l'on peut
voir que le fichier a subit des modifications de ces droits, suite
à l'application d'un masque puis à son retrait.
On passe de 644 à 604.
# Le fichier a des droits en 644.
chmod 644 ip.php
ls -la ip.php
-rw-r--r--
getfacl ip.php
# file: ip.php
# owner: joomla-pool
# group: joomla-pool
user::rw-
group::r--
other::r--
setfacl -m m::--- ip.php
ls -la ip.php
-rw----r--+
getfacl ip.php
# file: ip.php
# owner: joomla-pool
# group: joomla-pool
user::rw-
group::r-- #effective:---
mask::---
other::r--
setfacl -k ip.php
ls -la ip.php
-rw----r--+
getfacl ip.php
# file: ip.php
# owner: joomla-pool
# group: joomla-pool
user::rw-
group::r-- #effective:---
mask::---
other::r--
setfacl -b ip.php
ls -la ip.php
-rw----r--
getfacl ip.php
# file: ip.php
# owner: joomla-pool
# group: joomla-pool
user::rw-
group::---
other::r--
Le droit d'écriture du groupe a disparu. Le fichier a des droits en
604.
C'est peut être parfaitement normal ...
Cela me dérange de perdre des droits sur les fichiers, après avoir
appliqué un masque d'ACL.
Surtout si l'on regarde le masque --- c'est étonnant qu'il ne fasse
que disparaître les droits du groupe, et, qu'il laisse toujours en
place le droit de lecture r pour l'utilisateur représenté par le 4.
A moins que m:: ne représente le groupe ?
Si je lance les commandes dans cet ordre :
setfacl -m o::--- ip.php
setfacl -m m::--- ip.php
ls -la ip.php
-rw-------+
J'enlève les ACL :
setfacl -b ip.php
Le chmod restant est 600 :
ls -la ip.php
-rw-------
Dans cet ordre après avoir lancé les deux commandes, il me semble
avoir obtenu un -rw-r----- puis seulement par après un -rw-------
setfacl -m m::--- ip.php
setfacl -m o::--- ip.ph
Quoi qu'il en soit, les droits disparaissent avec les masques.
Comment faire pour conserver une copie des CHMODS appliqués à ces
fichiers ? Il faudrait GIT tout le système ... ?
|