Bagaimana cara menentukan argumen perintah dalam sudoers? Sebagai latar belakang, aws
perintah sebenarnya adalah pintu gerbang ke sejumlah besar sub-sistem dan saya ingin membatasi pengguna untuk hanya menjalankanaws s3 cp ...any other args...
Ketika saya mencoba yang berikut ini /etc/sudoers
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws s3 cp, /usr/local/aws/bin/aws s3 cp
gbt1 ALL=(gbt-ops) NOPASSWD: AWSS3_CMD
Sayangnya shell meminta kata sandi
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
gbt-ops's password:
Jika saya menghapus perintah args di Cmnd_Alias, maka itu mengalir sesuai keinginan (tanpa kata sandi), tetapi otorisasi terlalu luas. Jadi, apa cara yang benar untuk membatasi hanya jenis perintah tertentu saja .
Cmnd_Alias AWSS3_CMD = /usr/local/bin/aws, /usr/local/aws/bin/aws
Kemudian
$ sudo -u gbt-ops aws s3 cp helloworld s3://my-bucket/hw.1
...happy
Terima kasih banyak.
Jawaban:
Anda belum menggunakan wildcard, tetapi telah memberikan dua argumen. Karenanya
sudo
cari perintah persis seperti yang tertulis (kecuali path-lookup) (dariman 5 sudoers
):Coba sesuatu seperti:
Perhatikan bahwa:
Jadi, hanya satu wildcard yang dibutuhkan per perintah.
sumber
/usr/local/bin/aws s3 cp
dalam sudoers, lebih aman untuk menggantinya dengan skrip (hanya dapat ditulis oleh root).Sama seperti @muru, tetapi bagi yang suka contoh kerja penuh:
Sementara
/sbin/cmd1
,/sbin/cmd2
bisa berupa perintah lain.Tujuannya
ECHO_CMD
adalah untuk menyajikan yangsudo echo X A
akan meminta frasa sandi, sementarasudo echo A X
tidak, dan untuk memungkinkan Anda mendapatkan kepercayaan diri melalui eksperimen sederhana tersebut.(Diasumsikan bahwa gema duduk
/bin/echo
, untuk memeriksa di mana ia berada di sistem Anda cobawhereis echo
)sumber
/bin/echo
biner, tetapi sebagian besar shell juga memiliki fungsi bawaanecho
yang akan digunakan sebagai pengganti biner ini jika Anda tidak menyediakan path lengkap.