Как получить имя пользователя (только) от Apache?

Я пытаюсь написать скрипт Bash для автоматических файлов chown'in для пользователя Apache2. Но мне нужно, чтобы на 100% убедиться, что это имя пользователя? Я знаю, что обычно это www-данные.

Я ищу строку, которая вернет ТОЛЬКО имя пользователя Apache2.

Я знаю, что, если, скажем, до того, как имя пользователя было каким-то образом изменено, f1] и многие другие, но они возвращают большую часть данных, и мне просто нужно имя пользователя.

Любая помощь приветствуется!

Спасибо.

1
задан 6 September 2016 в 02:11

2 ответа

Имя пользователя и идентификатор группы Apache2 задается директивой в файле конфигурации. Это находится в файле /etc/apache2/envvars.

Вы можете проверить этот файл и заметить, что по умолчанию, как вы подозревали, это www-data. Кроме того, как вы можете видеть из файла, группа пользователей по умолчанию установлена ​​с тем же именем.

Теперь, когда у вас есть эффективный пользователь apache, вы можете использовать это, чтобы изменить файлы для этого пользователя:

$ sudo chown -R www-data:www-data myhtmldirectory

Это изменит владельца пользователя и группы myhtmldirectory и все файлы и каталоги под ним на www-data.

Если вы хотите просто сменить владельца, :www-data, которая предназначена для группы.

Очень правильный способ иметь правильный usrID:

$ awk -F= '$1 == "export APACHE_RUN_USER" {print $2}' /etc/apache2/envvars

Эта строка будет анализировать файл envvars для текущего сеанса, который был запущен.

3
ответ дан 23 May 2018 в 06:25
  • 1
    @Arsenii Извините. Я опечатал имя файла. Это envvars. Я исправил правописание в ответе. – L. D. James 6 September 2016 в 02:28
  • 2
    Благодарю. Я нашел его, но ... как легко его разобрать (если это возможно) и взять $ APACHE_RUN_USER из него в Bash? благодаря – Arsenii 6 September 2016 в 02:36
  • 3
    @Arsenii Теперь вы видите в своем файле конфигурации имя файла. Вам не нужно разбираться, чтобы получить его. Вы можете изменить группу файлов на это имя пользователя, перейдя в каталог и запустив это: sudo chown -R www-data [html directory]. Измените [html directory] на имя каталога с файлами, которые вы хотите изменить, на пользователя apache2. Часть -R означает, что все подкаталоги также будут обработаны. – L. D. James 6 September 2016 в 02:42
  • 4
    Я обновляю свой ответ форматированным примером того, что я только что напечатал. – L. D. James 6 September 2016 в 02:42
  • 5
    Ты прав. В то время как на Ubuntu apache2.conf имеет директиву User ${APACHE_RUN_USER} с надписью выше, указывающей, где должно быть внесено изменение, человек может переопределить способ его настройки. Я пытался добросовестно указать, как использовать Apache в соответствии с модульной конфигурацией установки Ubuntu. Некоторые изменения могут сломать Apache, и пользователь может зависеть от использования другого канала поддержки ... модульная настройка может перестать работать. – L. D. James 6 September 2016 в 03:38

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

ps -o euser= -C apache2

Опция -o устанавливает выходной формат. В нашем случае мы запрашиваем только эффективное имя пользователя, euser. Конец = сообщает ps подавить нормальную строку заголовка. Таким образом, вывод состоит только из имен пользователей, соответствующих apache2.

У меня нет работы apache2, например:

$ ps -o euser= -C mount.ntfs
root
$ ps -o euser= -C atd
daemon
2
ответ дан 23 May 2018 в 06:25
  • 1
    спасибо, действительно, но .. он ничего не показывает с Apache. Я пробовал только с Apache (без ver. 2) и с 2 ... ничего. Нет ошибок, ни имена пользователей)) Я буду продолжать пытаться. благодаря – Arsenii 6 September 2016 в 02:38
  • 2
    @Arsenii. Вы ничего не видите, скорее всего, потому что вам нужно точно указать имя команды. Это не может быть capitol a ... также он должен иметь 2 в нем, как в apache2. Кстати, эта команда может выйти из строя, потому что сервер сначала запускается с помощью UID root. Ваш скрипт может выбрать неправильный идентификатор пользователя, прежде чем он изменится, проанализировав файл envvars на то, что вы там указали. – L. D. James 6 September 2016 в 02:58
  • 3
    Точное имя /usr/sbin/apache2, поэтому команда должна быть sudo ps -o euser= -C /usr/sbin/apache2. – pa4080 6 September 2016 в 03:10

Другие вопросы по тегам:

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