Я ищу способ определения прав доступа к файлу для текущего пользователя (т. Е. UID процесса) в системах, совместимых с POSIX. Я не хочу пытаться открыть файл - это может стать беспорядочным с каталогами и всеми специальными файлами.определить права доступа к файлам для текущего пользователя
Я составляю список каталогов указанного каталога и для каждого файла, сообщающий о множестве вещей: имя файла, размер, тип (файл/каталог/другое), разрешения (вы можете читать, вы можете писать). Для размера и типа у меня уже есть результаты вызова stat
.
Вот что я придумал:
if ((dirent->st_uid == getuid() && dirent->st_mode & S_IRUSR)
|| (dirent->st_gid == getgid() && dirent->st_mode & S_IRGRP)
|| (dirent->st_mode && S_IROTH)) entry->perm |= PERM_READ;
if ((dirent->st_uid == getuid() && dirent->st_mode & S_IWUSR)
|| (dirent->st_gid == getgid() && dirent->st_mode & S_IWGRP)
|| (dirent->st_mode && S_IWOTH)) entry->perm |= PERM_WRITE;
Должен ли я сделать так, или есть простой вызов/макрос, который будет сделать то же самое? Бонусные баллы за поддержку ACL, хотя на данный момент это не является абсолютно необходимым.