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.


Posting skrip init Anda?
quanta

Apakah Anda punya log?
Dom

Mengapa Anda tidak menggunakan suskrip rc saja?
Mat

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.


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.