LAMP saya disetel agar berfungsi karena user:www-data
semua file dan folder dibuat dengan izin itu.
Saya memiliki pengaturan untuk crontab sebagai pengguna @ ubuntu.
Jadi saya lakukan crontab -e
dan gunakan perintah ini:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Pada dasarnya perintah itu hanya membuat file cache di tempat yang ditentukan (tidak ada masalah dengan itu), tetapi file cache itu dibuat dengan pengguna: izin pengguna bukan user:www-data
izin.
Bagaimana saya bisa membuatnya secara default membuat file dengan user:www-data
izin?
Saya tidak bisa pergi dan chown
setiap kali file dibuat ulang.
Terima kasih.
awstats
, atauphp5
sessionclean) terletak di/etc/cron.*
direktori dan dengan demikian tidak dapat dilihatcrontab -e
(bahkan ketika menetapkan data pengguna www ).Jawaban:
Anda dapat menulis entri Anda ke sistem crontab
/etc/crontab
, yang membutuhkan argumen tambahan yang menetapkan pengguna untuk dijalankan (biasanya root, tetapi bisa berupa www-data).Baris Anda akan menjadi:
Atau Anda dapat mengedit crontab pengguna www-data dengan
su
:sumber
/etc/cron.d
dengan nama deskriptif, misalnya ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Anda juga dapat menjalankan crontab dengan
-u
argumen untuk mengedit crontab untuk pengguna tertentu:sumber
Untuk menjalankan crontab sebagai www-data pengguna, Anda dapat menggunakan perintah berikut:
Kemudian Anda menulis baris, misalnya untuk menjalankan file php setiap 15 menit:
Saat menyimpannya, Anda akan diminta oleh editor:
Simpan di sana, jangan khawatir.
crontab -e
membuka sebuah file di / tmp alih-alih crontab yang sebenarnya sehingga ia dapat memeriksa kesalahan Anda pada crontab baru dan mencegah Anda menimpa crontab Anda yang sebenarnya dengan kesalahan-kesalahan itu. Jika tidak ada kesalahan, maka crontab Anda yang sebenarnya akan diperbarui. Jika crontab -e baru saja menulis langsung ke crontab Anda yang sebenarnya, maka Anda berisiko mengambil seluruh crontab Anda.Untuk memverifikasi bahwa cronjob Anda berjalan, Anda dapat memeriksa log cron. biasanya di /var/log/cron.log atau menjalankan perintah berikut:
sumber
Saya ingin menambahkan pendekatan lain. Seperti yang disebutkan orang lain, Ubuntu (16,04 di sini) dan www-data crontab tampaknya tidak dapat diandalkan (mungkin ini adalah masalah keamanan?).
Bagaimanapun, di perusahaan kami, kami ingin agar semua cronjobs di server mudah diakses, sehingga Anda tidak ketinggalan apa pun. Pada saat yang sama kami tidak ingin menjalankan semuanya (apapun benar-benar!) Sebagai root.
Karena itu kami berlari
Seperti yang biasa Anda lakukan, dan kemudian kami menetapkan perintah sebagai
Ini akan mengeksekusi / path / ke / perintah sebagai data-www sambil menjaga cronjob dalam file root cronjobs (dan itu akan selalu berjalan dengan benar). Ini memiliki manfaat yang bagus untuk dapat menulis file log sebagai root (untuk keamanan maksimal) menggunakan pipa.
Perhatikan bahwa kami melewati shell pilihan kami, ini juga bisa menjadi / bin / sh untuk shell yang lebih sederhana (kami hanya menyukai kemampuan bash penuh). Www-data tidak memiliki shell yang ditentukan sehingga Anda akan mendapatkan kesalahan tanpa itu. Biasanya cron menjalankan pekerjaan dengan / bin / sh saja.
sumber