Execute um comando como outro usuário uma vez:
sudo -u www-data php script.php
Isso deve funcionar se você estiver root
.
Como sempre executando o php as www-data
, existem várias possibilidades. Você pode criar um shellscript de wrapper simples. Se /usr/bin/php
for apenas um link direto /usr/bin/php5
ou similar, isso será mais simples. Apenas substitua o link virtual (NÃO o arquivo php5
) por um script como este:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Isso ainda não foi testado. Lembre-se também de que isso SEMPRE tentará executar php5
como usuário www-data
, mesmo que o usuário não seja root
e possa não ter permissão para fazê-lo. E também pode não ser o que você realmente deseja. Alguns serviços instalados podem ter problemas ao tentar executar o php.
Uma solução (possivelmente melhor) para aplicar somente isso à raiz pode ser deixar o link /usr/bin/php
virtual em paz e inserir o script /root/bin
. Em seguida, adicione essa pasta para PATH via .bashrc
, .profile
ou similar. Se você tiver /etc/skel/.profile
, isso pode indicar como isso é feito:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Quando estiver no seu .bashrc
, .profile
ou similar, todo novo shell que você abrir permitirá que você execute diretamente quaisquer executáveis (+ x) no $HOME/bin
( /root/bin
para root).
Dica: Você pode nomear o script do wrapper como algo que phpwww
você especifique explicitamente php script.php
ou phpwww script.php
decida se deseja php regular ou sudo'ed.
Outra solução é um alias simples. Coloque isso no seu .bashrc
, .profile
ou similar:
alias phpwww='sudo -u www-data php'
Respondida por mwargh em ## linux (IRC Freenode.net)
Para executar um comando como um usuário diferente -> alterne para esse usuário usando:
Eu ainda estaria interessado (se possível) em configurar o PHP para executar:
como usuário root
resultará na criação de um arquivo com www-data: www-data user / group
(desta forma, eu não precisaria mudar de root para www-data para executar meus comandos)
fonte
Eu tentaria tornar o / usr / bin / php de propriedade do www-data e definir a permissão suid, que força o comando a ser executado pelo proprietário do arquivo. Você faria isso com:
de vocês gostam da notação octal:
Embora eu deva dizer que isso deve deixá-lo desconfortável sempre que você estiver fazendo da www-data o proprietário de qualquer coisa, pois o objetivo da conta www-data é possuir o mínimo possível.
fonte
se você tiver o php-fpm (FastCGI Process Manager),
poderá configurá-lo no arquivo de configuração localizado em (pelo menos para centos):
/etc/php-fpm.d/www.conf
na linha 39 você pode definir o usuário e 49 o grupo
fonte
php-cli
, não é?criar arquivo de script:
adicionar conteúdo:
execute seus scripts a partir da raiz:
ou use intérprete em seus scripts
note: testado no debian 7, você pode precisar instalar o sudo
todos os arquivos criados por script.php terão o mesmo uid desse script
fonte