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