std::filesystem::perms
std::filesystem::perms (파일 접근 권한 비트)
파일 접근 권한을 나타내는 비트마스크 열거 타입이에요. POSIX 권한 비트를 모델링해요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
enum class perms;
이 타입은 파일 접근 권한을 나타내요. perms는 BitmaskType 요구사항을 만족해요. none은 빈 비트마스크를, 나머지 각 열거자는 별개의 비트마스크 요소를 나타내요. 접근 권한은 POSIX 권한 비트를 모델링하고, (filesystem::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과 동등) |
set_uid |
04000 | S_ISUID | set-user-ID 비트 |
set_gid |
02000 | S_ISGID | set-group-ID 비트 |
sticky_bit |
01000 | S_ISVTX | 운영체제 정의 의미(옛 스티키 비트) |
mask |
07777 | — | 모든 권한 비트, all | set_uid | set_gid | sticky_bit |
unknown |
0xFFFF | — | 알 수 없는 권한 (운영체제 제공 권한 없음) |
권한 비트 외에도 perms에는 파일시스템 특성이므로 file_status::permissions()를 통해 접근할 수 있는 operator? 계열(예: owned_by_self)은 없어요. (실제로는 perms가 소유자·그룹·기타 클래스 조회를 위한 owner_read 등과 별개로 group_read처럼 명시됨.)
예제
#include <filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
std::ofstream("sandbox.txt"); // 파일 생성
fs::permissions("sandbox.txt", fs::perms::owner_all, fs::perm_options::add);
// 소유자 모든 권한 추가
}