Projet

Général

Profil

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

Ajouté par Thierry Bertrand il y a plus d'un an. Mis à jour il y a 7 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
22/07/2022
Echéance:
% réalisé:

100%

Temps estimé:
0.00 h
Restant à faire (heures):
0.0

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.

acl_analyse (14,8 ko) Benjamin Bohard, 02/08/2023 16:48


Demandes liées

Copié depuis Distribution EOLE - Tâche #34478: Disposer d'une vue synthétique des droits existants sur l'arborescence d'un partage samba Fermé 22/07/2022

Révisions associées

Révision 78ff59ad (diff)
Ajouté par Benjamin Bohard il y a environ un an

Action pour résumer les modifications d'ACL.

Ref #34534
Ref #34478

Révision ba2bb249 (diff)
Ajouté par Benjamin Bohard il y a environ un an

Installer les nouvelles actions.

Ref #34534

Révision 256503c1 (diff)
Ajouté par Benjamin Bohard il y a environ un an

Typo dans le nom de dossier de destination.

Ref #34534
Ref #34478

Révision 658b98ab (diff)
Ajouté par Benjamin Bohard il y a environ un an

Fournir une sortie en tableau.

Ref #34534
Ref #34478

Révision 774621bb (diff)
Ajouté par Benjamin Bohard il y a environ un an

Fournir une sortie en tableau.

Ref #34534
Ref #34478

Révision 90221405 (diff)
Ajouté par Benjamin Bohard il y a environ un an

Récupérer l’index de l’élément à enlever de la liste.

Ref #34534

Révision 15988812 (diff)
Ajouté par Benjamin Bohard il y a 11 mois

Utiliser la sortie formatée en tableau pour les actions EAD3.

Ref #34534

Révision 8c048f9a (diff)
Ajouté par Benjamin Bohard il y a 10 mois

L’utilisation de Samba pour lister les partages est optionnelle.

Ref #34534

Révision 4831dc5c (diff)
Ajouté par Benjamin Bohard il y a 10 mois

Les informations des groupes sont récupérées avec le module grp.

Ref #34534

Révision 1d58ef65 (diff)
Ajouté par Benjamin Bohard il y a 10 mois

Affichage d’informations de debug superflu.

Ref #34534

Historique

#1 Mis à jour par Benjamin Bohard il y a plus d'un an

  • Fichier init_tree.py ajouté

#2 Mis à jour par Benjamin Bohard il y a plus d'un an

  • Fichier init_tree.py supprimé

#3 Mis à jour par Benjamin Bohard il y a plus d'un an

  • Fichier init_tree.py ajouté

#4 Mis à jour par Benjamin Bohard il y a plus d'un an

  • Fichier init_tree.py supprimé

#5 Mis à jour par Benjamin Bohard il y a plus d'un an

  • Fichier init_tree.py ajouté

#6 Mis à jour par Laurent Gourvenec il y a environ un an

  • Statut changé de Nouveau à En cours

#7 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree.py supprimé

#8 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree.py ajouté

#9 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py ajouté

#10 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py supprimé

#11 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py ajouté

#12 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py ajouté

#13 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py supprimé

#14 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree_test_free.py supprimé

#15 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier init_tree.py supprimé

#16 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier acl_analyse ajouté

#17 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier acl_analyse supprimé

#18 Mis à jour par Benjamin Bohard il y a environ un an

  • Fichier acl_analyse ajouté

#19 Mis à jour par Vincent Chavanon il y a environ un an

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 Mis à jour par Vincent Chavanon il y a environ un an

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 Mis à jour par Benjamin Bohard il y a environ un an

  • Statut changé de En cours à À valider
  • Assigné à mis à Benjamin Bohard
  • % réalisé changé de 0 à 100

#22 Mis à jour par Philippe Carre il y a 11 mois

  • Statut changé de À valider à 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 Mis à jour par Benjamin Bohard il y a 11 mois

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 Mis à jour par Philippe Carre il y a 10 mois

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 Mis à jour par Benjamin Bohard il y a 9 mois

  • Fichier acl_analyse supprimé

#26 Mis à jour par Benjamin Bohard il y a 9 mois

#27 Mis à jour par Benjamin Bohard il y a 9 mois

  • Statut changé de En cours à À valider

#29 Mis à jour par Philippe Carre il y a 7 mois

  • Statut changé de À valider à Fermé
  • Temps estimé mis à 0.00 h
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF