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

К какой группе должен принадлежать 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, можете ли вы вспомнить какую-либо причину, которая вызвала внезапное возникновение этой ошибки, и что нужно сделать для ее устранения?

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

Вы можете запустить 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% приложений подходит значение по умолчанию.