std::filesystem:: perms
|
Défini dans l'en-tête
<filesystem>
|
||
|
enum
class
perms
;
|
(depuis C++17) | |
Ce type représente les autorisations d'accès aux fichiers.
perms
satisfait aux exigences de
BitmaskType
(ce qui signifie que les opérateurs bit à bit
operator
&
,
operator
|
,
operator
^
,
operator~
,
operator
&
=
,
operator
|
=
, et
operator
^
=
sont définis pour ce type).
none
représente le masque de bits vide ; tous les autres énumérateurs représentent un élément distinct du masque de bits.
Modèle de permissions d'accès Bits de permission POSIX , et toutes les permissions individuelles de fichiers (telles que rapportées par filesystem::status ) sont une combinaison de certains des bits suivants :
Table des matières |
Constantes membres
| Constante de membre | Valeur (octale) | Équivalent POSIX | Signification |
|---|---|---|---|
none
|
0 | Aucun bit de permission n'est défini | |
owner_read
|
0400 | S_IRUSR | Le propriétaire du fichier a l'autorisation de lecture |
owner_write
|
0200 | S_IWUSR | Le propriétaire du fichier a l'autorisation d'écriture |
owner_exec
|
0100 | S_IXUSR | Le propriétaire du fichier a l'autorisation d'exécution/recherche |
owner_all
|
0700 | S_IRWXU |
Le propriétaire du fichier a les autorisations de lecture, écriture et exécution/recherche
Équivalent à owner_read | owner_write | owner_exec |
group_read
|
040 | S_IRGRP | Le groupe d'utilisateurs du fichier a l'autorisation de lecture |
group_write
|
020 | S_IWGRP | Le groupe d'utilisateurs du fichier a l'autorisation d'écriture |
group_exec
|
010 | S_IXGRP | Le groupe d'utilisateurs du fichier a l'autorisation d'exécution/recherche |
group_all
|
070 | S_IRWXG |
Le groupe d'utilisateurs du fichier a les autorisations de lecture, écriture et exécution/recherche
Équivalent à group_read | group_write | group_exec |
others_read
|
04 | S_IROTH | Les autres utilisateurs ont l'autorisation de lecture |
others_write
|
02 | S_IWOTH | Les autres utilisateurs ont l'autorisation d'écriture |
others_exec
|
01 | S_IXOTH | Les autres utilisateurs ont l'autorisation d'exécution/recherche |
others_all
|
07 | S_IRWXO |
Les autres utilisateurs ont les autorisations de lecture, écriture et exécution/recherche
Équivalent à others_read | others_write | others_exec |
all
|
0777 |
Tous les utilisateurs ont les autorisations de lecture, écriture et exécution/recherche
Équivalent à owner_all | group_all | others_all |
|
set_uid
|
04000 | S_ISUID | Définit l'ID utilisateur sur l'ID du propriétaire du fichier lors de l'exécution |
set_gid
|
02000 | S_ISGID | Définit l'ID de groupe sur l'ID du groupe d'utilisateurs du fichier lors de l'exécution |
sticky_bit
|
01000 | S_ISVTX | Signification définie par l'implémentation, mais POSIX XSI spécifie que lorsqu'il est défini sur un répertoire, seuls les propriétaires de fichiers peuvent supprimer des fichiers même si le répertoire est accessible en écriture par d'autres (utilisé avec / tmp ) |
mask
|
07777 |
Tous les bits de permission valides.
Équivalent à all | set_uid | set_gid | sticky_bit |
De plus, les constantes suivantes de ce type sont définies, qui ne représentent pas des permissions :
| Constante de membre | Valeur (hex) | Signification |
|---|---|---|
unknown
|
0xFFFF | Permissions inconnues (par exemple lorsque filesystem::file_status est créé sans permissions) |
Notes
Les permissions ne sont pas nécessairement implémentées sous forme de bits, mais elles sont traitées ainsi conceptuellement.
Certains bits de permission peuvent être ignorés sur certains systèmes, et modifier certains bits peut automatiquement en modifier d'autres (par exemple, sur les plateformes sans distinction propriétaire/groupe/tous, définir l'un des trois bits d'écriture définit les trois).
Exemple
#include <filesystem> #include <fstream> #include <iostream> void demo_perms(std::filesystem::perms p) { using std::filesystem::perms; auto show = [=](char op, perms perm) { std::cout << (perms::none == (perm & p) ? '-' : op); }; show('r', perms::owner_read); show('w', perms::owner_write); show('x', perms::owner_exec); show('r', perms::group_read); show('w', perms::group_write); show('x', perms::group_exec); show('r', perms::others_read); show('w', perms::others_write); show('x', perms::others_exec); std::cout << '\n'; } int main() { std::ofstream("test.txt"); // créer un fichier std::cout << "Fichier créé avec les permissions : "; demo_perms(std::filesystem::status("test.txt").permissions()); std::filesystem::permissions( "test.txt", std::filesystem::perms::owner_all | std::filesystem::perms::group_all, std::filesystem::perm_options::add ); std::cout << "Après ajout de u+rwx et g+rwx : "; demo_perms(std::filesystem::status("test.txt").permissions()); std::filesystem::remove("test.txt"); }
Sortie possible :
Fichier créé avec les permissions : rw-r--r-- Après ajout de u+rwx et g+wrx : rwxrwxr--
Voir aussi
|
(C++17)
(C++17)
|
détermine les attributs de fichier
détermine les attributs de fichier en vérifiant la cible du lien symbolique (fonction) |
|
(C++17)
|
modifie les permissions d'accès au fichier
(fonction) |