std::experimental::filesystem:: perms
|
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) |