Saya memiliki skrip dijalankan dari crontab pengguna yang tidak memiliki hak istimewa yang meminta beberapa perintah menggunakan sudo. Kecuali tidak. Script berjalan dengan baik tetapi perintah sudo'ed diam-diam gagal.
Script berjalan dengan sempurna dari shell sebagai pengguna yang dimaksud.
Sudo tidak memerlukan kata sandi. Pengguna yang bersangkutan memiliki
(root) NOPASSWD: ALLakses yang diberikan pada/etc/sudoers.Cron menjalankan dan menjalankan skrip. Menambahkan sederhana
date > /tmp/logmenghasilkan keluaran pada waktu yang tepat.Itu bukan masalah izin. Sekali lagi skrip dieksekusi, tidak hanya perintah sudo'ed.
Itu bukan masalah jalur. Menjalankan
envdari dalam skrip yang sedang dijalankan menunjukkan$PATHvariabel yang benar yang menyertakan path ke sudo. Menjalankannya menggunakan jalur lengkap tidak membantu. Perintah yang dieksekusi diberi nama path lengkap.Mencoba menangkap keluaran dari perintah sudo termasuk STDERR tidak menunjukkan sesuatu yang berguna. Menambahkan
sudo echo test 2>&1 > /tmp/logke skrip menghasilkan log kosong.Sudo biner itu sendiri mengeksekusi dengan baik dan mengakui bahwa ia memiliki izin bahkan ketika dijalankan dari cron di dalam skrip. Menambahkan
sudo -l > /tmp/logke skrip menghasilkan output:Pengguna ec2-pengguna dapat menjalankan perintah berikut pada host ini:
(root) NOPASSWD: ALL
Memeriksa kode keluar dari perintah menggunakan $?menunjukkan itu mengembalikan kesalahan (kode keluar:) 1, tetapi tampaknya tidak ada kesalahan yang dihasilkan. Perintah sesederhana /usr/bin/sudo /bin/echo testmengembalikan kode kesalahan yang sama.
Apa lagi yang bisa terjadi?
Ini adalah mesin virtual yang baru dibuat yang menjalankan AMI Amazon Linux terbaru. Crontab milik pengguna ec2-userdan file sudoers adalah distribusi default.
sudohak terbatas / hanya / untuk perintah yang Anda butuhkan dalam skrip dan menonaktifkan sepenuhnya kemampuan login mereka.
The user in question has (root) NOPASSWD: ALL access granted in /etc/sudoersdan otak saya mulai berteriak terlalu keras untuk terus membaca.