Espacios de nombres
Variantes
Acciones

std::filesystem::perms

De cppreference.com
 
 
 
Definido en el archivo de encabezado <filesystem>
enumclass perms;
(desde C++17)

Este tipo representa permisos de acceso a archivo. perms satisface los requerimientos de BitmaskType (que significa que los operadores de bit a bit operator&, operator|, operator^, operator~, operator&=, operator|=, y operator^= se definen para este tipo).

Los permisos de acceso modelan bits de permisos de POSIX, y cualquier permiso de archivo individual (como se informa por filesystem::status) son una combinación de algunos de los siguientes bits:

Contenido

[editar]Constantes miembro

Constante miembro Valor (octal) Equivalente POSIX Significado
Ninguno0 No se establecen permisos de bits.
owner_read0400S_IRUSR El dueño del archivo tiene permiso de lectura.
owner_write0200S_IWUSR El dueño del archivo tiene permiso de escritura.
owner_exec0100S_IXUSR El dueño del archivo tiene permiso de búsqueda y ejecución.
owner_all0700S_IRWXU El dueño del archivo tiene permisos de lectura, escritura, y búsqueda y ejecución.

Equivalente a owner_read | owner_write | owner_exec.

group_read040S_IRGRP El grupo de usuarios de este archivo tiene permiso de lectura.
group_write020S_IWGRP El grupo de usuarios de este archivo tiene permiso de escritura.
group_exec010S_IXGRP El grupo de usuarios de este archivo tiene permiso de búsqueda y ejecución.
group_all070S_IRWXG El grupo de usuarios de este archivo tiene permisos de lectura, escritura, y búsqueda y ejecución.

Equivalente a group_read | group_write | group_exec.

others_read04S_IROTH Otros usuarios tienen permiso de lectura.
others_write02S_IWOTH Otros usuarios tienen permiso de escritura.
others_exec01S_IXOTH Otros usuarios tienen permiso de búsqueda y ejecución.
others_all07S_IRWXO Otros usuarios tienen permisos de lectura, escritura, y búsqueda y ejecución.

Equivalente a others_read | others_write | others_exec.

all0777 Todos los usuarios tienen permisos de lectura, escritura, y búsqueda y ejecución.

Equivalente a owner_all | group_all | others_all.

set_uid04000S_ISUID Establece el ID de usuario en el ID de usuario dueño del archivo durante la ejecución.
set_gid02000S_ISGID Establece el ID del grupo en el ID del grupo del archivo durante la ejecución.
sticky_bit01000S_ISVTX Quiere decir que está definido por la implementación, pero POSIX XSI especifica que cuando está establecido en un directorio, solo los dueños del archivo pueden borrar archivos incluso si el directorio puede escribirse por otros (se usa con /tmp).
mask07777 Todos los bits de permiso válidos.

Equivalente a all | set_uid | set_gid | sticky_bit.

Además, se definen las siguientes constantes de este tipo, que no representan permisos:

Constante miembro Valor (hex) Significado
unknown0xFFFF Permisos desconocidos (por ejemplo, cuando se crea filesystem::file_status sin permisos).

[editar]Notas

Los permisos pueden no ser necesariamente implementados como bits, pero se tratan de esa manera conceptualmente.

Algunos bits de permiso pueden ignorarse en algunos sistemas, y cambiar algunos bits puede cambiar otros automáticamente (por ejemplo, en plataformas sin distinción dueño/grupo/todos (owner/group/all), establecer cualquiera de los tres bits de escritura los establece todos).

[editar]Ejemplo

#include <fstream>#include <bitset>#include <iostream>#include <filesystem>namespace fs = std::filesystem;   void demo_permisos(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("prueba.txt");// crear archivo   std::cout<<"Archivo creado con permisos: "; demo_permisos(fs::status("prueba.txt").permissions());   fs::permissions("prueba.txt", fs::perms::owner_all| fs::perms::group_all, fs::perm_options::add);   std::cout<<"Al agregar u+rwx y g+rwx: "; demo_permisos(fs::status("prueba.txt").permissions());   fs::remove("prueba.txt");}

Posible salida:

Archivo creado con permisos: rw-r--r-- Al agregar u+rwx y g+wrx: rwxrwxr--

[editar]Véase también

(C++17)(C++17)
Determina los atributos de archivo.
Determina los atributos de archivo, verificando el objetivo del enlace simbólico.
(función)[editar]
Modifica los permisos de acceso a archivo.
(función)[editar]
close