Чи можна зупинити створення .sudo_as_admin_successful створення?


46

Кожен раз, коли я виконую команду із sudo, .sudo_as_admin_successfulу моєму домашньому каталозі створюється названий файл . Наскільки я можу сказати, це існує єдиною метою відключення цього повідомлення, яке bash друкує при запуску:

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

Зупинити це повідомлення можна, коментуючи відповідний розділ у /etc/bash.bashrc, але sudoвсе ж створює дратівливий файл у моєму домашньому каталозі.

Цей сайт показує , що ви можете зупинити файл створюється шляхом видалення себе з adminгрупи, але я не в будь-який такий групі - idпоказує , що я перебуваю в josh, adm, cdrom, sudo, dip, plugdev, lpadminі sambashare, а adminне в /etc/group.

Чи є спосіб зупинити створення цього файлу?


Я вважаю, що це не дублікат цього питання , оскільки це було питання про те, чи можна змусити вивести повідомлення, надруковані bash, піти, а не якщо можна зупинити створення файлу sudo.


1
Що так дратує в цьому? Він ледве займає будь-який простір.
edwinksl

12
@edwinksl Це візуальна захаращеність, коли я намагаюся знайти щось інше. Мені не слід було б усвідомлювати його існування, враховуючи, що я його ніколи не змінюватиму.
Джош

5
і саме тому є. на фронті. Чому ви включаєте приховані файли у свої види?
Rinzwind

11
Принаймні, цей файл повинен містити .config або .local. Нечасто нам потрібно переглядати приховані файли, особливо в домашній каталог. Чи не тому .config / .local були винайдені, тому що смішні перевантаження домашнього каталогу, з яких цей файл, мабуть, є найбільш вигідним прикладом?
NeilG

1
Не для початку дистрибутивної війни (це запитується на askubuntu.com), але я повторно перевірив: це насправді те, що додав Ubuntu, якого немає у розповсюдженому дистрибутиві Debian. Це, ймовірно, додається "зручним для користувачів", але я, як і ОП, знаходжу присутність випадкових файлів на кшталт цього.
Пер Лундберг

Відповіді:


38

Виходячи з наступного розділу plugins/sudoers/sudoers.cфайлу вихідного коду , схоже, що це неможливо без перекомпіляції sudoта визначення USE_ADMIN_FLAGмакросу попереднього процесора.

Також зауважте, що перевірка належності до групи admin і sudo . Я не перевіряв журнал змін, але підозрюю, що остання перевірка була додана, коли sudoстала групою за замовчуванням для пільгових користувачів - можливо, ім'я файлу все ще відноситься до adminсумісності.

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 */

Звичайно, це можливо без перекомпіляції sudo! Просто вийдіть objdump -d, відслідковуйте логіку, пов’язану з цією перевіркою, а потім заходьте зі своїм надійним шестигранним редактором (або навіть, hexdumpі звичайний текстовий редактор зробить дрібно) для певної операції. Що може піти не так?
mtraceur
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.