Namespaces
Variants

std::filesystem:: perms

From cppreference.net
Definiert im Header <filesystem>
enum class perms ;
(seit C++17)

Dieser Typ repräsentiert Dateizugriffsberechtigungen.

perms erfüllt die Anforderungen von BitmaskType (was bedeutet, dass die bitweisen Operatoren operator & , operator | , operator ^ , operator~ , operator & = , operator | = und operator ^ = für diesen Typ definiert sind). none repräsentiert die leere Bitmaske; jeder andere Enumerator repräsentiert ein eindeutiges Bitmaskenelement.

Zugriffsberechtigungsmodell POSIX-Berechtigungsbits , und individuelle Dateiberechtigungen (wie von filesystem::status gemeldet) sind eine Kombination einiger der folgenden Bits:

Inhaltsverzeichnis

Member-Konstanten

Memberkonstante Wert (oktal) POSIX-Äquivalent Bedeutung
none 0 Keine Berechtigungsbits sind gesetzt
owner_read 0400 S_IRUSR Dateieigentümer hat Leseberechtigung
owner_write 0200 S_IWUSR Dateieigentümer hat Schreibberechtigung
owner_exec 0100 S_IXUSR Dateieigentümer hat Ausführungs-/Suchberechtigung
owner_all 0700 S_IRWXU Dateieigentümer hat Lese-, Schreib- und Ausführungs-/Suchberechtigungen

Entspricht owner_read | owner_write | owner_exec

group_read 040 S_IRGRP Die Benutzergruppe der Datei hat Leseberechtigung
group_write 020 S_IWGRP Die Benutzergruppe der Datei hat Schreibberechtigung
group_exec 010 S_IXGRP Die Benutzergruppe der Datei hat Ausführungs-/Suchberechtigung
group_all 070 S_IRWXG Die Benutzergruppe der Datei hat Lese-, Schreib- und Ausführungs-/Suchberechtigungen

Entspricht group_read | group_write | group_exec

others_read 04 S_IROTH Andere Benutzer haben Leseberechtigung
others_write 02 S_IWOTH Andere Benutzer haben Schreibberechtigung
others_exec 01 S_IXOTH Andere Benutzer haben Ausführungs-/Suchberechtigung
others_all 07 S_IRWXO Andere Benutzer haben Lese-, Schreib- und Ausführungs-/Suchberechtigungen

Entspricht others_read | others_write | others_exec

all 0777 Alle Benutzer haben Lese-, Schreib- und Ausführungs-/Suchberechtigungen

Entspricht owner_all | group_all | others_all

set_uid 04000 S_ISUID Setze Benutzer-ID auf Dateieigentümer-Benutzer-ID bei Ausführung
set_gid 02000 S_ISGID Setze Gruppen-ID auf Benutzergruppen-ID der Datei bei Ausführung
sticky_bit 01000 S_ISVTX Implementierungsdefinierte Bedeutung, aber POSIX XSI spezifiziert, dass wenn es für ein Verzeichnis gesetzt ist, nur Dateieigentümer Dateien löschen können, selbst wenn das Verzeichnis für andere beschreibbar ist (verwendet mit / tmp )
mask 07777 Alle gültigen Berechtigungsbits.

Entspricht all | set_uid | set_gid | sticky_bit

Zusätzlich sind folgende Konstanten dieses Typs definiert, die keine Berechtigungen darstellen:

Memberkonstante Wert (hex) Bedeutung
unknown 0xFFFF Unbekannte Berechtigungen (z.B. wenn filesystem::file_status ohne Berechtigungen erstellt wird)

Hinweise

Berechtigungen werden möglicherweise nicht unbedingt als Bits implementiert, aber konzeptionell werden sie so behandelt.

Einige Berechtigungsbits werden auf manchen Systemen ignoriert, und das Ändern einiger Bits kann automatisch andere ändern (z.B. auf Plattformen ohne Unterscheidung zwischen Besitzer/Gruppe/Alle, setzt das Setzen eines der drei Schreibbits alle drei).

Beispiel

#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"); // Datei erstellen
    std::cout << "Created file with 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 << "After adding u+rwx and g+rwx:  ";
    demo_perms(std::filesystem::status("test.txt").permissions());
    std::filesystem::remove("test.txt");
}

Mögliche Ausgabe:

Created file with permissions: rw-r--r--
After adding u+rwx and g+wrx:  rwxrwxr--

Siehe auch

(C++17) (C++17)
Bestimmt Dateiattribute
Bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)
Modifiziert Dateizugriffsberechtigungen
(Funktion)