Pertanyaan Jalankan skrip dari rc.local sebagai pengguna, bukan root


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

Saya mencoba untuk mengubah ke xxx user01.

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

Ini tidak berhasil.


21
2017-08-30 16:04




Posting skrip init Anda? - quanta
Apakah Anda memiliki beberapa log? - Dom
Mengapa tidak Anda gunakan saja su di skrip rc? - Mat
Lihat stackoverflow.com/questions/8940771/…. - Ferdinand Prantl


Jawaban:


Lari sudo su user01 dalam skrip tidak berarti perintah berikut dikirim ke shell yang dihasilkan. Bahkan, kemungkinan itu berarti cangkang baru bertelur sebagai user01, yang tidak pernah keluar!

Dua hal:

  • Anda dapat menjalankan perintah sebagai pengguna lain baik dengan meneruskan -c 'command...' argumen untuk su, suka 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 mengaktifkan layanan saat startup menggunakan alat distribusi Anda, seperti chkconfig atau update-rc.d. Anda juga tidak menginginkan pekerjaan di /etc/init.d yang seharusnya tidak dimulai root. Pekerjaan itu sendiri dapat merasa bebas untuk membayar ke akun pengguna lain, tetapi harus dipanggil oleh root.

26
2017-08-30 16:08





Anda bisa memasukkan sesuatu ke dalamnya /etc/crontab dan jalankan @reboot

@reboot username /etc/init.d/script start

8
2017-08-30 16:08



atau di file crontab pengguna sendiri. - Jake


Anda bisa menjalankan perintah melalui sudo seperti ini:

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

-H menetapkan variabel lingkungan RUMAH dengan pengguna

-u menentukan nama pengguna untuk dijalankan sebagai


2
2017-08-11 12:24





Tentunya Anda tidak dapat menjalankan skrip tersebut dengan sudo karena requiretty (memaksa bahwa pengguna harus login) di sudoers. Anda mungkin ingin menonaktifkan, yang agak berisiko

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

HTH


0
2017-08-30 16:23