Pertanyaan Di mana penghinaan sudo disimpan?


Bagi mereka yang suka humor, sudo dapat dikonfigurasi untuk mencetak acak lebih atau kurang menghina atau frase lucu bukannya netral Sorry, try again. dengan menambahkan baris di bawah ini /etc/sudoers (menggunakan perintah sudo visudo, tidak mengedit secara manual!):

Defaults insults

Berikut beberapa contohnya:

[sudo] password for bytecommander: 
The more you drive -- the dumber you get.
[sudo] password for bytecommander: 
I've seen penguins that can type better than that.
[sudo] password for bytecommander: 
This mission is too important for me to allow you to jeopardize it.
[sudo] password for bytecommander: 
He has fallen in the water!
[sudo] password for bytecommander: 
Hold it up to the light --- not a brain in sight!

Sekarang hanya untuk bersenang-senang Saya ingin membaca semuanya, tetapi memasukkan kata sandi yang salah sepanjang hari bukanlah metode terbaik (penundaan setelah setiap upaya, hanya 2 pesan per 3 upaya, batalkan setelah 3 kali percobaan, ...).

Jadi ... dimana penghinaan ini sebenarnya disimpan? File teks biasa yang bisa saya baca langsung? Atau string berkode keras dalam kode sumber?

Bagaimana saya bisa mendapatkan daftar semua yang tersedia sudo pesan penghinaan?


225
2017-10-15 18:25


asal




Jawaban:


Mereka berada di file biner

/usr/lib/sudo/sudoers.so

(ditemukan oleh: find /usr/lib/sudo -type f | xargs grep "fallen in the water")

Jika Anda mengaktifkan unduhan sumber dan lakukan

apt source sudo

Anda dapat menemukan file penghinaan di direktori sumber di bawah

plugins/sudoers

File-file itu

ins_2001.h
ins_classic.h
ins_csops.h
ins_goons.h
insults.h

Contoh apa yang tampak seperti file ini:

#ifndef SUDOERS_INS_GOONS_H
#define SUDOERS_INS_GOONS_H

/*
 * Insults from the "Goon Show."
 */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",

dan seterusnya ... mereka cukup mudah dibaca.


173
2017-10-15 18:34



Sekarang Zanna memberi tahu kami bahwa mereka berada dalam sudoers.so, Anda juga dapat "membaca" mereka menggunakan string daripada kode sumber. Jalankan ini: strings /usr/lib/sudo/sudoers.so - Stéphane
@ Stéphane Itu memang benar strings tidak akan memberi tahu Anda jika semua penghinaan itu sama. Membaca sumber yang sebenarnya dapat mengungkapkan apakah kriteria tertentu mempengaruhi pilihan penghinaan. - kasperd
@ Stéphane Plus berjalan string pada eksekusi menghasilkan sejumlah besar positif palsu,. - MariusMatutiae
ins_2001.h  ins_classic.h  ins_csops.h  ins_goons.h - Matt
Aku tidak akan benar-benar melakukan ini sampai aku melihat penghinaan Goon Show, pada saat itu aku tidak bisa mengetik cukup cepat - JamesENL


Dengan

dpkg -L sudo | xargs grep dumber

kita bisa mencari file mana dari paket sudo mengandung kata dumber.

Satu-satunya pertandingan ada dalam file /usr/lib/sudo/sudoers.so. Ini adalah file biner jadi kami gunakan strings perintah untuk hanya mendapatkan hal-hal yang terlihat seperti dapat dibaca manusia. Karena banyak kita memasukkan hasilnya less:

strings /usr/lib/sudo/sudoers.so | less

Di less kita bisa gunakan

/dumber

untuk mencari lagi kata "bodoh". Itu membawa kita ke penghinaan. Gulir ke atas dan ke bawah dengan tombol kursor dan berhenti dengan q


75
2017-10-15 18:55



Dipilih untuk menunjukkan teknik umum yang mudah untuk menemukan jawaban untuk pertanyaan semacam ini. - 200_success
Menggunakan strings -n10 untuk mengurangi positif palsu. Lihat juga @ Jawaban DigitalTrauma yang menggunakan objcopy hanya untuk memberi makan .rodata bagian ke dalam strings, lagi-lagi mengurangi kebisingan. - Peter Cordes


Daftar semua Penghinaan

Ketika kita melihat semua penghinaan, kita menemukan berita gembira yang menarik: mengatakan Broccoli secara politis benar, tetapi mengatakan bahwa Burrito tidak. Semua penghinaan tercantum di bawah ini.

ins_2001.h (Penghinaan Space Odyssey 2001):

.
    /*
     * HAL insults (paraphrased) from 2001.
     */

    "Just what do you think you're doing Dave?",
    "It can only be attributed to human error.",
    "That's something I cannot allow to happen.",
    "My mind is going. I can feel it.",
    "Sorry about this, I know it's a bit silly.",
    "Take a stress pill and think things over.",
    "This mission is too important for me to allow you to jeopardize it.",
    "I feel much better now.",

ins_classic.h (Penghinaan Sudo 8 Asli):

    /*
     * Insults from the original sudo(8).
     */

    "Wrong!  You cheating scum!",
#ifdef PC_INSULTS
    "And you call yourself a Rocket Scientist!",
#else
    "No soap, honkie-lips.",
#endif
    "Where did you learn to type?",
    "Are you on drugs?",
    "My pet ferret can type better than you!",
    "You type like i drive.",
    "Do you think like you type?",
    "Your mind just hasn't been the same since the electro-shock, has it?",

ins_csops.h (Penghinaan CSOps):

    /*
     * CSOps insults (may be site dependent).
     */

    "Maybe if you used more than just two fingers...",
    "BOB says:  You seem to have forgotten your passwd, enter another!",
    "stty: unknown mode: doofus",
    "I can't hear you -- I'm using the scrambler.",
    "The more you drive -- the dumber you get.",
#ifdef PC_INSULTS
    "Listen, broccoli brains, I don't have time to listen to this trash.",
#else
    "Listen, burrito brains, I don't have time to listen to this trash.",
#endif
    "I've seen penguins that can type better than that.",
    "Have you considered trying to match wits with a rutabaga?",
    "You speak an infinite deal of nothing",

ins_goons.h (Penghinaan Goon Show):

.
    /*
     * Insults from the "Goon Show."
     */

    "You silly, twisted boy you.",
    "He has fallen in the water!",
    "We'll all be murdered in our beds!",
    "You can't come in. Our tiger has got flu",
    "I don't wish to know that.",
    "What, what, what, what, what, what, what, what, what, what?",
    "You can't get the wood, you know.",
    "You'll starve!",
    "... and it used to be so popular...",
    "Pauses for audience applause, not a sausage",
    "Hold it up to the light --- not a brain in sight!",
    "Have a gorilla...",
    "There must be cure for it!",
    "There's a lot of it about, you know.",
    "You do that again and see what happens...",
    "Ying Tong Iddle I Po",
    "Harm can come to a young lad like that!",
    "And with that remarks folks, the case of the Crown vs yourself was proven.",
    "Speak English you fool --- there are no subtitles in this scene.",
    "You gotta go owwwww!",
    "I have been called worse.",
    "It's only your word against mine.",
    "I think ... err ... I think ... I think I'll go home",

Berkas insults.h berisi instruksi kompilator di mana penghinaan di atas untuk dimasukkan dalam kernel yang dikompilasi. Memang, Anda dapat membuat file penghinaan Anda sendiri, menambahkan nama ke penghinaan.h dan mengkompilasi ulang untuk memiliki pesan seperti, "Apa, apakah Anda pengguna ArchLinux?" atau "Ini bukan Windows di mana kesalahan adalah hal yang biasa!", dll.

Perhatikan #ifdef PC_INSULTS di beberapa file penghinaan. Ini tidak berarti "jika Anda memiliki komputer pribadi" itu berarti "jika Anda ingin benar secara politis."


72
2017-10-15 20:22



Saya tidak tahu "brokoli" dianggap lebih benar secara politis daripada "burrito." - fluffy
@fluffy Saya menganggap itu referensi untuk orang-orang yang diet nasional termasuk burrito. Sekarang saya menyesal tidak menyensor kode. Saya seharusnya hanya menggunakan opsi PC_INSULT dan menghapus setengah lainnya. Di sisi lain saya tidak suka sensor sejarah seperti yang terjadi dengan Tom Sawyer dan buku-buku seperti itu. Karena penghinaan ini berasal dari 2004, saya akan bersalah karena menyensor sejarah jika saya menghapus bagian #ifdef. - WinEunuuchs2Unix
Jangan terlalu khawatir tentang "menyensor sejarah" ketika berbicara tentang istilah apa yang harus kita gunakan sekarang. Saya dapat memikirkan banyak kata yang saya gunakan 40 tahun yang lalu yang secara rasial menghina, seksis, dll. Saya senang untuk merujuk mereka dalam konteks historis mereka tetapi terima kasih kepada tuhan masyarakat telah bergerak maju dan mengakui bahaya dalam banyak istilah ini . Ya tolong katakan dengan benar secara politis jika Anda mau. Berusahalah menjadi minoritas miskin dengan kata-kata sakit dulu. - Michael Durrant
Tidak ada akhir untuk kebenaran PC. Setiap kata dapat dianggap menyinggung, dan brokoli tidak akan menjadi PC di Peru misalnya ... Burrito adalah cercaan rasial yang nyata. - Shautieh
Sebagian besar orang di luar AS dan mungkin beberapa di AS tidak akan melihat ini sebagai "sebuah cercaan rasial yang nyata". Bagi saya, itu lucu bahwa siapa pun yang menulis daftar ini disengaja penghinaan (itu adalah nama fitur!) sebenarnya peduli tentang orang-orang tertentu yang benar-benar tersinggung ... tidak ada akhir untuk itu, dan jika Anda benar-benar khawatir, jangan aktifkan fitur ini ...?! - laugh


Jawaban di atas sangat bagus untuk pencarian offline. Tapi kami sedang online. Sangat terbuka Pencarian kode Debian dan coba salah satu penghinaan sini . Itu langsung memberitahu Anda itu masuk sudo_1.8.12-1/plugins/sudoers/ins_csops.h. Ini memiliki keuntungan untuk menemukannya dimana mana baik itu file konfigurasi yang akan digunakan /etc atau terserah. Dan karena ini adalah file .h, itu terlihat di sumbernya dan bukan sesuatu yang dapat Anda modifikasi.


11
2017-10-18 23:49





Untuk menambah jawaban lainnya, penghinaan tampaknya berada di .rodata bagian sudoers.so. Kamu dapat memakai objcopy untuk agak membatasi output, meskipun masih akan ada banyak kesalahan palsu:

$ objcopy /usr/lib/sudo/sudoers.so /dev/null --dump-section .rodata=/dev/stdout | strings | head
/build/sudo-g3ghsu/sudo-1.8.16/plugins/sudoers/auth/sudo_auth.c
invalid authentication methods
Invalid authentication methods compiled into sudo!  You may not mix standalone and non-standalone authentication.
There are no authentication methods compiled into sudo!  If you want to turn off authentication, use the --disable-authentication configure option.
Unable to initialize authentication methods.
Just what do you think you're doing Dave?
It can only be attributed to human error.
That's something I cannot allow to happen.
My mind is going. I can feel it.
Sorry about this, I know it's a bit silly.
$ 

7
2017-10-17 23:48



Jika Anda dapat mentolerir banyak kesalahan palsu, mengapa tidak digunakan saja strings dari pada objcopy? :) - Ruslan
@Ruslan: Ini sudah ada objcopy | strings, untuk hanya memindai .rodata bagian dari segmen teks. Apa yang mengurangi false positive adalah meningkatkan panjang string minimum dari default 4 hingga sesuatu seperti 10: strings -n10. Dan pipa ke dalamnya lesstidak head, IMO. Semua penghinaan tampaknya bersebelahan, BTW. - Peter Cordes
Ah, saya tidak menggulir kode, untuk melihat strings sudah digunakan. - Ruslan