Проблема с настройкой сервера Apache

Я установил и настроил apache на RedHat 7 Image на AWS. Но у меня проблемы с правами/собственностью при загрузке файлов по ssh с помощью filezilla.

Я создал пользователя ssh и добавил его домашний каталог в apache /var/www/html/ и установил на него Magento.

Оригинальная установка:

  1. User:Group of /var/www/html/ is apache
  2. User: root / Group: apache for /var/lib/php/session dir (не уверен, но я думаю, что magento хранит файлы сессий там же, так как я получаю ошибку записи при изменении владельца)
  3. httpd.conf User:Group is apache
  4. С этими настройками, невозможно загрузить файлы с помощью ftp или sftp - ошибка разрешения.

Когда я изменил на:

  1. User:Group of /var/www/html/ is ssh_user
  2. User: ssh_user / Group: ssh_user for /var/lib/php/session dir
  3. httpd.conf User:Group is ssh_user
  4. С этими настройками я смог загрузить файлы, но файлы кэша генерируются как root.

Что мне нужно:

  1. User:Group of /var/www/html/ is ssh_user
  2. Default settings for /var/lib/php/session dir
  3. httpd.conf User:Group is apache

Я хочу иметь возможность загружать файлы через ftp или sftp обычным пользователем.

Как мне этого добиться? Это первый раз, когда я настраиваю apache, поэтому я просто пытаюсь узнать, как сделать это правильно.

0
18.04.2017, 22:38
2 ответа

Пожалуйста, проверьте ваш apache httpd.conf. Там вы можете увидеть ServerRoot и ServerAdmin. Там у вас будет:

ServerRoot "/etc/httpd"
ServerAdmin root@localhost

Права доступа к установке или конфигурации сервера должны быть root, как показано выше, и их не рекомендуется изменять.

Но, для расположения docroot, который обычно /var/www/html, пользователем и группой будет apache. Они могут быть изменены на любого другого пользователя, кроме root. Важно изменить владельца для каталога docroot или DocumentRoot, который находится в /var/www/ или /var/www/html, на apache или любого другого пользователя, не являющегося root. Вы можете изменить его на пользователя по своему выбору. root не рекомендуется устанавливать в качестве пользователя и группы в httpd.conf

User apache
Group apache

убедитесь, что вы должны изменить владельца каталога docroot на того же пользователя, который указан в httpd.conf. По умолчанию пользователь и группа - apache. Поэтому вам нужно изменить владельца каталога docroot /var/www/html на apache, как показано ниже:

sudo chown -vR apache. /var/www/html

Теперь страницы вашего сайта начнут создавать кэш всякий раз, когда вы посещаете веб-страницу, загруженную apache.

В вашем сценарии, поскольку вы используете ssh_user в качестве пользователя, вы можете установить User:Group для желаемого местоположения каталога и всей его внутренней иерархии, например, для пути /var/www/html/, тогда вы можете сделать это с помощью следующей команды.

Синтаксис: sudo chown -vR username:groupname {путь директория-расположение}

sudo chown -vR ssh_user:ssh_user /var/www/html
sudo chown -vR apache:apache /var/lib/php/session

Если вы хотите иметь возможность загружать или передавать файлы через ftp или sftp обычным пользователем, вы можете использовать любой из FileZilla Server или WinSCP, рекомендуется войти под пользователем, владеющим директорией, а затем передавать файлы.

Убедитесь, что у вас есть пользовательские или групповые права на каталог, к которому вы пытаетесь получить доступ.

-1
28.01.2020, 04:47

Любое веб-приложение, которое требует, чтобы все каталоги и файлы были доступны для записи с помощью uid веб-сервера, изначально небезопасно и неработоспособно. Если вы счастливы жить с этим...

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

  2. Добавьте этих пользователей в эту группу -это не обязательно должна быть их основная группа (usermod -G webwriters ssh _user ; usermod -G webwriters apache ;....)

  3. В каждом каталоге верхнего уровня, который находится в области видимости, запустите эти:

chown -R apache:webwriters $DIR
find $DIR -type f -exec chmod g+rw {} \;
find $DIR -type d -exec chmod g+rws {} \;

Теперь группа может записывать все файлы и каталоги. И когда вы создаете новый файл, он будет принадлежать группе веб-райтеров.

  1. Отредактируйте конфигурацию /etc/ssh/sshd _, добавив -u 002после sftpserver, и перезапустите sshd. Это гарантирует, что новые файлы, скопированные через sftp, будут доступны для записи группой. Не используйте FTP. Если вы хотите использовать scp, вам нужно установить umask в rc-файле оболочки ).

  2. Создайте новый каталог (, если он еще не существует )в /etc/systemd/system/httpd.service.d Добавьте файл -, вы можете назвать его как хотите -содержащий:

[Service]
UMask=0002

затем перезапустите apache. Это гарантирует, что файлы, созданные веб-сервером, также получат предполагаемое право собственности/разрешения.

И, наконец, самое главное, установите HIDS (L5, LIDS, Tripwire )и научитесь им управлять. Установите fail2ban и добавьте ограничения на количество попыток входа в систему.

0
01.06.2021, 21:12

Теги

Похожие вопросы