Запустите команду от имени другого пользователя один раз:
sudo -u www-data php script.php
Это должно работать, если вы root
.
Что касается всегда запуска php как www-data
, есть несколько возможностей. Вы можете создать простую оболочку. Если /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
или подобном, каждой новой оболочке открытия позволит вам напрямую выполнить любые исполняемые файлы (+ х) $HOME/bin
( /root/bin
для корня).
Подсказка: вы можете захотеть назвать скрипт-обертку как-то так, phpwww
чтобы вы явно указали php script.php
или phpwww script.php
решили, хотите ли вы обычный или sudo'ed php.
Другое решение - простой псевдоним. Поместите это в вашем .bashrc
, .profile
или аналогичном:
alias phpwww='sudo -u www-data php'
Ответ от mwargh на ## linux (IRC Freenode.net)
Для запуска команд от имени другого пользователя -> переключитесь на этого пользователя, используя:
Я все еще был бы заинтересован (если это возможно) в настройке PHP для запуска:
как пользователь root
приведет к созданию файла с www-данными: www-data user / group
(таким образом мне не нужно было бы переключаться с root на www-data для запуска моих команд)
источник
Я попытался бы сделать / usr / bin / php владельцем www-data и установить разрешение suid, которое заставляет команду выполняться владельцем файла. Вы бы сделали это с:
вам нравится восьмеричное обозначение:
Хотя я должен сказать, что это должно вызывать беспокойство, когда вы делаете www-данные владельцем чего-либо, поскольку цель учетной записи www-data - иметь как можно меньше.
источник
если у вас есть php-fpm (FastCGI Process Manager),
вы можете установить его в конфигурационном файле, расположенном по адресу (по крайней мере, для centos):
/etc/php-fpm.d/www.conf
в строке 39 вы можете указать пользователя, а 49 - группу.
источник
php-cli
, не так ли?создать файл скрипта:
добавить содержание:
запустите ваши скрипты от root:
или используйте интерпретатор в ваших скриптах
примечание: протестировано на Debian 7, вам может потребоваться установить sudo
все файлы, созданные в script.php, будут иметь одинаковый uid этого скрипта
источник