Saya memiliki beberapa pekerjaan crontab yang berjalan di bawah root, tetapi itu memberi saya beberapa masalah. Misalnya semua folder yang dibuat dalam proses pekerjaan cron itu berada di bawah root pengguna dan root grup. Bagaimana saya bisa membuatnya berjalan di bawah data-pengguna www dan kelompok data-www sehingga ketika saya menjalankan skrip dari situs web saya, saya dapat memanipulasi folder dan file tersebut?
Server saya berjalan di Ubuntu.
Pekerjaan crontab saat ini adalah:
*/1 * * * * php5 /var/www/web/includes/crontab/queue_process.php >> /var/www/web/includes/crontab/queue.log 2>&1
crontab -e
sebagai pengguna tertentu.cron
pada * nix sistem tidak mengharuskan pengguna untuk masuk untuk menjalankan pekerjaan yang ditentukan dalam crontab pengguna tertentu.EDIT: Perhatikan bahwa metode ini tidak akan berfungsi dengan crontab -e, tetapi hanya berfungsi jika Anda mengedit / etc / crontab secara langsung. Jika tidak, Anda mungkin mendapatkan kesalahan seperti
/bin/sh: www-data: command not found
Tepat sebelum nama program:
sumber
crontab -e
, tetapi hanya berfungsi jika Anda mengedit/etc/crontab
secara langsung. Baca komentar di bagian atas file ini untuk informasi lebih lanjut.sudo crontab -e
, saya melihat pekerjaan. Tapi saya buka file/etc/crontab
tidak ada pekerjaan. Apakah ini aneh? Juga jika sayasudo crontab -e
dan menambahkan pekerjaan dengan pengguna yang ditentukan, apakah itu akan berhasil?Karena Anda menjalankan Ubuntu, crontab sistem Anda berada di
/etc/crontab
.Sebagai pengguna root (atau menggunakan sudo), Anda cukup mengedit file ini dan menentukan pengguna yang harus menjalankan perintah ini. Berikut adalah format entri di crontab sistem dan bagaimana Anda harus memasukkan perintah Anda:
Tentu saja izin untuk skrip php dan file log Anda harus diatur sehingga
www-data
pengguna memiliki akses ke skrip php Anda .sumber
crontab -e
; tapi tidak.Anda juga dapat mencoba menggunakan
runuser
(sebagai root) untuk menjalankan perintah sebagai pengguna yang berbedaLihat juga:
man runuser
sumber
runuser
tidak termasuk dalam Ubuntu.Saran Mike terdengar seperti "jalan yang benar". Saya menemukan utas ini ingin menentukan pengguna untuk menjalankan di
vncserver
bawah pada reboot dan ingin menjaga semua pekerjaan cron saya di satu tempat.Saya mendapatkan kesalahan berikut untuk cron VNC:
Dalam kasus saya, saya dapat menggunakan
sudo
untuk menentukan siapa yang menjalankan tugas sebagai.sumber
sudo: sorry, you must have a tty to run sudo