Czy można zatrzymać tworzenie .sudo_as_admin_sub?

46

Za każdym razem, gdy wykonuję polecenie sudo, .sudo_as_admin_successfulw moim katalogu domowym tworzony jest plik o nazwie . O ile mogę stwierdzić, istnieje to wyłącznie w celu wyłączenia tego komunikatu, który bash drukuje przy starcie:

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

Można zatrzymać tę wiadomość, komentując odpowiednią sekcję /etc/bash.bashrc, ale sudonadal tworzy irytujący plik w moim katalogu domowym.

Strona ta sugeruje, że można zatrzymać plik tworzony przez usunięcie się z admingrupy, ale nie jestem w takiej grupie - idpokazuje, że jestem w josh, adm, cdrom, sudo, dip, plugdev, lpadmini sambashare, i adminnie jest /etc/group.

Czy istnieje sposób, aby zatrzymać tworzenie tego pliku?


Uważam, że nie jest to duplikat tego pytania , ponieważ było to pytanie, czy można usunąć powiadomienie wydrukowane przez bash, a nie czy można zatrzymać tworzenie pliku sudo.

Josh
źródło
1
Co jest w tym tak denerwującego? Prawie nie zajmuje miejsca.
edwinksl,
12
@edwinksl To bałagan wizualny, gdy próbuję znaleźć coś innego. Nie powinienem być świadomy jego istnienia, biorąc pod uwagę, że nigdy go nie zmodyfikuję.
Josh
5
i dlatego istnieje. z przodu. Dlaczego włączasz ukryte pliki do swoich widoków?
Rinzwind
11
Przynajmniej ten plik powinien umieścić się w .config lub .local. Nierzadko musimy przeglądać ukryte pliki, szczególnie w katalogu domowym. Czy nie dlatego wymyślono .config / .local, ponieważ absurdalne przeciążenie katalogu domowego, którego plik jest prawdopodobnie najbardziej darmowym przykładem?
NeilG
1
Żeby nie rozpoczynać wojny dystrybucyjnej (jest to pytane na askubuntu.com), ale sprawdziłem to dwukrotnie: tak naprawdę Ubuntu dodało to, co nie jest obecne w poprzedniej dystrybucji Debiana. Prawdopodobnie jest dodawany jako „przyjazny dla użytkownika”, ale ja, podobnie jak OP, uważam obecność takich losowych plików za denerwującą.
Per Lundberg,

Odpowiedzi:

38

W oparciu o następną sekcję plugins/sudoers/sudoers.cpliku kodu źródłowego nie wygląda na to, aby było to możliwe bez ponownej kompilacji sudo, nie definiując USE_ADMIN_FLAGmakra preprocesora.

Pamiętaj też, że sprawdza członkostwo w grupach zarówno, jak admin i sudo . Nie sprawdzałem dziennika zmian, ale podejrzewam, że ten ostatni czek został dodany, gdy sudostał się domyślną grupą uprzywilejowanych użytkowników - być może nazwa pliku nadal odnosi się admindo kompatybilności.

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
źródło
Oczywiście jest to możliwe bez ponownej kompilacji sudo! Po prostu wyjdź objdump -d, wyśledź logikę związaną z tym sprawdzaniem, a następnie przejdź do swojego zaufanego edytora szesnastkowego (a nawet hexdumpzwykłego edytora tekstowego w mgnieniu oka) na operację. Co mogłoby pójść źle?
mtraceur