sudo: Bagaimana mengizinkan hanya satu argumen untuk suatu perintah?

8

Saya ingin menambahkan entri ke suoders saya untuk memungkinkan satu pengguna untuk menjalankan perintah dengan tepat satu argumen non-opsi.

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 

Bisakah saya melakukannya dengan menggunakan sudoers sytnax? Atau apakah saya perlu membuat skrip pembantu?

Elrond
sumber
apakah ini merupakan argumen yang selalu seperti -abc? atau dapatkah itu bervariasi?
Mike
The [a-z]*sudah argumen saya inginkan. Jadi ini adalah argumen variabel. (Saya menggunakan / bin / echo hanya untuk pengujian.)
Elrond

Jawaban:

8

Sepengetahuan saya, Anda tidak bisa meneruskan argumen non-perintah ke sudo jika argumen itu bervariasi.

Anda dapat menentukan sesuatu seperti ini:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file

Ini akan memungkinkan pengguna untuk mengikuti file tertentu tetapi tidak file lain.

Jika Anda harus meneruskan variabel, saya sarankan skrip pembungkus.

Berikut adalah contoh pembungkus rsync:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

Jika Anda mencari Google untuk pembungkus sudo, Anda dapat menemukan lebih banyak contoh.

Pastikan untuk membuat hard code semua jalur dan menjalankan pemeriksaan kewarasan pada input jika pengguna tidak dapat dipercaya.

jeffatrackaid
sumber
2
Harus memiliki cek kewarasan pula. Tidak percaya siapapun! [/ paranoid]
Nathan C