К какой группе должен принадлежать 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% приложений по умолчанию подойдет.