Как настроить CLI PHP на человечности Linux для выполнения как www-данные?

Взгляните на FAI Полностью Автоматическая установка. Это может сделать намного больше, чем предварительный отбор и может установить Debian и Ubuntu. Это имеет события больше чем 10 лет, и также доступно как пакет Ubuntu. Домашняя страница:

http://fai-project.org

10
задан 30 November 2012 в 13:30
5 ответов

Один раз выполните команду от имени другого пользователя:

sudo -u www-data php script.php

Это должно работать, если вы root .

Что касается постоянного запуска php как www-data , есть несколько возможностей. Вы можете создать простую оболочку shellscript. Если / usr / bin / php является только программной ссылкой на / usr / bin / php5 или аналогичный, это упрощает задачу. Просто замените программную ссылку (НЕ файл php5 ) сценарием вроде этого:

#!/bin/sh

sudo -u www-data php5 $*

return $?

Это не проверено. Также имейте в виду, что это ВСЕГДА будет пытаться запустить php5 от имени пользователя www-data , даже если пользователь не является root и может не иметь разрешения на выполнение так. И это также может быть не то, что вам действительно нужно. Некоторые установленные службы могут столкнуться с проблемами при попытке запустить php.

(возможно, лучшее) решение применить это только к root может заключаться в том, чтобы оставить программную ссылку / usr / bin / php в покое и поместить сценарий в / root / bin вместо этого. Затем добавьте эту папку в PATH через .bashrc , .profile или аналогичные. Если у вас есть /etc/skel/.profile , это может указывать на то, как это делается:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Когда он находится в вашем .bashrc , .profile ] или аналогичный, каждая новая открываемая вами оболочка позволит вам напрямую выполнять любые исполняемые файлы (+ x) в $ HOME / bin ( / root / bin для root).

Подсказка: вы можете назвать скрипт-оболочку как-то вроде phpwww , чтобы вы явно указали php script.php или phpwww script.php , чтобы решить, хотите ли вы регулярно или sudo'ed php.

Другое решение - простой псевдоним. Поместите это в свой .bashrc , .profile или аналогичный:

alias phpwww='sudo -u www-data php'
20
ответ дан 2 December 2019 в 22:02

Ответил mwargh на ## linux (IRC Freenode.net)


Чтобы запустить команды от имени другого пользователя -> переключитесь на этого пользователя, используя:

su www-data

Я все равно буду заинтересован (если это возможно) в настройке PHP так, чтобы запуск:

root@mycomp php (php script creating a file)

от имени root пользователя

приводил к созданию файла с www-data: www-data user / group

(таким образом мне не пришлось бы переключаться с root на www-data для выполнения моих команд)

0
ответ дан 2 December 2019 в 22:02

Я бы попробовал сделать / usr / bin / php принадлежащим www-data и установить разрешение suid, которое заставляет команду выполняться владельцем файла. Вы бы сделали это с:

chmod u+s /usr/bin/php

из вас, кто любит восьмеричную запись:

chmod 4755 /usr/bin/php

Хотя я должен сказать, что это должно вызывать беспокойство всякий раз, когда вы делаете www-data владельцем чего-либо, в качестве точки учетной записи www-data - владеть как можно меньше.

0
ответ дан 2 December 2019 в 22:02

, если у вас есть php-fpm (FastCGI Process Manager)
вы можете установить его в конфигурационном файле, расположенном по адресу (по крайней мере для centos): /etc/php-fpm.d/www.conf
в строке 39 вы можете установить пользователя и 49 вы установите группу

0
ответ дан 2 December 2019 в 22:02

создать файл сценария:

touch /usr/bin/phpuid
chmod +x /usr/bin/phpuid

добавить содержимое:

#!/bin/bash

UIDX="#"`stat -c '%u' $1`
sudo -u $UIDX php5 $*

запустить свои сценарии от root:

phpuid /path/to/script.php

или использовать интерпретатор в ваши скрипты

#!/usr/bin/phpuid
<?php
phpinfo();

примечание: протестировано на debian 7 вам может потребоваться установить sudo

apt-get install sudo

, все файлы, созданные script.php, будут иметь тот же uid этого скрипта

0
ответ дан 2 December 2019 в 22:02

Теги

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