Uruchom komendę jako inny użytkownik raz:
sudo -u www-data php script.php
To powinno zadziałać, jeśli tak root
.
Jeśli chodzi o zawsze uruchamianie php as www-data
, istnieje kilka możliwości. Możesz stworzyć prosty skrypt powłoki. Jeśli /usr/bin/php
jest to tylko miękkie łącze do /usr/bin/php5
lub podobne, to upraszcza to. Po prostu zastąp link programowy (NIE plik php5
) skryptem takim:
#!/bin/sh
sudo -u www-data php5 $*
return $?
To jednak nie zostało przetestowane. Pamiętaj również, że ZAWSZE będzie to próbowało działać php5
jako użytkownik www-data
, nawet jeśli użytkownik może nie być root
i może nie mieć na to pozwolenia. I może nie być tym, czego naprawdę chcesz. Niektóre zainstalowane usługi mogą napotykać problemy podczas próby uruchomienia php.
(Prawdopodobnie lepszym) rozwiązaniem, aby zastosować to tylko do roota, może być pozostawienie soft-linku w /usr/bin/php
spokoju i zamiast tego umieścić skrypt /root/bin
. Następnie dodać ten folder do PATH poprzez .bashrc
, .profile
lub podobnym. Jeśli tak /etc/skel/.profile
, może to wskazywać, jak to się robi:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Po to jest Twój .bashrc
, .profile
lub podobne, każda nowa powłoka otwarciu będzie można bezpośrednio wykonywać żadnych plików wykonywalnych (+ x) $HOME/bin
( /root/bin
root).
Wskazówka: możesz nazwać skrypt otoki phpwww
tak, abyś wyraźnie określił php script.php
lub phpwww script.php
zdecydował, czy chcesz regularnego czy sudo'owanego php.
Innym rozwiązaniem jest prosty alias. Umieścić to w swoim .bashrc
, .profile
lub podobne:
alias phpwww='sudo -u www-data php'
Odpowiedzi udzielił mwargh na ## linux (IRC Freenode.net)
Aby uruchomić polecenia jako inny użytkownik -> przejdź do tego użytkownika, używając:
Nadal byłbym zainteresowany (jeśli to możliwe) konfiguracją PHP, aby działało:
jako użytkownik root
spowoduje utworzenie pliku z www-data: www-data użytkownik / grupa
(w ten sposób nie musiałbym przełączać się z katalogu głównego na dane www, aby uruchomić moje polecenia)
źródło
Spróbowałbym zrobić / usr / bin / php własnością www-data i ustawić uprawnienia suid, które wymuszają wykonanie polecenia przez właściciela pliku. Zrobiłbyś to z:
z was jak zapis ósemkowy:
Chociaż muszę powiedzieć, że powinno to sprawić, że staniesz się niespokojny za każdym razem, gdy uczynisz www-data właścicielem czegoś, ponieważ celem konta www-data jest posiadanie jak najmniej.
źródło
jeśli masz do php-fpm (FastCGI Process Manager)
można go ustawić w pliku konfiguracyjnym znajduje się w (conajmniej dla CentOS)
/etc/php-fpm.d/www.conf
na linii 39 można ustawić użytkownika i 49 ustawić grupę
źródło
php-cli
, prawda?utwórz plik skryptu:
Dodaj zawartość:
uruchom swoje skrypty z roota:
lub użyj interpretera w swoich skryptach
Uwaga: testowane na Debianie 7, może być konieczne zainstalowanie sudo
wszystkie pliki utworzone przez script.php będą miały ten sam identyfikator użytkownika tego skryptu
źródło