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);
    // 소유자 모든 권한 추가
}

더 알아보기 (Learn more)

cppreference