std::experimental::filesystem:: perms
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
enum
class
perms
;
|
(filesystem TS) | |
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).
Modelo de permisos de acceso POSIX permission bits , y cualquier permiso individual de archivo (como se reporta por 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 tiene permisos de escritura 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 (ej. cuando file_status se crea sin permisos) |
add_perms
|
0x10000 | Bit de control que instruye a permissions a agregar, pero no limpiar bits de permiso |
remove_perms
|
0x20000 | Bit de control que instruye a permissions a limpiar, pero no agregar bits de permiso |
resolve_symlinks
|
0x40000 | Bit de control que instruye a permissions a resolver enlaces simbólicos |
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 entre propietario/grupo/todos, establecer cualquiera de los tres bits de escritura establece los tres).
Ejemplo
#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"); // crear archivo std::cout << "Archivo creado con permisos: "; 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 << "Después de agregar o+rwx y g+rwx: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
Salida posible:
Archivo creado con permisos: rw-r--r-- Después de agregar o+rwx y g+rwx: rwxrwxr--
Véase también
|
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico (función) |
|
|
modifica los permisos de acceso al archivo
(función) |