как вы устанавливаете права на файлы и папки в среде общего веб-хостинга? вы используете apache + suexec? как вы можете запретить членам группы www читать файлы, принадлежащие другим пользователям в системе? (через ssh или php)
Половина решения - это chroot пользователей тюрьмы в их соответствующие DocumentRoots, когда они входят в систему для передачи файлов.
Этого легко добиться с помощью SSH (SFTP / SCP), используя ChrootDirectory директива.
Редактировать:
Поскольку вышеупомянутая практика deacto была неожиданно отвергнута, я могу также предоставить и другую половину.
Как правило, единственный способ предотвратить доступ модулей сценариев Apache к файлам в FS, чего они не должны делать, - это запустить их через suEXEC как CGI. Что, на мой взгляд, довольно ужасно. Затем вам нужно будет отдельно убедиться, что файлы каждого пользователя ограничены только их собственным UID / GID, т.е. umask 027
. В качестве альтернативы есть некоторые сторонние модули, которые сделают это в коробке для вас, например suPHP.
Наиболее распространенной практикой является то, что каждый пользователь в среде общего веб-хостинга будет иметь свой собственный UID (имя пользователя) и GID (группу), отдельный от того, на котором работает веб-сервер Apache. Вы можете использовать suexec, чтобы CGI работали с теми же разрешениями, что и пользователь, а не пользователь / группа веб-сервера. PHP уже сделает это за вас, запустив от имени пользователя и не позволяя коду получить доступ к тому, на что у него нет разрешений.
Проблема будет в том, чтобы лишить участников возможности читать файлы. Поскольку разрешения должны быть достаточно открытыми, чтобы сервер Apace мог их прочитать, чтобы иметь возможность их обслуживать. Я бы рекомендовал, чтобы у каждого пользователя был свой собственный UID / GID, тогда 0664 для файлов и 0775 для каталогов. Это дает «другим» доступ только для чтения.
Тюрьмы FreeBSD являются вариантом.