Kann die Erstellung von .sudo_as_admin_successful gestoppt werden?

46

Jedes Mal, wenn ich einen Befehl mit ausführe sudo, wird eine aufgerufene Datei .sudo_as_admin_successfulin meinem Ausgangsverzeichnis erstellt. Soweit ich das beurteilen kann, dient dies nur zum Deaktivieren dieser Meldung, die beim Start von bash ausgegeben wird:

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

Es ist möglich, diese Nachricht zu stoppen, indem Sie den entsprechenden Abschnitt in auskommentieren /etc/bash.bashrc, aber sudodennoch eine lästige Datei in meinem Ausgangsverzeichnis erstellen.

Diese Webseite zeigt , dass Sie die Datei selbst aus dem durch Entfernen erstellt werden zu stoppen adminGruppe, aber ich bin nicht in einer solchen Gruppe - idzeigt , dass ich in josh, adm, cdrom, sudo, dip, plugdev, lpadminund sambashare, und administ nicht in /etc/group.

Gibt es eine Möglichkeit, die Erstellung dieser Datei zu stoppen?


Ich glaube, dies ist kein Duplikat dieser Frage , da hier gefragt wurde, ob es möglich ist, die von bash gedruckte Benachrichtigung zu entfernen, anstatt zu verhindern, dass die Datei von erstellt wird sudo.

Josh
quelle
1
Was ist daran so ärgerlich? Es braucht kaum Platz.
Edwinksl
12
@edwinksl Es ist eine visuelle Unordnung, wenn ich versuche, etwas anderes zu finden. Ich sollte mir seiner Existenz nicht bewusst sein müssen, da ich es niemals ändern werde.
Josh
5
und deshalb gibt es a. vorne. Warum fügst du versteckte Dateien in deine Ansichten ein?
Rinzwind
11
Zumindest sollte sich diese Datei in .config oder .local befinden. Es ist nicht selten, dass wir versteckte Dateien durchsuchen müssen, insbesondere im Home-Verzeichnis. Ist das nicht der Grund, warum .config / .local erfunden wurden, weil die lächerliche Überladung des Home-Verzeichnisses, für das diese Datei möglicherweise das unentgeltlichste Beispiel ist?
NeilG
1
Nicht, um einen Distributionskrieg zu beginnen (dies wird auf askubuntu.com verlangt), aber ich habe es noch einmal überprüft: Dies ist tatsächlich etwas, das Ubuntu hinzugefügt hat und das in der Debian-Distribution im Upstream nicht vorhanden ist. Es wird wahrscheinlich hinzugefügt, um "benutzerfreundlich" zu sein, aber ich, wie das OP, finde das Vorhandensein von zufälligen Dateien wie diese ärgerlich.
Per Lundberg

Antworten:

38

Basierend auf dem folgenden Abschnitt der plugins/sudoers/sudoers.cQuellcodedatei sieht es nicht so aus, als ob dies ohne Neukompilierung sudound Aufhebung der Definition des USE_ADMIN_FLAGPräprozessor-Makros möglich wäre.

Beachten Sie außerdem, dass die Gruppenzugehörigkeit von admin und überprüft wird sudo. Ich habe das Changelog nicht überprüft, aber ich vermute, dass die letzte Überprüfung hinzugefügt wurde, als sie sudozur Standardgruppe für privilegierte Benutzer wurde - möglicherweise bezieht sich der Dateiname aus Gründen der adminKompatibilität immer noch auf .

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 */
Stahlfahrer
quelle
Natürlich ist es möglich, ohne neu zu kompilieren sudo! objdump -dGehen Sie einfach raus , suchen Sie die Logik, die mit dieser Überprüfung verbunden ist, und gehen Sie dann zu Ihrem vertrauenswürdigen Hex-Editor (oder sogar zu hexdumpeinem regulären Texteditor, der Ihnen zur Seite steht), um eine Operation durchzuführen. Was könnte schiefgehen?
Mtraceur