Я пытаюсь написать скрипт Bash для автоматических файлов chown'in для пользователя Apache2. Но мне нужно, чтобы на 100% убедиться, что это имя пользователя? Я знаю, что обычно это www-данные.
Я ищу строку, которая вернет ТОЛЬКО имя пользователя Apache2.
Я знаю, что, если, скажем, до того, как имя пользователя было каким-то образом изменено, f1] и многие другие, но они возвращают большую часть данных, и мне просто нужно имя пользователя.
Любая помощь приветствуется!
Спасибо.
Имя пользователя и идентификатор группы 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 для текущего сеанса, который был запущен.
Чтобы найти имена эффективного пользователя любого совпадения процессов apache2, используйте:
ps -o euser= -C apache2
Опция -o устанавливает выходной формат. В нашем случае мы запрашиваем только эффективное имя пользователя, euser. Конец = сообщает ps подавить нормальную строку заголовка. Таким образом, вывод состоит только из имен пользователей, соответствующих apache2.
У меня нет работы apache2, например:
$ ps -o euser= -C mount.ntfs
root
$ ps -o euser= -C atd
daemon