Apakah mungkin untuk menghentikan .sudo_as_admin_successful sedang dibuat?

46

Setiap kali saya menjalankan perintah sudo, file yang dipanggil .sudo_as_admin_successfuldibuat di direktori home saya. Sejauh yang saya tahu, ini ada untuk tujuan menonaktifkan pesan ini yang dicetak bash saat startup:

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Dimungkinkan untuk menghentikan pesan itu dengan mengomentari bagian yang relevan di dalamnya /etc/bash.bashrc, tetapi sudomasih membuat file yang mengganggu di direktori rumah saya.

Halaman web ini menunjukkan bahwa Anda dapat menghentikan file yang dibuat dengan menghapus diri dari adminkelompok, tapi aku tidak dalam kelompok tersebut - idmenunjukkan bahwa aku di josh, adm, cdrom, sudo, dip, plugdev, lpadmindan sambashare, dan admintidak dalam /etc/group.

Apakah ada cara untuk menghentikan file ini dibuat?


Saya percaya ini bukan duplikat dari pertanyaan ini , karena itu menanyakan apakah mungkin untuk membuat pemberitahuan dicetak oleh bash pergi, daripada jika mungkin untuk menghentikan file yang dibuat oleh sudo.

Josh
sumber
1
Apa yang sangat menyebalkan tentang itu? Hampir tidak membutuhkan ruang.
edwinksl
12
@edwinksl Kekacauan visual ketika saya mencoba menemukan sesuatu yang lain. Saya seharusnya tidak harus menyadari keberadaannya, mengingat bahwa saya tidak akan pernah memodifikasinya.
Josh
5
dan itulah sebabnya ada. di depan. Mengapa Anda menyertakan file tersembunyi dalam tampilan Anda?
Rinzwind
11
Setidaknya file ini harus menempatkan dirinya di .config atau .local. Tidak jarang kita perlu menelusuri file tersembunyi, terutama di direktori home. Bukankah itu sebabnya .config / .local ditemukan, karena direktori home yang berlebihan, yang mana file ini mungkin merupakan contoh yang paling serampangan?
NeilG
1
Bukan untuk memulai perang distro (ini ditanyakan pada askubuntu.com), tapi saya periksa ulang: ini sebenarnya adalah sesuatu yang ditambahkan Ubuntu yang tidak ada dalam distribusi Debian hulu. Sepertinya ditambahkan "ramah pengguna" tetapi saya, seperti OP, menemukan keberadaan file acak seperti ini menjengkelkan.
Per Lundberg

Jawaban:

38

Berdasarkan pada bagian berikut dari plugins/sudoers/sudoers.cfile kode sumber , itu tidak tampak seperti itu mungkin tanpa kompilasi ulang sudo, undefining USE_ADMIN_FLAGmakro pra-prosesor.

Juga, perhatikan bahwa ini memeriksa keanggotaan grup untuk keduanya admin dan sudo . Saya belum memeriksa changelog, tapi saya curiga cek terakhir ditambahkan ketika sudomenjadi grup default untuk pengguna yang memiliki hak istimewa - mungkin nama file masih mengacu pada adminkompatibilitas.

1229 #ifdef USE_ADMIN_FLAG
1230 static int
1231 create_admin_success_flag(void)
1232 {
1233     struct stat statbuf;
1234     char flagfile[PATH_MAX];
1235     int len, fd = -1;
1236     debug_decl(create_admin_success_flag, SUDOERS_DEBUG_PLUGIN)
1237
1238     /* Check whether the user is in the admin group. */
1239     if (!user_in_group(sudo_user.pw, "admin") &&
1240         !user_in_group(sudo_user.pw, "sudo"))
1241         debug_return_int(true);
1242
1243     /* Build path to flag file. */
1244     len = snprintf(flagfile, sizeof(flagfile), "%s/.sudo_as_admin_successful",
1245         user_dir);
1246     if (len <= 0 || (size_t)len >= sizeof(flagfile))
1247         debug_return_int(false);
1248
1249     /* Create admin flag file if it doesn't already exist. */
1250     if (set_perms(PERM_USER)) {
1251         if (stat(flagfile, &statbuf) != 0) {
1252             fd = open(flagfile, O_CREAT|O_WRONLY|O_EXCL, 0644);
1253             if (fd != -1)
1254                 close(fd);
1255         }
1256         if (!restore_perms())
1257             debug_return_int(-1);
1258     }
1259     debug_return_int(fd != -1);
1260 }
1261 #else /* !USE_ADMIN_FLAG */
1262 static int
1263 create_admin_success_flag(void)
1264 {
1265     /* STUB */
1266     return true;
1267 }
1268 #endif /* USE_ADMIN_FLAG */
Steeldriver
sumber
Tentu saja itu mungkin tanpa kompilasi ulang sudo! Hanya keluar objdump -d, melacak logika yang terlibat dalam pemeriksaan itu, kemudian masuk dengan hex editor terpercaya Anda (atau bahkan hexdumpdan editor teks biasa akan melakukannya dalam keadaan darurat) untuk beberapa operasi. Apa yang salah?
mtraceur