К какой группе должен принадлежать public_html?

У меня есть сервер приложений, работающий в Linux - CentOS.

Чтобы иметь возможность редактировать мои php-файлы в Windows, я связал сервер со своей учетной записью Dropbox и создал символическую ссылку из папки Dropbox, которая находится в / root / Dropbox, в мою папку public_html. Затем, когда я попытался отредактировать файл в public_html через Windows, его разрешение превратилось в root, и я получил знаменитую ошибку 500. Я догадался, что это связано с указанным разрешением символической ссылки, поэтому я изменил разрешение для символической ссылки на свою учетную запись пользователя, но оно не изменилось. Но то, что произошло дальше, ошеломило меня: внезапно, когда я пытаюсь получить доступ к любой странице на моем сайте, я получаю:

Запрещено У вас нет прав доступа к /My/site/name/page.php на этом сервере.

Покопавшись, я обнаружил, что владельцем и группой public_html является root, ps aux | grep apache показал

root      4533  0.0  0.0  10892  1604 ?        S    Jul31   0:00     /usr/local/apache/bin/httpd -k start -DSSL
nobody    4534  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4535  0.0  0.1  10892  2952 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4536  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4537  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4538  0.0  0.1  10892  2956 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4551  0.0  0.1  10892  2208 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4556  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4565  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL
nobody    4572  0.0  0.1  10892  2200 ?        S    Jul31   0:00 /usr/local/apache/bin/httpd -k start -DSSL

изменение группы public_html на никто не добился цели и убрал эту ошибку. Но я не знаю, так ли это, я имею в виду, я не знаю, в какой группе это было раньше.

Итак, у меня есть два предложения:

1. Для данного пользователя apache, к какому пользователю должен принадлежать public_html?

2. Если ответ на 1 - root, можете ли вы вспомнить причину, которая привела к внезапному возникновению этой ошибки, и что нужно сделать, чтобы ее исправить?

Стоит отметить, что я начал с того, что разместил вопрос здесь, но не получил никакого ответа, поэтому я пытаюсь здесь. Надеюсь, это законно.

1 ответ

Решение

Вы можете запустить Dropbox как пользователь без полномочий root, иметь public_html, принадлежащий этому пользователю и группе apache, и разрешить rwxrwx--- (т.е. 770), чтобы и ваш пользователь, и Apache могли читать и писать.

Кроме того, как общий принцип администрирования Linux/Unix, вы никогда не должны запускать приложения с правами root, если только вам это не нужно.

Чтобы объяснить, почему Apache, по-видимому, использует root, приложениям разрешено прослушивать привилегированные порты (те, что ниже 1024), только если они запускаются с привилегиями root. Поскольку HTTP/HTTPS обслуживается на портах 80/443 (соответственно), Apache запускается от имени пользователя root и затем разветвляет процессы под своим собственным пользователем (по умолчанию он называется "apache" в дистрибутивах на основе Red Hat, одним из которых является CentOS), или 'www-data' в дистрибутивах на основе Debian - например, Ubuntu). Непривилегированный пользователь может быть настроен в вашей конфигурации Apache, хотя для 95% приложений по умолчанию подойдет.

Другие вопросы по тегам