std::experimental::filesystem:: perms
|
헤더 파일에 정의됨
<experimental/filesystem>
|
||
|
enum
class
perms
;
|
(filesystem TS) | |
이 타입은 파일 접근 권한을 나타냅니다.
perms
는
BitmaskType
요구 사항을 충족합니다
(이는 비트 연산자
operator
&
,
operator
|
,
operator
^
,
operator~
,
operator
&
=
,
operator
|
=
, 그리고
operator
^
=
가 이 타입에 대해 정의됨을 의미합니다).
접근 권한 모델 POSIX 권한 비트 , 그리고 개별 파일 권한들( status 에 의해 보고되는)은 다음 비트들 중 일부의 조합입니다:
목차 |
멤버 상수
| 멤버 상수 | 값 (8진수) | POSIX 동등값 | 의미 |
|---|---|---|---|
none
|
0 | 설정된 권한 비트 없음 | |
owner_read
|
0400 | S_IRUSR | 파일 소유자에게 읽기 권한 있음 |
owner_write
|
0200 | S_IWUSR | 파일 소유자에게 쓰기 권한 있음 |
owner_exec
|
0100 | S_IXUSR | 파일 소유자에게 실행/검색 권한 있음 |
owner_all
|
0700 | S_IRWXU |
파일 소유자에게 읽기, 쓰기, 실행/검색 권한 모두 있음
다음과 동등함: owner_read | owner_write | owner_exec |
group_read
|
040 | S_IRGRP | 파일의 사용자 그룹에게 읽기 권한 있음 |
group_write
|
020 | S_IWGRP | 파일의 사용자 그룹에게 쓰기 권한 있음 |
group_exec
|
010 | S_IXGRP | 파일의 사용자 그룹에게 실행/검색 권한 있음 |
group_all
|
070 | S_IRWXG |
파일의 사용자 그룹에게 읽기, 쓰기, 실행/검색 권한 모두 있음
다음과 동등함: group_read | group_write | group_exec |
others_read
|
04 | S_IROTH | 다른 사용자에게 읽기 권한 있음 |
others_write
|
02 | S_IWOTH | 다른 사용자에게 쓰기 권한 있음 |
others_exec
|
01 | S_IXOTH | 다른 사용자에게 실행/검색 권한 있음 |
others_all
|
07 | S_IRWXO |
다른 사용자에게 읽기, 쓰기, 실행/검색 권한 모두 있음
다음과 동등함: others_read | others_write | others_exec |
all
|
0777 |
모든 사용자에게 읽기, 쓰기, 실행/검색 권한 모두 있음
다음과 동등함: owner_all | group_all | others_all |
|
set_uid
|
04000 | S_ISUID | 실행 시 사용자 ID를 파일 소유자 사용자 ID로 설정 |
set_gid
|
02000 | S_ISGID | 실행 시 그룹 ID를 파일의 사용자 그룹 ID로 설정 |
sticky_bit
|
01000 | S_ISVTX | 구현체 정의 의미를 가지지만, POSIX XSI는 디렉토리에 설정된 경우 디렉토리가 다른 사용자에게 쓰기 가능하더라도 파일 소유자만 파일을 삭제할 수 있도록 지정함 ( / tmp 와 함께 사용됨) |
mask
|
07777 |
모든 유효한 권한 비트
다음과 동등함: all | set_uid | set_gid | sticky_bit |
또한, 권한을 나타내지 않는 이 유형의 다음과 같은 상수들이 정의되어 있습니다:
| 멤버 상수 | 값 (16진수) | 의미 |
|---|---|---|
unknown
|
0xFFFF | 알 수 없는 권한 (예: file_status 가 권한 없이 생성된 경우) |
add_perms
|
0x10000 | permissions 에게 권한 비트를 추가하되 지우지 않도록 지시하는 제어 비트 |
remove_perms
|
0x20000 | permissions 에게 권한 비트를 지우되 추가하지 않도록 지시하는 제어 비트 |
resolve_symlinks
|
0x40000 | permissions 에게 심볼릭 링크를 해결하도록 지시하는 제어 비트 |
참고 사항
권한은 반드시 비트로 구현되지는 않지만, 개념적으로는 그렇게 취급됩니다.
일부 권한 비트는 일부 시스템에서 무시될 수 있으며, 일부 비트를 변경하면 자동으로 다른 비트가 변경될 수 있습니다(예: 소유자/그룹/전체 구분이 없는 플랫폼에서 세 가지 쓰기 비트 중 하나를 설정하면 세 비트 모두가 설정됨).
예제
#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"); // 파일 생성 std::cout << "생성된 파일 권한: "; 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 << "o+rwx 및 g+rwx 추가 후: "; demo_perms(fs::status("test.txt").permissions()); fs::remove("test.txt"); }
가능한 출력:
생성된 파일 권한: rw-r--r-- o+rwx 및 g+rwx 추가 후: rwxrwxr--
참고 항목
|
파일 속성 결정
심볼릭 링크 대상 확인하며 파일 속성 결정 (function) |
|
|
파일 접근 권한 수정
(function) |