std::filesystem::perms
| Definiert in 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 Aufzählungswert repräsentiert ein eigenständiges Bitmaskenelement.
Zugriffsberechtigungen modellieren POSIX-Berechtigungsbits, und einzelne Dateiberechtigungen (wie von filesystem::status gemeldet) sind eine Kombination aus einigen der folgenden Bits
Inhalt |
[edit] Member-Konstanten
| Member-Konstante | Wert (Oktal) | POSIX-Äquivalent | Bedeutung |
|---|---|---|---|
keine
|
0 | Keine Berechtigungsbits gesetzt | |
owner_read
|
0400 | S_IRUSR | Der Dateibesitzer hat Leseberechtigung |
owner_write
|
0200 | S_IWUSR | Der Dateibesitzer hat Schreibberechtigung |
owner_exec
|
0100 | S_IXUSR | Der Dateibesitzer hat Ausführungs-/Suchberechtigung |
owner_all
|
0700 | S_IRWXU | Der Dateibesitzer hat Lese-, Schreib- und Ausführungs-/Suchberechtigungen Äquivalent zu 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 Äquivalent zu 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 Äquivalent zu others_read | others_write | others_exec |
all
|
0777 | Alle Benutzer haben Lese-, Schreib- und Ausführungs-/Suchberechtigungen Äquivalent zu owner_all | group_all | others_all | |
set_uid
|
04000 | S_ISUID | Beim Ausführen wird die User-ID auf die des Dateibesitzers gesetzt |
set_gid
|
02000 | S_ISGID | Beim Ausführen wird die Group-ID auf die der Dateigruppe gesetzt |
sticky_bit
|
01000 | S_ISVTX | Bedeutung implementationsabhängig, aber POSIX XSI gibt an, dass beim Setzen auf einem Verzeichnis nur Dateibesitzer Dateien löschen dürfen, auch wenn das Verzeichnis für andere beschreibbar ist (verwendet mit /tmp) |
mask
|
07777 | Alle gültigen Berechtigungsbits. Äquivalent zu all | set_uid | set_gid | sticky_bit |
Zusätzlich sind die folgenden Konstanten dieses Typs definiert, die keine Berechtigungen repräsentieren
| Member-Konstante | Wert (Hex) | Bedeutung |
|---|---|---|
unknown
|
0xFFFF | Unbekannte Berechtigungen (z. B. wenn filesystem::file_status ohne Berechtigungen erstellt wird) |
[edit] Hinweise
Berechtigungen sind nicht notwendigerweise als Bits implementiert, werden aber konzeptionell so behandelt.
Einige Berechtigungsbits können auf einigen Systemen ignoriert werden, und das Ändern einiger Bits kann automatisch andere ändern (z. B. auf Plattformen ohne Unterscheidung zwischen Besitzer/Gruppe/andere, setzt das Setzen eines der drei Schreibbits alle drei).
[edit] 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"); // create file 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--
[edit] Siehe auch
| (C++17)(C++17) |
ermittelt Dateiattribute ermittelt Dateiattribute, wobei das Ziel des symbolischen Links geprüft wird (Funktion) |
| (C++17) |
modifiziert Dateizugriffsberechtigungen (Funktion) |