Namespaces
Variants

std::experimental::filesystem:: perms

From cppreference.net
Definiert in Header <experimental/filesystem>
enum class perms ;
(Filesystem TS)

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).

Zugriffsberechtigungsmodell POSIX-Berechtigungsbits , und individuelle Dateiberechtigungen (wie von 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 in einem 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 file_status ohne Berechtigungen erstellt wird)
add_perms 0x10000 Kontrollbit, das permissions anweist, Berechtigungsbits hinzuzufügen, aber nicht zu löschen
remove_perms 0x20000 Kontrollbit, das permissions anweist, Berechtigungsbits zu löschen, aber nicht hinzuzufügen
resolve_symlinks 0x40000 Kontrollbit, das permissions anweist, Symlinks aufzulösen

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 <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"); // Datei erstellen
    std::cout << "Erstellte Datei mit Berechtigungen: ";
    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 << "Nach Hinzufügen von o+rwx und g+rwx:  ";
    demo_perms(fs::status("test.txt").permissions());
    fs::remove("test.txt");
}

Mögliche Ausgabe:

Erstellte Datei mit Berechtigungen: rw-r--r--
Nach Hinzufügen von o+rwx und g+rwx:  rwxrwxr--

Siehe auch

bestimmt Dateiattribute
bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)
ändert Dateizugriffsberechtigungen
(Funktion)