sudo - menyamar sebagai pengguna

8

Saya mencoba menggunakan perintah sudo dan file sudoers dengan benar sehingga saya dapat menjalankan perintah sebagai pengguna lain.

Saya mengatur file sudoers saya sebagai berikut:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

root, apache, dan kacang-kacangan adalah bagian dari kacang grup.
Juga / opt memiliki 755 izin, sedangkan direktori / opt / renovasi dan sub-direktori dimiliki oleh pengguna dan grup bean.

Perintah yang saya coba jalankan sebagai kacang adalah:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n: adalah agar saya tidak dimintai kata sandi, karena ini akan dijalankan oleh cron
-u: adalah agar saya dapat menyamar sebagai pengguna apache
-i: adalah agar saya mensimulasikan login, dan .profile saya dimuat. Saya memerlukan ini sehingga saya mengakses variabel lingkungan di profil.

Masalahnya adalah ketika saya menjalankan perintah sudo, saya mendapatkan pesan berikut:

sudo: maaf, kata sandi diperlukan untuk menjalankan sudo

Saya sudah mencoba menjalankan ini di AIX dan Ubuntu, tetapi masalahnya ada di kedua sistem. Ini berfungsi jika saya menjalankan:

sudo -n -u apache /opt/renovations/var/script-test.sh

Tetapi tanpa -i, lingkungan saya tidak mengandung semua variabel lingkungan yang saya butuhkan.

Apakah ada sesuatu yang saya perlu perbarui dalam file sudoers saya sehingga ini mungkin?

krzyszto
sumber
Apa yang visudo -ckembali (memeriksa sudoers untuk kesalahan). Juga, dapatkah Anda mengonfirmasi versi lengkap AIX ( oslevel -s) dan versi sudo yang diinstal?
EightBitTony
1
Juga, apakah itu berfungsi jika Anda mencantumkan nama skrip secara eksplisit dalam sudo daripada wildcard (dan apakah nama file tautan simbolis?).
EightBitTony
Terima kasih @EightBitTone. Jadi saya menemukan solusi untuk masalah konfigurasi sudoers ini: ketika -i switch digunakan maka perintah sebenarnya adalah beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh dan beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.shTapi sekarang saya mendapatkan kesalahan baru, misalnya:ksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto
Menganalisis file log / var / log / sudolog sangat membantu untuk men-debug masalah di atas (pada AIX).
krzyszto

Jawaban:

4

Jadi seperti yang Anda katakan sendiri @rzysto, solusinya adalah menambahkan yang berikut ke file sudoers

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

Bagian berikutnya yang hilang adalah untuk memastikan bahwa grup tersebut telah menjalankan izin pada skrip, sehingga Anda dapat mengeksekusi mereka.

kacang polong
sumber
ya, itu solusi yang tepat. Kesalahan ksh hanya terjadi pada lingkungan pengujian yang dibuat untuk menyelidiki masalah peniruan; sebenarnya, produksi semua bekerja dengan benar
krzyszto