Est-il possible d'arrêter la création de .sudo_as_admin_successful?

46

Chaque fois que j'exécute une commande avec sudo, un fichier appelé .sudo_as_admin_successfulest créé dans mon répertoire personnel. Autant que je sache, ceci existe uniquement dans le but de désactiver ce message que bash affiche au démarrage:

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

Il est possible d'arrêter ce message en mettant en commentaire la section correspondante /etc/bash.bashrc, mais sudocrée néanmoins un fichier gênant dans mon répertoire personnel.

Cette page indique que vous pouvez arrêter le fichier créé par vous - même la suppression du admingroupe, mais je ne suis pas dans un tel groupe - idmontre que je suis josh, adm, cdrom, sudo, dip, plugdev, lpadminet sambashare, et adminest pas /etc/group.

Est-il possible d'empêcher la création de ce fichier?


Je pense que ce n’est pas un doublon de cette question , car il s'agissait de demander s’il était possible de faire disparaître l’avis imprimé par bash plutôt que s’il était possible d’interdire la création du fichier par sudo.

Josh
la source
1
Qu'y a-t-il de si agaçant? Cela prend à peine de la place.
Edwinksl
12
@edwinksl C'est un fouillis visuel quand j'essaie de trouver autre chose. Je ne devrais pas être au courant de son existence, étant donné que je ne le modifierai jamais.
Josh
5
et c'est pourquoi il y a un. devant. Pourquoi incluez-vous des fichiers cachés dans vos vues?
Rinzwind
11
Au moins, ce fichier doit se mettre dans .config ou .local. Il n'est pas rare que nous ayons besoin de parcourir les fichiers cachés, en particulier dans le répertoire personnel. N’est-ce pas pour cela que .config / .local a été inventé, à cause de la surcharge ridicule du répertoire de base, dont ce fichier est peut-être l’exemple le plus gratuit?
NeilG
1
Ne pas commencer une guerre de distribution (cela est demandé sur askubuntu.com), mais j'ai vérifié: c'est en fait une chose ajoutée par Ubuntu qui n'est pas présente dans la distribution Debian en amont. Il a probablement été ajouté comme étant "convivial", mais, à l'instar de l'OP, je trouve la présence de fichiers aléatoires comme ceci ennuyeux.
Per Lundberg

Réponses:

38

D'après la section suivante du plugins/sudoers/sudoers.cfichier de code source , il ne semble pas possible que ce soit possible sans recompilation sudo, indéfinissant la USE_ADMIN_FLAGmacro de préprocesseur.

Notez également qu’il vérifie l’appartenance au groupe admin et sudo . Je n'ai pas vérifié le journal des modifications, mais je soupçonne que cette dernière vérification a été ajoutée au moment de sudodevenir le groupe par défaut pour les utilisateurs privilégiés - peut-être que le nom du fichier fait toujours référence à la admincompatibilité.

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
la source
Bien sûr, c'est possible sans recompiler sudo! Sortez simplement objdump -d, repérez la logique impliquée dans cette vérification, puis entrez-y avec votre fidèle éditeur hexadécimal (ou même hexdumpet un éditeur de texte ordinaire le fera à la rigueur) pour une intervention chirurgicale. Qu'est-ce qui pourrait mal se passer?
mtraceur