Project

General

Profile

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

Added by Thierry Bertrand about 1 year ago. Updated about 2 months ago.

Status:
À valider
Priority:
Normal
Assigned To:
Start date:
07/22/2022
Due date:
% Done:

100%

Remaining (hours):

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 KB) Benjamin Bohard, 08/02/2023 04:48 PM


Related issues

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

Associated revisions

Revision 78ff59ad (diff)
Added by Benjamin Bohard 8 months ago

Action pour résumer les modifications d'ACL.

Ref #34534
Ref #34478

Revision ba2bb249 (diff)
Added by Benjamin Bohard 8 months ago

Installer les nouvelles actions.

Ref #34534

Revision 256503c1 (diff)
Added by Benjamin Bohard 8 months ago

Typo dans le nom de dossier de destination.

Ref #34534
Ref #34478

Revision 658b98ab (diff)
Added by Benjamin Bohard 8 months ago

Fournir une sortie en tableau.

Ref #34534
Ref #34478

Revision 774621bb (diff)
Added by Benjamin Bohard 8 months ago

Fournir une sortie en tableau.

Ref #34534
Ref #34478

Revision 90221405 (diff)
Added by Benjamin Bohard 7 months ago

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

Ref #34534

Revision 15988812 (diff)
Added by Benjamin Bohard 3 months ago

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

Ref #34534

Revision 8c048f9a (diff)
Added by Benjamin Bohard 3 months ago

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

Ref #34534

Revision 4831dc5c (diff)
Added by Benjamin Bohard 3 months ago

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

Ref #34534

Revision 1d58ef65 (diff)
Added by Benjamin Bohard 3 months ago

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

#27 Updated by Benjamin Bohard about 2 months ago

  • Status changed from En cours to À valider

Also available in: Atom PDF