Saya sedang mengedit skrip init.d. Skrip init.d menjalankan skrip utilitas yang kemudian menjalankan proses. Dari kedua skrip bash, bagaimana saya membuatnya meluncurkan proses utama sebagai pengguna dan grup tertentu?
process
init
privileges
Stéphane Gimenez
sumber
sumber
Usage: su [options] [LOGIN]
dansu: unrecognized option '--debug'
su www-data -c ${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &
jika sayasu www-data
mengatur semua vars dan menjalankannya${MONOSERVER} /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid &
berfungsi dengan baik. Bagaimana saya mengatasi ini?su
mengambil argumen tunggal, yang merupakan perintah shell. Anda perlu menulissu www-data -c '$MONOSERVER "/application=$WEBAPPS" "/socket=unix:/path/monoserve.pid"'
, dan memastikan bahwaMONOSERVER
danWEBAPPS
diekspor oleh shell induk. (Catatan: jangan lakukansu … -c "$MONOSERVER …"
karena ini akan gagal jika salah satu variabel berisi karakter khusus shell.) Dan jika Anda memiliki peluncur daemon khusus sepertistart-stop-daemon
, gunakan.Jika
start-stop-daemon
tersedia di sistem Anda, Anda mungkin harus menggunakannya dan melihat pilihannya (terutama-u
dan-g
dalam hal ini).(Jika tidak, Anda dapat menggunakan kombinasi dari
su
dansg
.)Pembaruan: Berikut adalah contoh yang diambil dari beberapa
/etc/init.d/mpd
skrip (yang menggunakanstart-stop-daemon
):Mulai perintah:
Segala sesuatu yang mengikuti
--
adalah argumen untuk/usr/bin/mpd
program itu sendiri. (Prosedur daemonisasi ditangani oleh skrip start-stop-daemon sehinggampd
diminta untuk tidak mempedulikannya--nodaemon
.)Hentikan perintah:
Jika
mpd
tidak menjatuhkan hak istimewa dengan sendirinya, orang perlu menambahkan (misalnya)-u mpd
,-g mpd
opsi kestart-stop-daemon
perintah.sumber
start-stop-daemon --start --quiet --background -u www-data -g www-data --exec ${MONOSERVER} --pidfile /path/monoserve.pid --make-pidfile -- /applications=${WEBAPPS} /socket=unix:/path/monoserve.pid