Выясните, какой пользователь Apache работает как?

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

Я нашел предложение, что вы можете посмотреть в httpd.conf, и будет строка «Пользователь», но в моем файле httpd.conf такой строки нет, поэтому я думаю, что Apache работает как пользователь по умолчанию , Я не могу понять, что это такое.

Итак, мой вопрос (есть):

  • как узнать, что по умолчанию пользователь
  • Мне нужно изменить пользователя по умолчанию.
  • , если да, и я меняю по умолчанию, отредактировав httpd.conf, возможно ли это что-нибудь прикрутить?

Спасибо!

181 голос | спросил Anna 24 MarpmWed, 24 Mar 2010 19:22:31 +03002010-03-24T19:22:31+03:0007 2010, 19:22:31

15 ответов


187

ps aux | egrep '(apache | httpd)' обычно показывает, что работает apache как.

Обычно вам не нужно менять пользователя по умолчанию, «никто» или «apache» обычно являются прекрасными пользователями. Пока его не «корень»;)

edit: более точная команда для поиска двоичных файлов apache

ответил GruffTech 20 AMpTue, 20 Apr 2010 03:19:13 +040019Tuesday 2010, 03:19:13
29

Вы можете попробовать следующую команду:

ps -ef | egrep '(httpd | apache2 | apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $ 1}'
ответил nowthatsamatt 23 PMpFri, 23 Apr 2010 17:53:36 +040053Friday 2010, 17:53:36
8

В соответствии с ubuntuforums.org , на Ubuntu пользователем по умолчанию для apache2 является www-data.

Видно, что это правда на Ubuntu 13.10 Saucy.


Из Lars Noodén на вышеупомянутом форуме.

  

Чтобы убедиться, что действительно установлен [пользователь], проверьте фактические файлы конфигурации.   У зонтичного файла apache2.conf будет что-то вроде следующего:

Пользователь $ {APACHE_RUN_USER}
Группа $ {APACHE_RUN_GROUP}
     

Это ссылка на переменные среды, установленные в /etc /apache2 /envvars.   mod_suexec также позволяет запускать сценарии еще и другого пользователя и группы.

     

Чтобы найти любые виртуальные хосты, которые могут использовать альтернативных пользователей, группы или и то, и другое, проверьте конфигурации.

$ egrep "^ Пользователь | ^ Группа | ^ SuexecUserGroup" /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf

Для дистрибутивов на основе Red Hat это будет (обычно его пользователь работает с httpd apache):

$ egrep "^ Пользователь | ^ Группа | ^ SuexecUserGroup" /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
ответил Kevin 10 J0000006Europe/Moscow 2014, 17:14:57
7

Я знаю, что это старый пост, но он по-прежнему отображается как без ответа, поэтому я сделаю предложение. Если вы не можете найти, какой пользователь или группа Apache работает, возможно, попробуйте открыть файл httpd.conf. Там должна быть запись для «Пользователь» и «Группа». Мало того, что вы можете видеть, какой пользователь Apache должен работать как, но вы можете изменить его, если вы чувствуете необходимость сделать это.

ответил kainosnous 23 AMpFri, 23 Apr 2010 11:53:09 +040053Friday 2010, 11:53:09
7

Вы можете включить строку кода в свой PHP-скрипт:

echo exec ('whoami');
ответил JG Estiot 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2011 06:08:42 +0400 2011, 06:08:42
5

Этот код будет - более или менее - в алфавитном порядке перечислить всех пользователей без полномочий root, выполняющих процессы, содержащие apache (или чье имя содержит apache)

ps aux | grep -v root | grep apache | cut -d \ -f1 | сортировать | уник
ответил user163193 6 MarpmWed, 06 Mar 2013 16:28:08 +04002013-03-06T16:28:08+04:0004 2013, 16:28:08
4
  • Чтобы узнать пользователя, вы можете просто использовать ps aux | grep apache во время работы.
  • Вам не нужно, но если Apache работает под управлением root, возникают проблемы с безопасностью.
  • В-третьих, изменение пользователя Apache изменит его права на доступ к некоторым каталогам. Вы должны убедиться, что /var /www (или везде, где у вас есть ваши сайты) доступно для нового пользователя и группы.
  • В системах, на которых я смотрел, apache всегда устанавливался с помощью apache: apache (или аналогичного) в качестве пользователя и группы, поэтому он, вероятно, должен быть уже установлен таким образом.

ПРИМЕЧАНИЕ. Это тот же ответ, который я дал на Stackoverflow .

ответил Kjir 1 PM00000060000000531 2012, 18:49:05
4

Используйте apachectl -S, покажет что-то пользователю и группе apache, что-то вроде этого

Пользователь: name = "_ www" id = 70
Группа: Имя = "_ www" id = 70
ответил Kyaw 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 11 Sep 2016 03:28:35 +0300 2016, 03:28:35
2

Или вы можете проверить конфигурационный файл apache и искать владельца & группа.

ответил AliGibbs 23 PMpFri, 23 Apr 2010 19:33:18 +040033Friday 2010, 19:33:18
2

Как было предложено Noyo здесь :

APACHE_USER = $ (ps axho user, comm | grep -E "httpd | apache" | uniq | grep -v "root" | awk 'END {if ($ 1) print $ 1}')

И затем:

echo $ APACHE_USER
ответил kenorb 3 Jpm1000000pmThu, 03 Jan 2013 15:36:43 +040013 2013, 15:36:43
0

Альтернативный подход, по крайней мере для дистрибутивов на основе Debian /Ubuntu, - это использовать тот же метод, который Apache делает для установки своего пользователя и группы: source /etc /apache2 /envvars

$ echo "$ (источник /etc /apache2 /envvars & echo" $ APACHE_RUN_GROUP ")"
WWW-данные

Если вы хотите получить фантазию, вы можете подавить ошибки, если файл не найден, и укажите значение по умолчанию:

$ apacheuser = $ (
     source /fail /etc /apache2 /envvars 2> /dev /null & & & &
     echo "$ APACHE_RUN_GROUP" ||
     эхо никто
)
$ echo "$ apacheuser"
никто
ответил MestreLion 4 FebruaryEurope/MoscowbThu, 04 Feb 2016 03:55:01 +0300000000amThu, 04 Feb 2016 03:55:01 +030016 2016, 03:55:01
0

Я нашел эту команду в Документах CakePHP .

 HTTPDUSER = `ps aux | grep -E '[a] pache | [h] ttpd | [_] www | [w] ww-data | [n] ginx' | grep -v root | head -1 | cut -d \ -f1`

Теперь HTTPDUSER содержит имя пользователя, который запускает сервер, echo $ HTTPDUSER в моем случае выводит www-data â € " используя rlerdorf /php7dev .

ответил Nabil Kadimi 13 FebruaryEurope/MoscowbSat, 13 Feb 2016 23:47:45 +0300000000pmSat, 13 Feb 2016 23:47:45 +030016 2016, 23:47:45
0

Использовать lsof и передать порт. apache прослушивается как аргумент. См. Столбец USER для пользовательского приложения, запущенного как.

# lsof -i: 80
COMMAND PID USER FD TYPE DEVICE SIZE /OFF NODE NAME
httpd 21058 root 4u IPv6 74730 0t0 TCP *: http (LISTEN)
httpd 21111 www-data 4u IPv6 74730 0t0 TCP *: http (LISTEN)
httpd 24915 www-data 4u IPv6 74730 0t0 TCP *: http (LISTEN)
ответил David Okwii 25 PMpWed, 25 Apr 2018 16:44:29 +030044Wednesday 2018, 16:44:29
0

Я нашел, что большинство предлагаемых здесь решений являются системными или конфигурационными (в частности, большинство решений вообще не работают в MacOS), и некоторые полагаются на пользователя, который знает, где находятся файлы конфигурации Apache в первом место ...

Итак, я немного обманываю, и пусть Apache сам скажет мне, что к чему.

Простая команда apachectl -S сообщит вам, что вам нужно знать о запущенном экземпляре Apache, и его результаты могут быть легко проанализированы. Вот мое решение, которое я использую в верхней части нескольких скриптов bash для определения множества вещей, которые могут понадобиться в любой момент времени ...

# Сохраните результаты, чтобы нам не приходилось звонить apachetl ...
astatus = `apachectl -S`

# Теперь возьмите все, что вы хотите от результата ...
HTTPD_ROOT_DIR = $ (expr "` echo "$ astatus" | grep ServerRoot`: ". * \" \ (. * \) \ ". *")
HTTPD_DOC_DIR = $ (expr "` echo "$ astatus" | grep \ "Main DocumentRoot \" `": ". * \" \ (. * \) \ ". *")
HTTPD_USER = $ (expr "` echo "$ astatus" | grep \ "Пользователь:. * Name = \" `": ". * \" \ (. * \) \ ". *")
HTTPD_GROUP = $ (expr "` echo "$ astatus" | grep \ "Группа:. * Name = \" `": ". * \" \ (. * \) \ ". *")

Эти значения затем могут использоваться как таковые:

echo $ HTTPD_ROOT_DIR ///etc /httpd
echo $ HTTPD_DOC_DIR ///var /www
echo $ HTTPD_USER //www-data
echo $ HTTPD_GROUP //www-data
ответил Mike Fahy 3 MaramFri, 03 Mar 2017 01:21:12 +03002017-03-03T01:21:12+03:0001 2017, 01:21:12
-1

Сначала узнайте пользователя xampp. Для этого выполните эту строку через xampp

echo exec ('whoami');

Затем вам нужно отредактировать visudo. Для этого просто напишите

sudo visudo

Затем он откроет visudo там, где вы должны предоставить доступ sudo к этому конкретному пользователю.

введите здесь описание изображения

deamon - это мое имя пользователя, поэтому найдите то, что принадлежит вам, и замените имя пользователя в этом поле.

ответил user263504 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 10:43:03 +0300 2017, 10:43:03

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132