Namensräume
Varianten
Aktionen

std::experimental::filesystem::perms

Von cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
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) [bearbeiten]
modifiziert Dateizugriffsberechtigungen
(Funktion) [bearbeiten]