std::experimental::filesystem::perms
| Definiert im Header <experimental/filesystem> |
||
| enum class perms; |
(Dateisystem-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).
Zugriffsberechtigungen modellieren POSIX Berechtigungsbits, und individuelle Dateiberechtigungen (wie von status gemeldet) sind eine Kombination aus einigen der folgenden Bits.
Inhalt |
[edit] Member constants
| Member-Konstante | Wert (oktal) | POSIX Entsprechung | 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 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 | Setzt die User-ID auf die User-ID des Dateibesitzers bei Ausführung |
set_gid
|
02000 | S_ISGID | Setzt die Gruppen-ID auf die Gruppen-ID der Datei bei Ausführung |
sticky_bit
|
01000 | S_ISVTX | Implementierungsdefinierte Bedeutung, aber POSIX XSI spezifiziert, dass bei Verzeichnissen nur Dateibesitzer Dateien löschen dürfen, auch wenn das Verzeichnis für andere schreibbar ist (verwendet mit /tmp) |
mask
|
07777 | Alle gültigen Berechtigungsbits Entspricht all | set_uid | set_gid | sticky_bit |
Zusätzlich sind die folgenden Konstanten dieses Typs definiert, die keine Berechtigungen darstellen.
| Member-Konstante | Wert (hex) | Bedeutung |
|---|---|---|
unknown
|
0xFFFF | Unbekannte Berechtigungen (z.B. wenn file_status ohne Berechtigungen erstellt wird) |
add_perms
|
0x10000 | Steuerbit, das permissions anweist, Berechtigungsbits hinzuzufügen, aber nicht zu löschen |
remove_perms
|
0x20000 | Steuerbit, das permissions anweist, Berechtigungsbits zu löschen, aber nicht hinzuzufügen |
resolve_symlinks
|
0x40000 | Steuerbit, das permissions anweist, symbolische Links aufzulösen |
[edit] Notes
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] Example
#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"); // create file std::cout << "Created file with 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 << "After adding o+rwx and g+rwx: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
Mögliche Ausgabe
Created file with permissions: rw-r--r-- After adding o+rwx and g+rwx: rwxrwxr--
[edit] See also
| ermittelt Dateiattribute ermittelt Dateiattribute, wobei das Ziel des symbolischen Links geprüft wird (Funktion) | |
| modifiziert Dateizugriffsberechtigungen (Funktion) |