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.
ubuntu
startup-scripts
rc.local
Philip
sumber
sumber
su
skrip rc saja?Jawaban:
Menjalankan
sudo su user01
skrip tidak berarti perintah berikut dikirim ke shell yang dihasilkan. Bahkan, kemungkinan itu berarti shell baru muncul sebagai user01, yang tidak pernah keluar!Dua hal:
-c 'command...'
argumen ke su, sepertisu user01 -c '/etc/init.d/script start'
.chkconfig
atauupdate-rc.d
. Anda juga tidak menginginkan pekerjaan di /etc/init.d yang seharusnya tidak dimulai sebagairoot
. Pekerjaan itu sendiri dapat merasa bebas untuk bercabang ke akun pengguna lain, tetapi harus dijalankan oleh root.sumber
Anda bisa memasukkan sesuatu ke dalam
/etc/crontab
dan menjalankannya@reboot
sumber
Anda bisa menjalankan perintah melalui sudo seperti ini:
-H mengatur variabel lingkungan HOME ke variabel pengguna
-u menentukan nama pengguna untuk dijalankan
sumber
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
sumber