std::experimental::filesystem:: perms
|
Défini dans l'en-tête
<experimental/filesystem>
|
||
|
enum
class
perms
;
|
(filesystem TS) | |
Ce type représente les permissions 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).
Modèle de permissions d'accès Bits de permission POSIX , et toutes les permissions individuelles de fichiers (telles que rapportées par 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 des 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 autorisations :
| Constante de membre | Valeur (hex) | Signification |
|---|---|---|
unknown
|
0xFFFF | Permissions inconnues (par exemple lorsque file_status est créé sans permissions) |
add_perms
|
0x10000 | Bit de contrôle qui ordonne à permissions d'ajouter, mais pas de supprimer les bits de permission |
remove_perms
|
0x20000 | Bit de contrôle qui ordonne à permissions de supprimer, mais pas d'ajouter les bits de permission |
resolve_symlinks
|
0x40000 | Bit de contrôle qui ordonne à permissions de résoudre les liens symboliques |
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 <bitset> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; void demo_perms(fs::perms p) { std::cout << ((p & fs::perms::owner_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::owner_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::owner_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::group_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::group_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::group_exec) != fs::perms::none ? "x" : "-") << ((p & fs::perms::others_read) != fs::perms::none ? "r" : "-") << ((p & fs::perms::others_write) != fs::perms::none ? "w" : "-") << ((p & fs::perms::others_exec) != fs::perms::none ? "x" : "-") << '\n'; } int main() { std::ofstream("test.txt"); // créer le fichier std::cout << "Fichier créé avec les permissions : "; demo_perms(fs::status("test.txt").permissions()); fs::permissions("test.txt", fs::perms::add_perms | fs::perms::owner_all | fs::perms::group_all); std::cout << "Après ajout de o+rwx et g+rwx : "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
Sortie possible :
Fichier créé avec les permissions : rw-r--r-- Après ajout de o+rwx et g+rwx : rwxrwxr--
Voir aussi
|
détermine les attributs de fichier
détermine les attributs de fichier, en vérifiant la cible du lien symbolique (fonction) |
|
|
modifie les permissions d'accès au fichier
(fonction) |