Определена ли защита целостности системы Mac в файле sys / stat.h? - PullRequest
3 голосов
/ 20 апреля 2019

Я немного поработал в интернете и не нашел хорошего способа программно определить, есть ли у данного файла функция определения целостности.

Я заметил, что, в отличие от большинства заголовков 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

1 Ответ

3 голосов
/ 20 апреля 2019

Есть флаги, которые отделены от флагов режима. Вы ищете флаг SF_RESTRICTED в поле st_flags struct stat. Этот флаг фактически определен в sys / stat.h.

Флаги режима (например, S_IRUSR) определены в sys / _types / _s_ifmt.h, который косвенно включен в sys / stat.h.

...