Привет Я работаю в среде Linux, и я пытаюсь написать команду, которая примет путь как входной и выведет список всех пользователей с доступом для чтения к этому файл/каталог.Создайте список пользователей с доступом для чтения к файлам
Например, если файл/a/b/c принадлежит файлам userid, u и groupid, g, с некоторыми разрешениями, я хочу, чтобы эта команда идентифицировала разрешения/a и/a/b, а затем вычислила все пользователи, которые могут читать c. В частности, у меня возникают проблемы, когда группы участвуют.
Я пытаюсь отделить идентифицирующую читать доступа на основе от группы в случаях:
1) г совпадает с GID С в родительской GID, гп, (или прародителя, и т.д ..), в этом случае, любой член of g может читать c, если gp имеет разрешение: 040 или менее ограничительное.
2) g отличается от g, g. Два подслучата:
... a) userid m является членом g (для всех m в g (m не принадлежит c)) и владеет родителем c, p. Тогда m может читать c, если p имеет разрешение: 400 или менее ограничительное.
... b) userid m является членом g (для всех m в g c c (m не принадлежит c)) и не имеет родителя c, p. Тогда m может читать c, если p имеет разрешение: 004 или менее ограничительное.
3) u владеет p, и в этом случае p нуждается в разрешениях 400 или менее ограничительных.
Кстати, у меня есть root доступ к этой системе. Я предполагаю, что мне придется сделать серию кошек в/etc/group и/etc/passwd и grep для получения соответствующей информации, и это нормально. Кроме того, в этой среде мы можем рассматривать «stat» бесплатно (это часть более крупного проекта, где у нас уже есть эта информация).
Я предполагаю, что я ищу существующее решение, псевдокод или кто-то, кто поможет мне разобраться в алгоритме и других соображениях, которые мне не хватает. Не стесняйтесь задавать уточняющие вопросы в случае необходимости - я знаю, что эта псевдо-логика здесь не самая легкая для чтения. Спасибо, парни.
И не забудьте проверить обход каталога до корня. –