Namespaces
Variants

std::filesystem:: perms

From cppreference.net
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)
modifie les permissions d'accès au fichier
(fonction)