Назад | Перейти на главную страницу

Как заблокировать доступ для пользователей, но не для http?

Мои веб-файлы находятся в /var/www/html/example.com/web/

Разрешения:

drwxr-xr-x 20 root   root  4096 Aug 13 18:22 var
... same for www and html ...
drwxr-xr-x 4  root   root  4096 Aug 13 18:22 example.com
drwxr-xr-x 10 apache root  4096 Aug 13 18:22 web

У меня есть FTP-пользователь ftpuser, но я не хочу, чтобы у него был доступ к файлам в /var/www/html/

Однако, если я попробую chmod o-rx в ЛЮБОЙ из папок родительского уровня выдается ошибка 403 Forbidden, хотя у пользователя Apache все еще есть разрешения RX в Интернете.

Как я могу запретить ftpuser переходить в эти каталоги и читать файлы, не блокируя доступ для пользователей, заходящих через браузер?

Заметка - странно то, что у меня аналогично настроен другой сервер, где я просто сделал chmod o-rx в папке example.com, и все оставалось доступным в Интернете.

У вас есть несколько вариантов, но я бы установил suPHP, если мое предположение, что вы используете Apache, верно; Если нет, то я надеюсь, что мой ответ все равно направит вас на правильный путь.

Это позволяет запускать сценарии PHP от имени пользователя, не являющегося пользователем веб-сервера. Затем вы можете указать FTP-серверу заблокировать пользователей в их $ HOME и переместить DocumentRoot в домашнюю папку ftpuser. Вы не упомянули, какой дистрибутив Linux вы используете, но вот руководство по установке в Ubuntu, и вот один для CentOS 6.

Другие варианты включают в себя возня с расположением домашней папки ftpuser, и я бы избегал этого по причинам стандартизации - suPHP справится с этой задачей отлично и без чрезмерного вмешательства в конфигурацию вашей системы.

Единственная важная вещь, которую следует отметить с suPHP, - это то, что разрешения должны быть на 100% правильными, иначе вы получите ошибки сервера. Я пока не могу разместить больше двух ссылок, поэтому просто Google «исправьте разрешения suphp» и выберите страницу «piyecarane.wordpress.com» (первая ссылка для меня в настоящее время).

просто установите веб-сервер (apache, www, www-data, что бы он ни был в вашем дистрибутиве как владелец)

chown -R apache:root /var/www/html
chmod -R o-rwx /var/www/html/

(Эти команды должны давать точно что ты просил. Я не уверен, что это именно то, что вам нужно, поскольку он запрещает ftpuser доступ к любым файлам, даже отдаленно связанным с публичным обслуживанием ...

если вы хотите, чтобы пользователь ftp имел доступ к: /var/www/html/example.com/web/ затем запустите приведенные выше команды, а затем следующее:

chown -R ftpuser:apache /var/www/html/example.com/web/
chmod -R g+rx /var/www/html/example.com/web/

Это не идеальные разрешения, но они должны быть близки к завершению работы. (и вам, вероятно, придется предоставить ftpuser rx для всех родительских каталогов: /var/www/html/example.com/web/

Этот вопрос, вероятно, лучше подходит для суперпользователя или Linux.


Судя по вашим опубликованным разрешениям, я думаю, вам просто нужно chown -R apache:root в example.com/ каталог, затем сделайте chmod o-rx чтобы лишить доступа всех, кроме веб-сервера (и root). Ваша последняя альтернатива включает расширенные атрибуты (например, разрешения ntfs).