Apa sintaks sudoers yang tepat untuk menambahkan pengguna?

50

Menurut komentar dalam /etc/sudoers(Fedora 13):

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

Dua pertanyaan terkait saya:

  1. Apa ALL=(ALL) ALLartinya di baris berikut:

    root  ALL=(ALL)   ALL
    
  2. Saya telah menguji dua baris ini tetapi saya tidak dapat menemukan perbedaannya secara fungsional:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

Saya sudah membaca manual tetapi spesifikasi sintaksis sulit untuk diikuti. Saya telah memperoleh bahwa (ALL) ALLbagian tersebut adalah spesifikasi perintah dan tag, tetapi saya masih belum dapat memahaminya.

Belmin Fernandez
sumber

Jawaban:

91

Catatan: Saya menjawab 1. , karena Ignacio sudah menjawab 2 ..

Dalam sudoentri berikut :

superadm  ALL=(ALL)   ALL

ada empat bidang:

  • Yang pertama menentukan pengguna yang akan diberikan hak istimewa untuk beberapa perintah.
  • Yang kedua jarang digunakan. Ini adalah daftar nama host tempat entri sudo ini efektif. Pada pengaturan standar hanya satu host yang relevan (localhost) sehingga bidang ini biasanya dibiarkan sebagai ALL.
  • Bidang keempat adalah daftar perintah yang superadmakan dapat dijalankan dengan hak istimewa yang ditinggikan. ALLberarti semua perintah. Kalau tidak, gunakan daftar perintah yang dipisahkan koma.
  • Kolom ketiga (yang ditulis (…)opsional) menetapkan pengguna (dan grup) mana yang superadmakan dapat menjalankan perintah berikut. ALLberarti mereka dapat memilih apa saja (tidak dibatasi). Jika bidang ini dihilangkan, artinya sama dengan (root).

Contoh:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

Di sini, alandiizinkan untuk menjalankan dua perintah /bin/lsdan /bin/killsebagai root(atau bin), mungkin dengan hak istimewa tambahan operatoratau systemgrup.

Jadi alandapat memilih untuk berjalan lssebagai binpengguna dan dengan operatorhak istimewa grup seperti ini:

sudo -u bin -g operator /bin/ls /whatever/directory

Jika -udihilangkan, itu sama dengan -u root. Jika -gdihilangkan, tidak ada hak istimewa grup tambahan yang diberikan.

Stéphane Gimenez
sumber
1
Yah, itu mungkin jawaban terbaik yang pernah ...
David Betz
1
Saya mengamati bahwa \nkarakter baris baru wajib ada di akhir entri dalam sudoers atau /etc/sudoers.d/your_file_name
ramonrails
Anda juga dapat menggunakan wildcard dalam nama host, nama jalur, dan argumen baris perintah. Suka /bin/cat /var/log/messages.?atau /bin/ls /var/log/*lebih banyak info di sini
Alex
9

Dari sudoers(5)halaman manual, bagian DESCRIPTION , sub bagian Runas_Spec :

The Runas_List pertama yang menunjukkan pengguna perintah dapat dijalankan sebagai via sudo's -upilihan.

...

Jika tidak ada Runas_Spec ditentukan perintah dapat dijalankan sebagai rootdan tidak ada grup yang ditentukan.

Jadi tidak ada perbedaan fungsional ketika mencoba menjalankan perintah seperti root, yaitu, ketika tidak menggunakan -udengan sudo. Perbedaannya penting ketika mencoba menjalankan perintah sebagai pengguna lain; yang terakhir akan mencegah ini, tetapi yang pertama akan membiarkannya.

Ignacio Vazquez-Abrams
sumber