Apache не может получить доступ к файлу, пока у него есть разрешение

Как вы написали свой псевдоним, команда, которую вы запускаете, будет расширена как

pcmanfm 1>/dev/null 2>&1 & '/'

Это запустит pcmanfm без каких-либо параметров в качестве фонового задания и , затем попытается запустить / как команду.

Возможно, вам нужна функция вместо псевдонима

explorer() { pcmanfm "$@" >/dev/null 2>&1 & }
3
29.12.2018, 12:02
1 ответ

С точки зрения безопасности, не рекомендуется настраивать веб-страницы с одним и тем же пользователем Apache. Пользователь Apache должен иметь возможность читать веб-страницы, но не писать на них.

Таким образом, в стандартной конфигурации веб-структуры могут быть доступны для чтения всем, а при необходимости записи - обычно для записи пользователем Apache, что является кошмаром безопасности.

Один из способов избежать этого - установка / использование mod_ruid2. https: // github.com / mind04 / mod-ruid2

Что касается Debian, этого достаточно:

apt-get install libapache2-mod-ruid2

Обратите внимание, что пользователь Apache по умолчанию зависит от дистрибутива. В Debian это www-data, в RH / CentOS - apache, а в SuSE - wwwrun. С этого момента я буду называть его пользователем Apache по умолчанию.

Если вы не определите какие-либо директивы в vhost, он будет вести себя традиционным образом; в противном случае поведение будет изменено.

Идея состоит в том, чтобы запустить процесс на виртуальном хосте с пользователем, имеющим права на виртуальный хост, и, как таковые, файлы будут иметь это право собственности, и, как вы пожелаете, другие пользователи не смогут читать их. Обычно вы определяете пользователя для каждого виртуального хоста.

В директивах Virtualhost или Directory в vhost вы определяете пользователя и группу, которые будут активны для этого каталога. Пользователь: группа пользователей - это эффективные разрешения, которые Apache будет использовать при доступе к виртуальному хосту / каталогу, и поэтому любой пользователь, принадлежащий к этой группе, сможет записывать / просматривать каталоги.

    <Directory "/vhostdir/">
            RMode config
            RUidGid user usergroup

    ....

Таким образом, теперь при записи каталогов файлы могут быть созданы как 660 с правами собственности user: usergroup, если ими управляет группа пользователей. Точно так же файлы могут быть созданы другим пользователем с разрешениями на чтение для всего мира; однако для записи это будет не пользователь Apache по умолчанию, а другой пользователь.

Таким образом, преимущества mod_ruid2 заключаются в следующем:

  • в среде виртуального хостинга пользователи не могут читать файлы других пользователей;
  • в одном пользователе вы все равно можете создавать файлы как другой пользователь, и ни один из них ни пользователь Apache по умолчанию, ни пользователь ruid2 не смогут их перезаписать
  • , что более важно, записанные файлы теперь будут выполняться пользователем ruid2, а не глобально пользователем по умолчанию Apache.

Со страницы github:

О mod_ruid2 - это модуль suexec для apache 2.0, 2.2 и 2.4,на основе на основе mod_ruid и mod_suid2

- он работает только в Linux, потому что только ядро ​​Linux реализовало необходимые возможности процесса. - он имеет лучшую производительность, чем mod_suid2, потому что ему не нужно убить детей httpd после одного запроса. он использует возможности ядра и после получения нового запроса снова подходит. - есть некоторые проблемы с безопасностью, например, если злоумышленник успешно использует процесс httpd, он может установить эффективные возможности и {{ 1}} setuid в качестве root. Я рекомендую использовать какой-нибудь патч безопасности в ядре (grsec) или что-то в этом роде ..

- есть два основных режима работы: stat и config 1. config по умолчанию, вы должны определить uid и gid. Если идентификатор [ug] не определен, используются пользователь и группа по умолчанию.

  1. stat httpd setuid и setgid для uid и gid запрошенного имени файла (скрипта) / каталога. Это хорошо, если вы используете mod_vhost_alias для виртуального хостинга.

INSTALL 1. Загрузите и установите последнюю версию libcap отсюда 2. run / apachedir / bin / apxs -a -i -l cap -c mod_ruid2.c 3. настройте httpd.conf 4. перезапустите apache

ОПЦИИ КОНФИГУРАЦИИ: RMode config | stat (по умолчанию - config) RUidGid user | #uid group | #gid - когда RMode настроен, устанавливается на этот uid и gid

RMinUidGid user | #uid group | #gid - когда uid / gid меньше min uid / gid установлен на uid / gid по умолчанию RDefaultUidGid user | #uid group | #gid

RGroups group1 group2 - дополнительные группы устанавливаются через setgroups @none - { {1}} очистить все ранее определенные группы.

RDocumentChrRoot - Установить корневой каталог и корень документа внутри

ПРИМЕР:

  
ServerAdmin (скрытый) 
RDocumentChRoot / home / example.com / public_html 
ServerName example.com 
ServerAlias ​​www.example.com 
Конфигурация RMode # не требуется, поскольку конфигурация используется по умолчанию 
RUidGid user1 group1 
RGroups apachetmp 
 
 
RMode stat  
 
 
Конфигурация RMode 
RUidGid user2 group2 
RGroups groups1  
 
  
RUidGid user3 group3  
 
  
Конфигурация RMode {{ 1}} RUidGid user4 user4 
RGroups groups4  
 

4
27.01.2020, 21:18

Теги

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