We rise up for the things we believe in over and over again

Задали тут задачку на прошлой работе. Строго говоря, задали ее не мне, ибо я там уже не работаю, но проблему озвучили при мне, и в голове тут же щелкнуло - это ж работа обычного скрипта, а чего б его не накатать для тренировки?
Задача состоит в следующем. Есть каталог. На этот каталог привешен доступ для определенной учетки на чтение всего, что в нем лежит. От имени этой учетки работает спец. ПО, которое таскает фотографии из подпапок этого здорового каталога в информационную систему. Беда в том, что на некоторых подпапках (почему-то) выставляются совершенно дикие разрешения, среди которых нужной учетки просто нет. Соответственно, фотографии из этой подпапки не попадают в ИС, после чего вопли до небес и т.д., и т. п.,
Почему разрешения могут плыть - отдельный разговор, есть подозрение, что такие каталоги не создаются пользователями, а перемещаются из других папок с сохранением прав. Это еще предстоит проверить, а пока нужно найти все такие подкаталоги и поправить разрешения на них - просто сбросив их в наследуемые от родителя. Сказано - сделано:
Получившая строчка, где определяется переменная $ace - нечто, но оно мне нравится. Если непонятно, объяснение выглядит вот так:
- берется список разрешений на каталог, имя которого получаем в цикле foreach (список будет в памяти в виде объекта),
- раскрываем в этом объекте нужное нам свойство - access. Именно там перечислены все учетные записи, которые есть в списке прав доступа,
- пробегаемся по всем элементам в этом свойстве и ищем там запись, совпадающую с заданным пользователем,
- эту самую полученную запись заносим в переменную $ace (Access Control Entry)
Много слов, а строка одна, и, в общем-то, довольно простая
