Как определить уровень доступа к каталогу

Мне нужно проверить может-ли обычный пользователь(без админ прав) изменять каталог(Создавать файлы например) или только читать.Как я могу это узнать?


Ответы (1 шт):

Автор решения: dIm0n

Вот так можно узнать права на произвольный файл (в том числе директорию):

#include <filesystem>
#include <iostream>

namespace fs = std::filesystem;

void log_permissions(fs::perms p) {
    std::clog << ((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() {
    log_permissions(fs::status("test.txt").permissions());
}

Пример вывода:

rw-r--r--

→ Ссылка