Tâche #34534
Scénario #34533: Disposer d'une vue synthétique des droits existants sur l'arborescence d'un partage samba
Disposer d'une vue synthétique des droits existants sur l'arborescence d'un partage samba
100%
Description
Les droits sur des données partagées via un partage samba peuvent être gérés soit :
- via la définition du partage lui meme (dans la conf du partage)
- via les droits Linux de base
- via les droits linux étendus (des acl)
On peut donc avoir un sous dossier partagé avec des droits d'accès plus ou moins restrictifs que le dossier parent, et qui évoluent au gré des modifications effectuées.
A ce jour, on ne dispose pas d'outil permettant de voir quels sont les droits existants sur un dossier partagé : Certains services historisent les modifications effectuées sur les droits dans un outil de suivi tiers, mais si ce n'est pas le cas, on peut facilement perdre la mémoire des modifications effectuées, et ne plus savoir quels sont les droits réellement en place. Sur de grosses arborescence, le travailo d'inventaire peut être fastidieux.
Il serait intéressant de disposer d'un script permettant de disposer d'une vue synthétique des droits en place sur une arborescence :
- les droits à la racine du partage et leur origine (samba, droits linux, acl)
- les droits distincts des droits du dossier parent dans les fichiers ou les sous dossiers
Les droits recursifs ne seraient ainsi listés qu'une fois, et n'apparaitraient ensuite que les modifications à ces droits.
ainsi, sur l'arborescence ci dessous, correspondant au partage suivant :
[GB_PROD]
comment = Base de production en lecture-ecriture
create mask = 0664
directory mask = 0775
force create mode = 0664
force directory mode = 0775
path = /home/data/bureautique/dossiers/geobase/PRODUCTION
read only = No
├── PRODUCTION
│ ├── AAA_test
│ │ ├── DDT37
│ │ │ ├── N_ZONE_HUMIDE_S_037.cpg
│ │ │ ├── N_ZONE_HUMIDE_S_037.DAT
│ │ │ ├── ZH_centre.shp
│ │ │ └── ZH_centre.shx
│ │ ├── DDT38
│ │ │ ├── L_A_LDEN_FER_S_038_2.cpg
│ │ │ └── L_A_LDEN_ROUTE_S_038_1.shx
│ │ ├── DDTM33
│ │ │ ├── communes35.cpg
│ │ │ ├── communes35.dbf
│ │ │ ├── vérifié_l_hydro_d33.shp
│ │ │ └── vérifié_l_hydro_d33.shx
│ │ ├── DREAL
│ │ │ ├── COMMUNE.cpg
│ │ │ └── COMMUNE.shx
│ │ ├── DREALGE
│ │ │ ├── Amenagement_cyclable_R44.dbf
│ │ │ ├── ZDH_CHAMPARD_ET_COMPL_Polygon.shp
│ │ │ └── ZDH_CHAMPARD_ET_COMPL_Polygon.shx
│ │ ├── EPCI_053.dbf
│ │ ├── EPCI_053.prj
│ │ ├── EPCI_053.shp
│ │ ├── EPCI_053.shx
│ │ ├── Essai
│ │ │ ├── simple_l_hydro_d33.cpg
│ │ │ ├── simple_l_hydro_d33.shx
│ ├── BBB_test
│ │ ├── DDT39
│ │ │ ├── N_ZONE_HUMIDE_S_039.cpg
│ │ │ ├── N_ZONE_HUMIDE_S_039.DAT
│ │ │ ├── ZH_centre.shp
│ │ │ └── ZH_centre.shx
│ │ ├── DDT40
│ │ │ ├── L_A_LDEN_FER_S_040_2.cpg
│ │ │ └── L_A_LDEN_ROUTE_S_040_1.shx
Soit des droits définis via une acl de facon récursive sur le dossier PRODUCTION, et des ajouts faits par une autre acl sur le dossier BBB_test et son contenu : On ne remonterait que les droits sur PRODUCTION et ceux sur BBB_test, étant entendu que les droits sur les dossiers DDT 39 ou DDT 40 (enfants de BBB_test) sont les memes que ceux de leur dossier parent.
L'exec du script pourrait se faire depuis l'ead3, pour tout ou partie des dossiers partagés. le resultat sera sauvegardé avec la date d'exec et il sera consultable dans une forme lisible via l'ead3, et exportable.
Related issues
Associated revisions
Installer les nouvelles actions.
Ref #34534
Récupérer l’index de l’élément à enlever de la liste.
Ref #34534
Utiliser la sortie formatée en tableau pour les actions EAD3.
Ref #34534
L’utilisation de Samba pour lister les partages est optionnelle.
Ref #34534
Les informations des groupes sont récupérées avec le module grp.
Ref #34534
Affichage d’informations de debug superflu.
Ref #34534
History
#1 Updated by Benjamin Bohard 12 months ago
- File init_tree.py added
#2 Updated by Benjamin Bohard 12 months ago
- File deleted (
init_tree.py)
#3 Updated by Benjamin Bohard 12 months ago
- File init_tree.py added
#4 Updated by Benjamin Bohard 12 months ago
- File deleted (
init_tree.py)
#5 Updated by Benjamin Bohard 12 months ago
- File init_tree.py added
#6 Updated by Laurent Gourvenec 8 months ago
- Status changed from Nouveau to En cours
#7 Updated by Benjamin Bohard 8 months ago
- File deleted (
init_tree.py)
#8 Updated by Benjamin Bohard 8 months ago
- File init_tree.py added
#9 Updated by Benjamin Bohard 8 months ago
- File init_tree_test_free.py added
#10 Updated by Benjamin Bohard 8 months ago
- File deleted (
init_tree_test_free.py)
#11 Updated by Benjamin Bohard 8 months ago
- File init_tree_test_free.py added
#12 Updated by Benjamin Bohard 8 months ago
- File init_tree_test_free.py added
#13 Updated by Benjamin Bohard 8 months ago
- File deleted (
init_tree_test_free.py)
#14 Updated by Benjamin Bohard 8 months ago
- File deleted (
init_tree_test_free.py)
#15 Updated by Benjamin Bohard 8 months ago
- File deleted (
init_tree.py)
#16 Updated by Benjamin Bohard 8 months ago
- File acl_analyse added
#17 Updated by Benjamin Bohard 8 months ago
- File deleted (
acl_analyse)
#18 Updated by Benjamin Bohard 8 months ago
- File acl_analyse added
#19 Updated by Vincent Chavanon 8 months ago
Bonjour,
en reprenant l'exemple d'arborescence ci dessus, la sortie pourrait ressemble à un tableau comme suit :
├─────────dossier───────────────────────├───droits────├───droits / defaut────│
│ │ │ │
│ PRODUCTION │ root:rwx │ d:rwx │
│ │ www-data:rx │ │
│ │ groupe1:rwx │ │
├────────────────────────────────────────────────────────────────────────────│
│ PRODUCTION/AAA test/DD38 │ root:--- │ │
│ │ groupe2:rwx │ │
├────────────────────────────────────────────────────────────────────────────│
│ PRODUCTION/AAA test/DREAL/COMMUNE.cpg │ root:--- │ │
│ │ groupe2:rwx │ │
├────────────────────────────────────────────────────────────────────────────│
│ PRODUCTION/BBB_test/DDT40 │ groupe2:rwx │ │
├────────────────────────────────────────────────────────────────────────────│
- On liste tous les droits du dossier racine (dossier "PRODUCTION", ici)
- On ne liste que les sous dossiers qui ont des droits différents de ceux du dossier parent : on a donc pas PRODUCTION/AAA test/DDT37 (droits identiques), mais on a PRODUCTION/AAA test/DD38
- les droits listes sur un dossier sont aussi ceux de ses enfants
- les droits affichés sont les droits complets, avec en rouge, les ajouts de droits, en rouge les suppressions, et en orange les modifs
#20 Updated by Vincent Chavanon 7 months ago
bonjour,
Une erreur à l'exec :
root@pl-geoide-40:~# ./acl_analyse exec > acl160223.txt
Traceback (most recent call last):
File "./acl_analyse", line 245, in <module>
args.func(args)
File "./acl_analyse", line 222, in exec_cmd
modified_paths.extend(parse_tree(pathlib.Path(share)))
File "./acl_analyse", line 213, in parse_tree
modified_paths.extend([folder for folder in folders if permissions_modification_detected(folder)])
File "./acl_analyse", line 213, in <listcomp>
modified_paths.extend([folder for folder in folders if permissions_modification_detected(folder)])
File "./acl_analyse", line 191, in permissions_modification_detected
acl_comparison = compare_entities_acl(parent, entity, detail=detail, inherited_only=False)
File "./acl_analyse", line 165, in compare_entities_acl
comparison = compare_acl(parent_default_acl, parent, posix1e.ACL), subject, exhaustive=detail, umask=umask)
File "./acl_analyse", line 122, in compare_acl
group_entries.pop(entry)
TypeError: 'posix1e.Entry' object cannot be interpreted as an integer
#21 Updated by Benjamin Bohard 7 months ago
- Status changed from En cours to À valider
- Assigned To set to Benjamin Bohard
- % Done changed from 0 to 100
#22 Updated by Philippe Carre 3 months ago
- Status changed from À valider to En cours
Ok pour le fonctionnement , le script fait bien le diff des ACL modifiées.
Sauf que la demande est : "il sera consultable dans une forme lisible via l'ead3, et exportable." On peut supposer que le yaml peut être exportable tel quel, mais l'affichage actuel n'est pas vraiment lisible !!
Les infos de diff ne sont pas vraiment lisibles, et même si il y avait une légende ! Pour les rendre lisibles, et comme le proposait Vincent , il faudrait afficher également le dossier parent puis les modifications du dossier fils, ce serait plus clair. Sous forme de tableau éventuellement.
#23 Updated by Benjamin Bohard 3 months ago
La sortie utilisée par le script lorsque lancé par l’action est effectivement "yaml" et non "tabular" comme prévu à la base. En attendant la mise à disposition d’un nouveau paquet, il est possible de lancer la commande dans le terminal pour avoir un aperçu du rendu :
/usr/share/eole/sbin/acl_analyse exec -f tabular -r <le chemin à analyser>
#24 Updated by Philippe Carre 3 months ago
Ok pour l'affichage , les légers décalages ne gène pas la lecture.
Par contre, il a qd même un pb de compréhension de la modification, par ex dans ce cas :
|-------------------------------------------+------------+-----------------------------------| | /home/data/bureautique/dossiers | user::rwx | owner:root: 000 | | | group::rwx | group:FORMATION/domain users: +++ | | | other::r-x | group:root: 0+0 | | | | other: 000 |
L'info concernant le groupe root n'a plus de sens du coup. C'est bien dans ce cas le groupe FORMATION... qui remplace le groupe root.
root@pl-geom272:/home/data/bureautique# getfacl dossiers/ # file: dossiers/ # owner: root # group: FORMATION/domain\040users # flags: -s- user::rwx group::rwx other::r-x
Et, même chose qd on change de user :
| /home/data/bureautique/dossiers/geoexport | user::rw- | owner:postgres: +++ | | | group::r-- | owner:root: 00- | | | other::--- | group:FORMATION/domain users: 0-- | | | | other: -0- |
ici le owner postgres remplace root
#25 Updated by Benjamin Bohard about 2 months ago
- File deleted (
acl_analyse)
#26 Updated by Benjamin Bohard about 2 months ago
- File acl_analyse added
#27 Updated by Benjamin Bohard about 2 months ago
- Status changed from En cours to À valider