Можно ли остановить создание .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 из апстрима. Вероятно, он добавлен как «удобный для пользователя», но я, как и OP, нахожу наличие случайных файлов, таких как это раздражает.
За Лундберг

Ответы:

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 */
steeldriver
источник
Конечно, это возможно без перекомпиляции sudo! Просто выйдите objdump -d, отследите логику, связанную с этой проверкой, а затем зайдите с вашим верным шестнадцатеричным редактором (или даже hexdumpобычным текстовым редактором, в крайнем случае) для некоторой операции. Что может пойти не так?
mtraceur