Jalankan skrip dari rc.local sebagai pengguna alih-alih root

26

Saya ingin menjalankan skrip setiap kali server saya memulai. Masalahnya adalah saya harus menjadi pengguna tertentu untuk mengeksekusi skrip, jika saya mencoba melakukannya sebagai root tidak dapat menemukan paket tertentu (seperti ruby).

Saya mencoba mengubah ke xxx user01.

sudo su user01
/etc/init.d/script start

Namun ini tidak berhasil.

Philip
sumber
Posting skrip init Anda?
quanta
Apakah Anda punya log?
Dom
Mengapa Anda tidak menggunakan suskrip rc saja?
Mat
Lihat stackoverflow.com/questions/8940771/… .
Ferdinand Prantl

Jawaban:

30

Menjalankan sudo su user01skrip tidak berarti perintah berikut dikirim ke shell yang dihasilkan. Bahkan, kemungkinan itu berarti shell baru muncul sebagai user01, yang tidak pernah keluar!

Dua hal:

  • Anda dapat menjalankan perintah sebagai pengguna lain dengan mengirimkan -c 'command...'argumen ke su, seperti su user01 -c '/etc/init.d/script start'.
  • Memulai layanan yang menggunakan /etc/init.d dari rc.local bukanlah hal yang benar untuk dilakukan. Anda ingin menggunakan aktifkan layanan saat startup menggunakan alat distribusi Anda, seperti chkconfigatau update-rc.d. Anda juga tidak menginginkan pekerjaan di /etc/init.d yang seharusnya tidak dimulai sebagai root. Pekerjaan itu sendiri dapat merasa bebas untuk bercabang ke akun pengguna lain, tetapi harus dijalankan oleh root.
Kyle Smith
sumber
8

Anda bisa memasukkan sesuatu ke dalam /etc/crontabdan menjalankannya@reboot

@reboot username /etc/init.d/script start
user9517 mendukung GoFundMonica
sumber
2
atau di file crontab milik pengguna.
Jake
4

Anda bisa menjalankan perintah melalui sudo seperti ini:

sudo -H -u user01 /etc/init.d/script start

-H mengatur variabel lingkungan HOME ke variabel pengguna

-u menentukan nama pengguna untuk dijalankan

joetek
sumber
0

Tentunya Anda tidak dapat menjalankan skrip itu dengan sudo karena diperlukan kecil (memberlakukan bahwa pengguna harus login) dalam sudoers. Anda mungkin ingin menonaktifkan, yang agak berisiko

Juga ada alat yang agak lama bernama runsuid: http://freecode.com/projects/runsuid

HTH

sebelk
sumber