В среде общего веб-хостинга есть пара проблем, которые необходимо решить сразу же.
Что касается прав доступа к каталогам и возможности доступа только к вашим файлам: вы хотите установить такие права доступа к домашнему каталогу, чтобы группа «другие» не имела никаких прав. Помните, что для перехода к каталогам требуется разрешение eXecute, но это само по себе не позволит вам прочитать их содержимое. Следовательно, / home должен принадлежать пользователю root и иметь rwxr-x - x, чтобы пользователи могли только «вслепую» перейти в свою домашнюю папку, но не могли взглянуть и узнать, сколько пользователей в вашей системе. Это будет выглядеть примерно так (дата, размер и т. Д. Опущены для ясности):
# ls -la /home
drwxr-x--x root root .
drwxr-xr-x root root ..
drwxr-x--- usr1 usr1 usr1
drwxr-x--- usr2 usr2 usr2
...
Если вы действительно не хотите, чтобы пользователи могли читать содержимое каталогов, таких как / bin
и т.д., просто удалите бит разрешения «чтение» для группы «другие». Это не повлияет на их способность использовать содержащиеся в них двоичные файлы, если они заранее знают полный маршрут.
Для доступа по SSH и FTP, если вы правильно настроите права доступа к файловой системе, то любая достойная реализация SSH или FTP уже будет защищена. Я рекомендую vsftpd для FTP, конечно, OpenSSH для SSH, но я ни в коем случае не подразумеваю, что это единственно доступные правильные варианты. Не забудьте настроить параметры конфигурации для этих служб (в частности, запретить вход в систему root через SSH, возможно, запретить вход по паролю для всех, кто поддерживает sudo и т. Д.)
Сложная часть - правильно настроить ваш веб-сервер, особенно если вам нужно запустить Скрипты CGI для динамических сайтов.В наши дни все и их бабушки хотят PHP, и вы действительно не можете запустить /home/dumbuser/public_html/php_shell.php
от имени того же пользователя, который породил ваш Apache / Nginx, верно?
A Возможное решение здесь, если вы используете веб-сервер Apache, заключается в использовании модуля suexec , который будет запускать ваш сценарий CGI от имени пользователя, владеющего исполняемым файлом (подумайте, что это бит setuid). Чтобы разрешить HTTP-серверу доступ к фактическим файлам, рассмотрите возможность добавления пользователя, от имени которого работает сервер (тип. www-data
), в каждую группу пользователей в системе («каждая группа пользователей» означает каждого пользователя, использующего ваша общая среда, а не каждая учетная запись пользователя в системе).
Обратите внимание, что это едва царапает поверхность всего, что должно быть сделано для правильной настройки и защиты разделяемого сервера. Файлы конфигурации для каждой запущенной службы должны быть полностью поняты, и вам, вероятно, придется изменить их в соответствии с вашими потребностями. В частности, вам, вероятно, придется потратить хорошую неделю на изучение параметров конфигурации вашего веб-сервера и опробование их в среде разработки / тестирования.
Если у вас нет разрешения r
для каталога, а только x
, вы не можете "сканировать" каталог, но вы можете получить доступ к любому файлу в нем, имя которого вы знаете.
Если вы выполните ls -ld / bin
, вы можете увидеть, что установлен режим drwxr-x - x
, чтобы увидеть, что "другой" из / bin
может использовать в нем программы, такие как / bin / ls
, но не может обращаться (просматривать) к каталогу при сканировании.
Между пользователями, то есть каталогами / home / *
, можно также отбросить разрешение x
, чтобы полностью запретить перекрестный доступ.