1.10. Gestion des ACL sur un partage SMB à l'aide de smbcacls
L'utilitaire smbcacls
permet de lister, de définir et de supprimer les ACL des fichiers et des répertoires stockés sur un partage SMB. Vous pouvez utiliser smbcacls
pour gérer les ACL du système de fichiers :
- Sur un serveur Samba local ou distant qui utilise des ACL Windows avancées ou des ACL POSIX
- Sur Red Hat Enterprise Linux pour gérer à distance les ACL sur un partage hébergé sur Windows
1.10.1. Entrées de contrôle d'accès
Chaque entrée ACL d'un objet du système de fichiers contient des entrées de contrôle d'accès (ACE) dans le format suivant :
security_principal:access_right/inheritance_information/permissions
Exemple 1.3. Entrées de contrôle d'accès
Si le groupe AD\Domain Users
dispose des autorisations Modify
qui s'appliquent à This folder, subfolders, and files
sous Windows, l'ACL contient l'ACE suivant :
AD\NUtilisateurs du domaine:ALLOWED/OI|CI/CHANGE
Un CAE contient les éléments suivants :
- Principal responsable de la sécurité
- Le principal de sécurité est l'utilisateur, le groupe ou le SID auquel s'appliquent les autorisations de la liste de contrôle d'accès.
- Droit d'accès
-
Définit si l'accès à un objet est accordé ou refusé. La valeur peut être
ALLOWED
ouDENIED
. - Informations sur l'héritage
Les valeurs suivantes existent :
Tableau 1.1. Paramètres d'héritage Valeur Description Cartes à OI
Héritage d'objet
Ce dossier et ces fichiers
CI
Héritage du conteneur
Ce dossier et ses sous-dossiers
IO
Hériter seulement
Le CAE ne s'applique pas au fichier ou au répertoire actuel
ID
Héritée
L'ACE a été hérité du répertoire parent
En outre, les valeurs peuvent être combinées comme suit :
Tableau 1.2. Combinaisons de paramètres d'héritage Combinaisons de valeurs Correspond à la configuration de Windows Applies to
OI|CI
Ce dossier, ces sous-dossiers et ces fichiers
OI|CI|IO
Sous-dossiers et fichiers uniquement
CI|IO
Sous-dossiers uniquement
OI|IO
Fichiers uniquement
- Permissions
Cette valeur peut être soit une valeur hexagonale représentant une ou plusieurs autorisations Windows, soit un alias
smbcacls
:Valeur hexagonale représentant une ou plusieurs autorisations Windows.
Le tableau suivant présente les autorisations avancées de Windows et leur valeur correspondante au format hexadécimal :
Tableau 1.3. Permissions Windows et leur valeur smbcacls correspondante au format hexagonal Autorisations Windows Valeurs hexagonales Contrôle total
0x001F01FF
Traverser un dossier / exécuter un fichier
0x00100020
Liste des dossiers / lecture des données
0x00100001
Lire les attributs
0x00100080
Lire les attributs étendus
0x00100008
Créer des fichiers / écrire des données
0x00100002
Créer des dossiers / ajouter des données
0x00100004
Écrire les attributs
0x00100100
Écrire des attributs étendus
0x00100010
Supprimer des sous-dossiers et des fichiers
0x00100040
Supprimer
0x00110000
Permissions de lecture
0x00120000
Modifier les autorisations
0x00140000
S'approprier le projet
0x00180000
Plusieurs autorisations peuvent être combinées en une seule valeur hexagonale à l'aide de l'opération bit à bit
OR
.
Pour plus de détails, voir le calcul du masque ACE.
Un alias
smbcacls
. Le tableau suivant présente les alias disponibles :Tableau 1.4. Les alias smbcacls existants et les autorisations Windows correspondantes smbcacls
aliasCartes de l'autorisation Windows R
Lire
READ
Lire & exécuter
W
Spécial :
- Créer des fichiers / écrire des données
- Créer des dossiers / ajouter des données
- Écrire les attributs
- Écrire des attributs étendus
- Permissions de lecture
D
Supprimer
P
Modifier les autorisations
O
S'approprier le projet
X
Traverser / exécuter
CHANGE
Modifier
FULL
Contrôle total
NoteVous pouvez combiner des alias à une lettre lorsque vous définissez des autorisations. Par exemple, vous pouvez définir
RD
pour appliquer l'autorisation WindowsRead
etDelete
. Cependant, vous ne pouvez pas combiner plusieurs alias autres qu'à une lettre, ni combiner des alias et des valeurs hexadécimales.
1.10.2. Affichage des ACL à l'aide de smbcacls
Pour afficher les ACL sur un partage SMB, utilisez l'utilitaire smbcacls
. Si vous exécutez smbcacls
sans aucun paramètre d'opération, comme --add
, l'utilitaire affiche les listes de contrôle d'accès d'un objet du système de fichiers.
Procédure
Par exemple, pour répertorier les listes de contrôle d'accès du répertoire racine du partage //server/example
:
# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
La sortie de la commande s'affiche :
-
REVISION
: La révision ACL interne de Windows NT du descripteur de sécurité -
CONTROL
: Contrôle du descripteur de sécurité -
OWNER
: Nom ou SID du propriétaire du descripteur de sécurité -
GROUP
: Nom ou SID du groupe du descripteur de sécurité -
ACL
entrées de contrôle d'accès. Pour plus de détails, voir Entrées de contrôle d'accès.
1.10.3. Calcul du masque ACE
Dans la plupart des cas, lorsque vous ajoutez ou mettez à jour un ACE, vous utilisez les alias smbcacls
répertoriés dans Existing smbcacls aliases et les autorisations Windows correspondantes.
Toutefois, si vous souhaitez définir des autorisations Windows avancées telles qu'elles sont répertoriées dans les autorisations Windows et leur valeur smbcacls correspondante au format hexadécimal, vous devez utiliser l'opération bit-wise OR
pour calculer la valeur correcte. Vous pouvez utiliser la commande shell suivante pour calculer la valeur :
# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
Exemple 1.4. Calcul d'un masque ACE
Vous souhaitez définir les autorisations suivantes :
- Traverser le dossier / exécuter le fichier (0x00100020)
- Liste des dossiers / lecture des données (0x00100001)
- Lire les attributs (0x00100080)
Pour calculer la valeur hexadécimale des autorisations précédentes, entrez :
# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1
Utilisez la valeur renvoyée lorsque vous définissez ou mettez à jour un CAE.
1.10.4. Ajout, mise à jour et suppression d'une ACL à l'aide de smbcacls
En fonction du paramètre que vous transmettez à l'utilitaire smbcacls
, vous pouvez ajouter, mettre à jour et supprimer les ACL d'un fichier ou d'un répertoire.
Ajout d'une ACL
Pour ajouter une ACL à la racine du partage //server/example
qui accorde des permissions à CHANGE
pour This folder, subfolders, and files
au groupe AD\Domain Users
:
# smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
Mise à jour d'une ACL
La mise à jour d'une ACL est similaire à l'ajout d'une nouvelle ACL. Vous mettez à jour une liste de contrôle d'accès en remplaçant la liste de contrôle d'accès à l'aide du paramètre --modify
par un principal de sécurité existant. Si smbcacls
trouve le principal de sécurité dans la liste ACL, l'utilitaire met à jour les autorisations. Dans le cas contraire, la commande échoue avec une erreur :
ACL pour SID principal_name introuvable
Par exemple, pour mettre à jour les autorisations du groupe AD\Domain Users
et les définir à READ
pour This folder, subfolders, and files
:
# smbcacls //server/example / -U "DOMAIN\administrator --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
Suppression d'une ACL
Pour supprimer une ACL, passez le paramètre --delete
avec l'ACL exacte à l'utilitaire smbcacls
. Par exemple :
# smbcacls //server/example / -U "DOMAIN\administrator --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ