Jalankan perintah sebagai pengguna lain sekali:
sudo -u www-data php script.php
Ini akan berhasil jika Anda root
.
Adapun untuk selalu menjalankan php www-data
, ada beberapa kemungkinan. Anda bisa membuat shellscript wrapper sederhana. Jika /usr/bin/php
hanya tautan lunak /usr/bin/php5
atau serupa, itu membuatnya lebih sederhana. Ganti saja tautan lunak (BUKAN file php5
) dengan skrip seperti ini:
#!/bin/sh
sudo -u www-data php5 $*
return $?
Itu belum diuji. Perlu diketahui juga bahwa ini akan SELALU mencoba untuk dijalankan php5
sebagai pengguna www-data
, bahkan jika pengguna mungkin tidak root
dan mungkin tidak memiliki izin untuk melakukannya. Dan itu mungkin juga bukan apa yang Anda inginkan. Beberapa layanan yang diinstal mungkin mengalami masalah ketika mencoba menjalankan php.
Solusi (mungkin lebih baik) untuk hanya menerapkan itu ke root mungkin dengan membiarkan soft-link itu /usr/bin/php
sendiri dan menempatkan skrip di /root/bin
dalamnya. Kemudian tambahkan folder itu ke PATH via .bashrc
, .profile
atau serupa. Jika sudah /etc/skel/.profile
, itu mungkin menunjukkan bagaimana hal itu dilakukan:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Setelah ini ada di Anda .bashrc
, .profile
atau serupa, setiap shell baru yang Anda buka akan memungkinkan Anda untuk langsung mengeksekusi semua executable (+ x) di $HOME/bin
( /root/bin
untuk root).
Petunjuk: Anda mungkin ingin memberi nama skrip pembungkus dengan sesuatu seperti phpwww
sehingga Anda secara eksplisit menentukan php script.php
atau phpwww script.php
memutuskan apakah Anda ingin php biasa atau sudo'ed.
Solusi lain adalah alias sederhana. Tempatkan ini di Anda .bashrc
, .profile
atau serupa:
alias phpwww='sudo -u www-data php'
Dijawab oleh mwargh di ## linux (IRC Freenode.net)
Untuk menjalankan perintah sebagai pengguna lain -> beralih ke pengguna yang menggunakan:
Saya masih tertarik (jika mungkin) mengkonfigurasi PHP agar berjalan:
sebagai pengguna root
akan menghasilkan pembuatan file dengan www-data: www-data pengguna / grup
(dengan cara ini saya tidak perlu beralih dari root ke www-data untuk menjalankan perintah saya)
sumber
Saya akan mencoba membuat / usr / bin / php yang dimiliki oleh www-data dan mengatur izin suid, yang memaksa perintah untuk dieksekusi oleh pemilik file. Anda akan melakukan ini dengan:
Anda menyukai notasi oktal:
Meskipun saya harus mengatakan itu harus membuat orang gelisah setiap kali Anda membuat www-data pemilik apa pun, karena tujuan dari akun www-data adalah untuk memiliki sesedikit mungkin.
sumber
jika Anda mendapatkan php-fpm (FastCGI Process Manager)
Anda dapat mengaturnya di file konfigurasi yang terletak di (atleast for centos):
/etc/php-fpm.d/www.conf
pada baris 39 Anda dapat mengatur pengguna dan 49 Anda mengatur grup
sumber
php-cli
, bukan?buat file skrip:
tambah isi:
jalankan skrip Anda dari root:
atau gunakan juru bahasa dalam skrip Anda
catatan: diuji pada debian 7 Anda mungkin perlu menginstal sudo
semua file yang dibuat oleh script.php akan memiliki uid yang sama dari skrip itu
sumber