std::filesystem:: perms
|
Definido en el encabezado
<filesystem>
|
||
|
enum
class
perms
;
|
(desde C++17) | |
Este tipo representa los permisos de acceso a archivos.
perms
satisface los requisitos de
BitmaskType
(lo que significa que los operadores bit a bit
operator
&
,
operator
|
,
operator
^
,
operator~
,
operator
&
=
,
operator
|
=
, y
operator
^
=
están definidos para este tipo).
none
representa la máscara de bits vacía; cada otro enumerador representa un elemento de máscara de bits distinto.
Modelo de permisos de acceso Bits de permisos POSIX , y cualquier permiso de archivo individual (según lo reportado por filesystem::status ) son una combinación de algunos de los siguientes bits:
Contenidos |
Constantes de miembro
| Constante de miembro | Valor (octal) | Equivalente POSIX | Significado |
|---|---|---|---|
none
|
0 | No hay bits de permiso establecidos | |
owner_read
|
0400 | S_IRUSR | El propietario del archivo tiene permiso de lectura |
owner_write
|
0200 | S_IWUSR | El propietario del archivo tiene permiso de escritura |
owner_exec
|
0100 | S_IXUSR | El propietario del archivo tiene permiso de ejecución/búsqueda |
owner_all
|
0700 | S_IRWXU |
El propietario del archivo tiene permisos de lectura, escritura y ejecución/búsqueda
Equivalente a owner_read | owner_write | owner_exec |
group_read
|
040 | S_IRGRP | El grupo de usuarios del archivo tiene permiso de lectura |
group_write
|
020 | S_IWGRP | El grupo de usuarios del archivo tiene permiso de escritura |
group_exec
|
010 | S_IXGRP | El grupo de usuarios del archivo tiene permiso de ejecución/búsqueda |
group_all
|
070 | S_IRWXG |
El grupo de usuarios del archivo tiene permisos de lectura, escritura y ejecución/búsqueda
Equivalente a group_read | group_write | group_exec |
others_read
|
04 | S_IROTH | Otros usuarios tienen permiso de lectura |
others_write
|
02 | S_IWOTH | Otros usuarios tienen permiso de escritura |
others_exec
|
01 | S_IXOTH | Otros usuarios tienen permiso de ejecución/búsqueda |
others_all
|
07 | S_IRWXO |
Otros usuarios tienen permisos de lectura, escritura y ejecución/búsqueda
Equivalente a others_read | others_write | others_exec |
all
|
0777 |
Todos los usuarios tienen permisos de lectura, escritura y ejecución/búsqueda
Equivalente a owner_all | group_all | others_all |
|
set_uid
|
04000 | S_ISUID | Establecer ID de usuario al ID del propietario del archivo durante la ejecución |
set_gid
|
02000 | S_ISGID | Establecer ID de grupo al ID del grupo de usuarios del archivo durante la ejecución |
sticky_bit
|
01000 | S_ISVTX | Significado definido por la implementación, pero POSIX XSI especifica que cuando se establece en un directorio, solo los propietarios de archivos pueden eliminar archivos incluso si el directorio es escribible para otros (usado con / tmp ) |
mask
|
07777 |
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 de miembro | Valor (hex) | Significado |
|---|---|---|
unknown
|
0xFFFF | Permisos desconocidos (por ejemplo, cuando filesystem::file_status se crea sin permisos) |
Notas
Los permisos pueden no implementarse necesariamente como bits, pero se tratan conceptualmente de esa manera.
Algunos bits de permisos pueden ser ignorados en algunos sistemas, y cambiar algunos bits puede automáticamente cambiar otros (por ejemplo, en plataformas sin distinción propietario/grupo/todos, establecer cualquiera de los tres bits de escritura establece los tres).
Ejemplo
#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"); // create file 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"); }
Salida posible:
Created file with permissions: rw-r--r-- After adding u+rwx and g+wrx: rwxrwxr--
Véase también
|
(C++17)
(C++17)
|
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico (función) |
|
(C++17)
|
modifica los permisos de acceso al archivo
(función) |