std::filesystem:: perms
|
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) |
|
(C++17)
|
Modifiziert Dateizugriffsberechtigungen
(Funktion) |