Я немного поработал в интернете и не нашел хорошего способа программно определить, есть ли у данного файла функция определения целостности.
Я заметил, что, в отличие от большинства заголовков Linux, с которыми я сталкивался, Дарвин не определяет их биты st_mode в структуре stat, определенной в /sys/stat.h.Кажется, что лучший способ реализовать это - отработать существующий заголовок sys / stat.h, однако, очевидно, почему они не захотят открыто об этом говорить.Кто-нибудь смотрел на это больше?
Редактировать
Основания для Кена Томаса предлагают мой вариант проверки, если это выглядит так.Глядя на комментарии в источнике, кажется, что это должно работать, однако он все еще пытается ввести каталоги, такие как: "/ Users / / Library / IdentityServices" Вызывая ошибку сегментации.К вашему сведению, я проверил это с инструкциями IFDEF препроцессора и без них.
if(
(entry->d_type == DT_DIR)
&& ((fileStat.st_flags & SF_RESTRICTED) == 0)
&& (((fileStat.st_mode & 5) == 5)
|| (((fileStat.st_mode & 40) == 40)
&& (fileStat.st_gid == userHomeStat.st_uid))
|| (((fileStat.st_mode & 320) == 320)
&& (fileStat.st_uid == userHomeStat.st_uid))))
{
std::cout<< "Decending into --> " << fullPath.c_str() <<std::endl;
packIndexFrom((fullPath).c_str());
}
EDIT
https://developer.apple.com/library/archive/documentation/Security/Conceptual/System_Integrity_Protection_Guide/FileSystemProtections/FileSystemProtections.html#//apple_ref/doc/uid/TP40016462-CH2-SW1
Я нашел это на сайте Apple.Кажется, это указывает на то, что область $ HOME / Library, в которой я зацикливаюсь, подпадает под какое-то ограничение, с эксклюзивным правовым доступом для разработчиков.К сожалению, не решает мою проблему.
Редактировать
Dans-MBP:tmp mreff555$ cd ~/Library/IdentityServices/
Dans-MBP:IdentityServices mreff555$ pwd
/Users/mreff555/Library/IdentityServices
Dans-MBP:IdentityServices mreff555$ ls
ls: .: Operation not permitted
Dans-MBP:IdentityServices mreff555$
Dans-MBP:IdentityServices mreff555$ ls -ldO ~/Library/IdentityServices
drwxr-xr-x 9 mreff555 staff - 288 Apr 14 10:04 /Users/mreff555/Library/IdentityServices