Setiap kali saya ingin dapat menjalankan sesuatu yang mengharuskan saya sudoer
terlalu sering, saya perlu google untuk memformat /etc/sudoers
untuk mengingatkan saya lagi apa sebenarnya cara yang tepat untuk menulisnya.
Sekarang saya melihat berbagai gaya penulisan di sudoers
file saya , yang merupakan konsekuensi dari hasil google yang berbeda selama beberapa bulan. Saya juga memperhatikan bahwa contoh kedua (di bawah) tampaknya berfungsi di XFCE, tetapi tidak di Cinnamon (Gnome 3). Ini bisa benar-benar tidak berhubungan, tetapi saya ingin tahu sekali dan untuk semua, apa tata bahasa yang benar dari garis sudoer, dan apa perbedaan antara contoh yang diberikan?
redsandro ALL=NOPASSWD:/path/to/command
redsandro ALL=(ALL) NOPASSWD:/path/to/command
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
Juga, untuk apa semua ALL
itu? Satu pengguna, satu perintah, namun saya perlu menggunakan ALL
kata kunci hingga tiga kali? Apakah saya melakukan ini salah?
Tentu saja, menghilangkan NOPASSWD:
merek Anda memasukkan password Anda sebelum Anda diizinkan untuk menjalankan perintah, tapi satu titik kebingungan adalah penggunaan =
dan :
, untuk perintah akhir yang merupakan subjek dari garis dapat didahului oleh salah satu =
, :
, , atau
)
, tata bahasa yang membingungkan untuk semantik serupa.
sudoers
sintaksis. Membaca halaman manual itu bahkan lebih membuat frustrasi: itu menggambarkan apa yang disebut bahasa EBNF yang singkat dan tepat, contoh-contohnya sangat panjang. Karenanya saya tidak terkejut menemukan begitu banyak utas di sini mengenai file ini.Jawaban:
Ini lebih dari sekadar pengguna dan perintah:
host
menentukan nama host yang baris ini valid untuk. Kecuali Anda membagikan file asudo di antara host yang berbeda yang memerlukan aturan berbeda menggunakan nilai khusus yangALL
berarti "semua host" adalah pilihan yang baik.user
menentukan pengguna mana yang dapat Anda gunakan dengan-u
opsi untuk menjalankan perintah. Jika Anda menghilangkan ini, Anda tidak dapat menggunakan-u
opsi.group
menentukan grup mana yang dapat Anda gunakan dengan-g
opsi. Jika Anda menghilangkannya, Anda tidak dapat menggunakan-g
opsi.Keduanya
user
dangroup
memahami nilai khususALL
sebagai "semua pengguna / grup"Jika Anda menghilangkan semua
(user:group)
yang tidak dapat Anda gunakan-u
dan-g
tetapi hanya menjalankan perintah sebagai root.tag
memungkinkan Anda menentukan beberapa opsi, sepertiNOPASSWD
Jadi dengan contoh pertama Anda, Anda dapat menjalankan perintah sebagai root tetapi tidak dapat menggunakan
-u
dan-g
menjalankannya sebagai pengguna atau grup lain.Dengan contoh 2. Anda dapat menjalankan perintah sebagai root atau menggunakannya
-u
untuk menjalankannya sebagai pengguna lain.Dengan 3. Anda dapat menjalankan perintah sebagai root atau menggunakan
-u
atau-g
untuk menjalankan perintah sebagai pengguna atau grup lain.sumber
127.0.0.1
ataulocalhost
sebagaihost
untuk keamanan tambahan sepele?ALL
ini.Mari kita bedakan ini:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro adalah nama pengguna yang kami beri izin. Letakkan% di bagian depan untuk membuatnya berlaku untuk grup.
ALL adalah nama untuk aturan ini. Sudoers dapat melakukan lebih dari sekedar memberikan izin global. Di situlah menjadi rumit sekalipun.
= tidak perlu penjelasan
ALL: ALL membaca sebagai (who_to_run_it_as: what_group_to_run_it_as). Dengan cara ini Anda dapat mengizinkan menjalankan perintah, tetapi hanya dalam konteks pengguna atau grup tertentu.
NOPASSWD: memintanya untuk mematikan prompt kata sandi.
/ path / to / command memungkinkan Anda menentukan perintah spesifik path_to_commmand, another_command
Yang perlu diingat adalah bahwa sementara sudo sebagian besar digunakan oleh pengguna rumahan untuk meningkatkan ke root privilege, itu bisa dan digunakan untuk mengontrol akses ke perintah tertentu dengan cara yang jauh lebih terperinci.
sumber
%
dan, another_command
catatannya. Sekarang saya mengerti%wheel
garis di distro berbasis Fedora.