У меня есть каталог «включает», с которым мой веб-сервер должен иметь возможность полностью взаимодействовать, но я не хочу, чтобы пользователи могли видеть его содержимое.
Разрешения в Linux (которые, как я полагаю, вы используете) находятся в следующем порядке:
uuu|ggg|ooo
rwx|rwx|rwx
U - пользователь, владелец файла. G - групповой доступ для определенной группы, а O - другой.
Если пользователи не входят в группу, которая может получить к нему доступ, и они не являются владельцами каталога, они попадают в категорию «другие», поэтому вам нужно изменить только последние 3 поля.
Самый простой способ сделать это:
chmod dir o-r
или
chmod dir 770
770 предоставит владельцу и группе полный доступ, но получит доступ от «других». Бессмысленно давать им доступ для записи и выполнения, хотя, если они не могут его прочитать (необходимо для просмотра содержимого), вы также можете использовать 770 chmod вместо 776 или тому подобное.
Вам нужно будет найти пользователя или группу, от имени которой работает ваш веб-сервер, а затем chown
каталог для этого пользователя и / или группы, затем
chmod -R 660 directory
или что-то подобное.
Предполагается, что вы имеете в виду локальных пользователей :) если вы имеете в виду веб-пользователей, тогда вы должны иметь в виду, что анонимные веб-пользователи обязательно имеют точно такие же разрешения, что и ваш веб-сервер.
Вы, вероятно, захотите использовать файл htaccess, чтобы ограничить разрешение на просмотр этой папки, но прочтите документацию Apache по этому вопросу, чтобы узнать о других, более эффективных альтернативах.
Поместите каталог include за пределы корневого каталога вашего веб-сайта. Вы не хотите, чтобы он находился в каталоге содержимого, поскольку веб-сервер может затем обслуживать его для пользователей сайта. Итак, если корень вашего веб-сайта /var/www/html
провести параллель /var/www/includes
каталог.
chmod
не будет делать то, что вы хотите, так как httpd
процесс - это то, что будет получать доступ ко всем вашим файлам, а не фактические учетные записи оболочки. Вы можете ограничить доступ, используя .htaccess
но это худшее решение для простого перемещения вашего includes
каталог вне области содержимого.
@jeremy (так как у меня нет представителя, который бы прокомментировал его ответ): вы не хотите изменять каталог с помощью chmod 660, потому что это даст владельцу и группе разрешение отклонить ошибки и / или странный вывод.
например,
ls -l testingjunk
ls: невозможно получить доступ к тестируемому мусору / что-то: в доступе отказановсего 0
- ????????? ? ? ? ? ? что-то
Я забыл показать эту часть.
ls -ld testingjunk [16:32]
drw-rw---- 2 wjenkin2 itstaff 4096 2009-07-02 16:30 testingjunk/
`
Предполагая, что вы хотите, чтобы процессы веб-сервера могли читать и записывать файлы в каталог (но не обслуживать контент из), вы хотите
Если ваш веб-сервер работает как никто (непривилегированный пользователь, под которым в некоторых дистрибутивах запускается несколько серверных процессов), имейте в виду, что другие процессы, запущенные от имени этого пользователя, также могут получить доступ к каталогу. Если это проблема, вы можете создать специального пользователя для своего веб-сервера. Это повлечет за собой изменение конфигурации веб-сервера и / или сценариев запуска в дополнение к созданию пользователя и группы.
Поскольку я рекомендую режим 0700, группа технически не важна, но вы должны помнить, что веб-сервер может создавать файлы с более широкими разрешениями (664 или 775) внутри этого каталога, если для umask пользователя веб-сервера установлено значение 002 вместо более распространенного 022. Выделенная группа гарантирует, что такие файлы не будут случайно открыты для записи другими членами общей группы, в которую вы можете вставить пользователя веб-сервера.
Убедитесь, что ваш веб-сервер работает от имени пользователя с ограниченными правами и с ограниченной группой в качестве своей группы. Затем убедитесь, что файлы доступны только пользователю и / или группе, удалив публичный доступ на чтение и выполнение (публичный доступ на запись почти никогда не должен предоставляться).
Тем, кто обслуживает сайт, также необходим доступ к материалам - желательно без привилегий суперпользователя. Это может изменить ваш образ действий.
Подумайте, подходят ли ACL - они позволят вам предоставить группе веб-серверов доступ для чтения к файлам, группе обслуживания - доступ для чтения и записи, и при этом запретить общий доступ. Без ACL у вас может быть только один набор групповых привилегий.
Если вы удалите права на чтение, они не смогут видеть, какие файлы там есть. (Если вы удалите выполнять привилегии, то они не могут перейти к нему.)
Бит «x» (выполнить) в каталоге в Linux / Unix - это тот, который определяет, можете ли вы перечислить его содержимое.