Возможно ли в OS X (предположим, 10.7+) отключить выполнение любого файла (даже файлов в подкаталогах) указанной папки?
Я не имею в виду с chmod
, но с какой-то структурой безопасности. В идеале должен быть какой-то способ применить политику к папке, которая повлияет на всех дочерних элементов.
Представить:
/path/to/folder/: <- policy applied here
file_a
subfolder_a/:
file_b
subfolder_b/:
file_c
Ни один из file_a
, file_b
, или file_c
можно будет казнить.
Для некоторой предыстории я пытаюсь запретить пользователям запускать любые программы в их домашнем каталоге.
Вы можете использовать список контроля доступа, потому что он обеспечивает наследование и более детальный контроль ...
Следующее НЕ тестировалось в производстве. ymmw
Запретить пользователю вернуть себе право:
chmod +a "user:jane deny write-security directory-inherit" /path/to/folder
Запретить выполнение для всех файлов уже содержится в / путь / к / папке
chmod -R +a "user:jane deny execute" /path/to/folder/
Запретить выполнение для всех файлов еще нет содержится в / путь / к / папке
chmod +a "user:jane deny execute file-inherit" /path/to/folder/
Подробности здесь: Страница руководства Apple по chmod
Вы можете сделать это с помощью нюансов прав владельца и группы. Насколько я понимаю, OSX похожа на Linux?
Если вам все равно, могут ли пользователи создавать файлы или папки, вы можете chown
все файлы для пользователя, кроме них, что не позволяет им иметь право на выполнение chmod самостоятельно. Если файлы 664 root:users
и пользователь входит в группу пользователей, они могут редактировать файл по своему желанию.
Чтобы предотвратить создание файла пользователем (и, следовательно, возможность его владения chmod
это 7xx), вы можете chown
каталоги другому пользователю, скажем chown staff:users directory
. Для этого нужен «штатный» пользователь. Ты мог chmod 555
(или 551 или 550) каталоги и 664 файлы. Но это не очень удобно ... каталоги должны быть исполняемыми для cd
им, читаем ls
их, и с возможностью записи для создания или удаления файлов и подпапок. Эта политика несколько драконовская.
Или сделать chmod
и chown
так что обычные пользователи не могут запускать их, чтобы сделать свои собственные файлы исполняемыми. Кто-то из группы «персонал» может использовать его, но не обычные пользователи, что является нормальным компромиссом:
# From:
/bin$ ls -alh ch*
-rwxr-xr-x 1 root root 59K Jan 26 2013 chgrp
-rwxr-xr-x 1 root root 55K Jan 26 2013 chmod
-rwxr-xr-x 1 root root 63K Jan 26 2013 chown
# To:
/bin$ ls -alh ch*
-rwxrwx--- 1 root staff 59K Jan 26 2013 chgrp
-rwxrwx--- 1 root staff 55K Jan 26 2013 chmod
-rwxrwx--- 1 root staff 63K Jan 26 2013 chown
Исследования с использованием umask
чтобы узнать, есть ли способ запретить пользователям создавать файл с установленными разрешениями на выполнение, которые в сочетании с указанными выше разрешениями на файлы могут избавить от глупого владения их каталогами.
Обращайте внимание на каскадные эффекты при игре с разрешениями и постарайтесь представить все способы, которыми что-то может пойти не так или быть побежденным. Взломайте себя, чтобы увидеть, что произойдет.
Наилучшая гибкость заключается в сочетании некоторых из вышеперечисленных с осторожным использованием «липких» битов владельца и группы. Их можно настроить таким образом, чтобы при создании файлов или каталогов пользователи «придерживались» унаследованного владения. Я делаю это с помощью общего RAID-массива на нашем сервере Samba, чтобы мои люди, работающие с Windows, имели надлежащий опыт.
В find
Команда - это мощный инструмент, помогающий сделать следующее:
Измените все подкаталоги с 500 до 770 разрешений (чтобы восстановить предыдущий chmod -R
облажаться):
find . -type d -perm 500 -print0 | xargs -0 chmod 770
Измените все файлы ниже (и подкаталоги) с разрешениями с 644 на 664, что дает группе право редактировать файлы: отлично для файлов веб-сервера, редактируемых из Windows в общей папке Samba:
find . -type f -perm 644 -print0 | xargs -0 chmod 664