Linux узнать пользователя apache

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

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

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

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

почему этот вопрос был опущен? Да, оно было обновлено, поскольку на него уже дан ответ, но я не вижу необходимости в понижении голосов? Это очень хороший вопрос? Возможно, наш голосующий вниз хотел бы добавить конструктивный комментарий по этому поводу?

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

Следующий вопрос: что делать, потому что его один из двух пользователей, как root и www-data . Как вы даете «правильной» группе Apache разрешение на доступ к чему-либо?

ps aux | egrep ‘(apache|httpd)’ как правило, покажет, что работает Apache.

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

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

У меня есть 3 процесса ( /usr/sbin/apache2 -k start ), один пользователь, root а два других www-data . Должен ли я быть обеспокоен?

@zundi, служба запускается с правами root для выполнения таких вещей, как привязка к зарезервированным портам (например, 80 и 443). Затем он запускается независимо от заданного количества процессов для выполнения работы веб-сервера и выполнения любых других задач в соответствии с заданными пользователями. Таким образом, запросы обрабатываются непривилегированными процессами. Вы заметите, что родительский идентификатор (PPID) одинаков для всех других процессов. Эта идея с PID для этого одного процесса, работающего от имени пользователя root.

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

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '' 

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

Это хороший ответ, потому что это одна команда, которая расскажет вам намного больше о вашем работающем веб-сервере и представит его всесторонне.

Согласно Ubuntuforums.org , в Ubuntu пользователь по умолчанию для apache2 — это www-data .

Видно быть правдой на Ubuntu 13.10 Saucy.

От Ларса Нудена на вышеуказанном форуме.

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

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

Читайте также:  Linux mint все выпуски

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

$ egrep "^User|^Group|^SuexecUserGroup" /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf 

Для дистрибутивов на основе Red Hat это будет (как правило, его пользователь, работающий с httpd apache ):

$ egrep "^User|^Group|^SuexecUserGroup" /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf 

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

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

Обратите внимание, это показывает пользователя, под которым работает PHP, а не пользователя Apache. Если вы используете mod_php, это то же самое, но если, как сейчас очень часто, вы используете что-то другое (например, php_fpm), они могут легко отличаться.

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

ps aux | grep -v root | grep apache | cut -d\ -f1 | sort | uniq 

В этот список, вероятно, войдут пользователи, которые запускают такие процессы, как «grep apache», например, «хорошо себя».

  • Чтобы узнать пользователя, вы можете просто использовать ps aux | grep apache его во время работы.
  • Вам не нужно, но если Apache работает от имени пользователя root, возникают проблемы с безопасностью.
  • В-третьих, изменение пользователя Apache изменит его права на доступ к некоторым каталогам. Вы должны убедиться, что / var / www (или там, где у вас есть ваши сайты) доступны для нового пользователя и группы. В системах, на которые я смотрел, apache всегда устанавливался с использованием apache: apache (или аналогичного) в качестве пользователя и группы, поэтому, вероятно, он уже должен быть установлен таким образом.

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

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

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

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

$ echo "$(source /etc/apache2/envvars && echo "$APACHE_RUN_GROUP")" www-data 

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

$ apacheuser = $ ( source / fail / etc / apache2 / envvars 2> / dev / null && echo "$ APACHE_RUN_GROUP" || эхо никому ) $ echo "$ apacheuser" никто

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

Поэтому я немного обманываю и позволяю Apache саму сказать мне, что к чему.

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

# Store the results so we don't have to keep calling apachetl. astatus=`apachectl -S` # Now grab whatever you want from the result. HTTPD_ROOT_DIR=$(expr "`echo "$astatus" | grep ServerRoot`" : ".*\"\(.*\)\".*") HTTPD_DOC_DIR=$(expr "`echo "$astatus" | grep \"Main DocumentRoot\" `" : ".*\"\(.*\)\".*") HTTPD_USER=$(expr "`echo "$astatus" | grep \"User:.*name=\" `" : ".*\"\(.*\)\".*") HTTPD_GROUP=$(expr "`echo "$astatus" | grep \"Group:.*name=\" `" : ".*\"\(.*\)\".*") 

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

echo $HTTPD_ROOT_DIR // /etc/httpd echo $HTTPD_DOC_DIR // /var/www echo $HTTPD_USER // www-data echo $HTTPD_GROUP // www-data 

Источник

Читайте также:  Get ssd info on linux

How do I determine the user Apache is run as?

How to check what is Apache user? I need to give read write permission to it, for some directories in my web root and outside of thee web root directory, how can i do that? Since I dont have proper idea of what Apache user is, I cannot answer my next question.

Why do you need to give read/write permission to it when you don’t know what it does in the first place? Can you add some more detail?

Currently for my software to work well, I need to give 777 permission to the whole directory. But to avoid that, i was suggested to give apache user the correct permissions so that i can avoid doing 777.

the server can be windows/linux. The scenario is, I want to first check whether the concerned directories are writable by apache user programtically using php, and in case if they are not writable, then ask to user to give write permissions to the apache user. so i want to know, what is apache user, how can i give write permissions to it, and how can i test it programatically. i just found that there is some method in php called «is_writable» which i will be using.

6 Answers 6

ps aux | egrep ‘(apache|httpd)’ typically will show what apache is running as.

Usually you do not need to change the default user, «nobody» or «apache»

At the very least you need to specify the OS you are using. Look in your httpd.conf for the «User» directive. It will tell you what user apache will run as.

BTW, I took a quick glance over the user directive in apache, but I did not get the concept properly, can you refer me some links? and Im not getting how to grant permission to that apache user, I mean what command will i write to do that

The apache2 user can be found out as follows. Go to /etc/apache2/apache2.conf and look for User

To find out the value for APACHE_RUN_USER and APACHE_RUN_GROUP, check in /etc/apache2/envvars

export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data 

You may try to use the following command to check it:

ps axo user,group,comm | egrep '(apache|httpd)' 

Or further more (to extract exact username) via:

ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | uniq | cut -d\ -f 1 ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | tail -1 | awk '' 

For Apache group, use the following command:

ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | uniq | cut -d\ -f 2 

Answer 1: what is an Apache user and where it is defined

Читайте также:  How to install tar gz on arch linux

In my default http.conf file located under /etc/apache2/httpd.conf (this file location varies by OS ) om my MAC, apache user is _www ( default user name as it comes with apache download )

since I see this in my httpd.conf

Answer 2: how do I give this user the read write permission to a folder «foo»

check who owns foo, by doing ls -l # Use chown command to make _www ( apache user ) own "foo" folder chown _www foo # user chmod +666 to make this "foo" folder read write accessible chmod 666 foo 

Apache user is typically the user that the apache httpd server uses when running. It uses this «apache» user to avoid having to use a «human» user, and to avoid having to run as root.

Advantages of installing an «apache» user include not having to run as root, so during the handling of http requests, there is less risk in damaging and losing the entire operating system.

The only real disadvantage of having an «apache» user is that you need to make web presented content accessible to the «apache» user. That typically involves a combination of the unix commands chown , chmod , and sometimes various selinux commands.

Источник

How to Check What User Apache is Running As

check apache user

Sometimes you may need to find out which user Apache is running as or check what user PHP is running as. Here is how to check what user Apache is running as.

How to Check What User Apache is Running As

It is very easy to find out which user your Apache server is running as.

Linux (All distributions)

In Linux systems, open terminal and run the following command to list the user running Apache processes.

$ ps aux | grep apache2 www-data 1388 0.0 0.1 162184 7634 ? Ss Apr29 0:02 /usr/sbin/apache2 -k start www-data 1297 0.0 0.1 162184 7268 ? S Apr29 0:00 /usr/sbin/apache2 -k start www-data 1398 0.0 0.1 162184 7926 ? S Apr29 0:00 /usr/sbin/apache2 -k start www-data 1402 0.0 0.1 162184 7784 ? S Apr29 0:00 /usr/sbin/apache2 -k start

As you can see www-data is the user running Apache server.

You can also open Apache configuration file at any of the following locations, depending on your system and installation.

  • /etc/apache2/httpd.conf
  • /etc/apache2/apache2.conf
  • /etc/httpd/httpd.conf
  • /etc/httpd/conf/httpd.conf
$ sudo vi /etc/httpd/httpd.conf

and look for user directive. Here’s an example of Apache configuration’s user directive with www-root user.

Windows (All version)

In windows, just open Apache configuration file at C:\Program Files\Apache Software Foundation\ApacheX.X\conf\ where X.X is the version number of Apache server, and look for User directive. Here’s an example of Apache server’s user being test_user

User test_user Group test_user

Источник

Оцените статью
Adblock
detector