Wie kann ich ein kleines Skript schreiben, um die Dateien aller Verzeichnisse zu bereinigen, wenn der Computer gestartet wird?

9

Ich habe einen Gastcomputer nur für die Internetnutzung. Einige Benutzer laden einige Dateien herunter und lassen sie auf dem Desktop, aber der Computer verfügt nicht über genügend Speicherplatz für alle Gäste und es ist nicht zulässig, dort eine Datei abzulegen.

Ich möchte beim Starten des Computers jede Datei im Ausgangsverzeichnis bereinigen, aber die Verzeichnisstruktur wie Musik, Bilder, Dokumente und Downloads beibehalten.

Wie kann ich das erreichen?

Achu
quelle
An fast alle: Ihre Antworten - sorry - saugen und Sie wissen es. Was ist, wenn der Gast eine andere Sprache wählt? Was ist mit all diesen versteckten Konfigurations- und Cache-Dateien (Browserverlauf, Papierkorb, ...)? Es sollte eher eine weiße Liste von Dateien geben, die nicht entfernt werden (laut Roland Taylor). Darüber hinaus sollten Sie in Betracht ziehen, xdg-user-dirund ~/.config/user-dirs.dirsfür die Standardverzeichnisse zu verwenden.
dAnjou
@dAnjou: Mit meiner Lösung werden die Standardordner zu Hause entsprechend der gewählten Sprache erstellt. Außerdem scheint das OP eine saubere Umgebung anzufordern, sodass ich nicht verstehen kann, warum Sie eine so genannte "weiße Liste" haben sollten.
Enzotib
1
@enzotib: Ok, sorry. Anscheinend haben sich Roland Taylor (und ich) geirrt. Ich weiß nicht, was mich getroffen hat. Können Sie Ihre Antwort bearbeiten und fügen Sie die Möglichkeit , in das Skript zu setzen /etc/gdm/PostSessionoder /etc/gdm/PreSessionso , dass ich meinen downvote zurücknehmen kann?
dAnjou

Antworten:

14

Sie können sicher alle Dateien im Home-Verzeichnis entfernen , da sie neu erstellt werden, abgesehen von Dateien, die bei der Benutzererstellung von kopiert /etc/skelwurden

#!/bin/bash

shopt -s dotglob 
rm -rf /home/username/*
sudo -u username cp -a /etc/skel/* /home/username/

wo usernamesollte durch etwas Sinnvolles ersetzt werden.

Gemäß Ihrer Anfrage ("wenn der Computer startet") kann dies von ausgeführt werden /etc/rc.local. Wahrscheinlicher ist, dass Sie es zwischen den einzelnen Anmeldungen ausführen möchten. Setzen Sie es also unter /etc/gdm/PostSessionoder /etc/gdm/PreSession.

Enzotib
quelle
Sie wissen, dass es einige Dateien gibt, die Sie beim Löschen nicht mehr anmelden können?
RolandiXor
@ Roland Taylor: Welche Datei? Ich habe gerade getestet, alle Dateien zu entfernen
Enzotib
1
@danjjl: Mit dieser Option stimmt Bash *mit allen Dateien und Verzeichnissen überein , auch mit den versteckten.
Enzotib
1
Nein, fehlende Dateien hindern Sie nicht daran, sich anzumelden. Ein fehlendes Ausgangsverzeichnis kann Probleme verursachen oder Dateien mit falschen Berechtigungen festlegen. Das Programm sollte jedoch unter keinen Umständen davon ausgehen, dass eine Datei vorhanden ist. Wenn es nicht existiert, sollte es einfach erstellt werden.
Jo-Erlend Schinstad
1
Ich schlage nicht vor, es in "Startanwendung" zu setzen, die wahrscheinlich nach dem user-dirs-update-gtkglobalen Startskript ausgeführt wird. Für einen anderen Benutzer müssen Sie das usernameim Skript ändern . Schließlich Gast berücksichtigen nicht eine persistente Home - Verzeichnis haben, so dass das Skript für dieses Konto nicht benötigt wird.
Enzotib
6

Sie beschreiben die Gastsitzung. Ich bin mir nicht ganz sicher, wie das funktioniert, aber in 11.10 wird es standardmäßig im Begrüßungsbildschirm angezeigt. Dieses Konto macht genau das, was Sie wollen. Die Frage ist also, ob Sie Zeit damit verbringen möchten, es am 11.04 neu zu erstellen, oder ob Sie lieber warten möchten, bis Sie mit dem Upgrade auf 11.10 vertraut sind. Es geht am Donnerstag in die Beta 1. In jedem Fall tut es nicht weh, eine Live-Sitzung herunterzuladen und zu starten und zu sehen, wie es Ihnen gefällt. Wenn es genau so ist, wie Sie es möchten, wissen Sie, wie Sie es neu erstellen.

Jo-Erlend Schinstad
quelle
2

Erstellen Sie ein Skript mit einem Namen Ihrer Wahl und fügen Sie diesen Inhalt hinzu:

rm -r ~/Music/*
rm -r ~/Pictures/*
rm -r ~/Documents/*
rm -r ~/Videos/*
rm -r ~/Downloads*
rm -r ~/Desktop/*

Speichern Sie diese Datei, markieren Sie sie als ausführbare Datei und fügen Sie sie Ihren Startanwendungen hinzu (für das Konto, das bereinigt werden muss).

Dadurch werden alle Dateien in diesen Verzeichnissen gelöscht. Das Reinigen des Inhalts von sich ~/selbst ist jedoch etwas komplexer, und ich werde meine Antwort aktualisieren, wenn ich einen sicheren Weg finde, dies zu tun.

RolandiXor
quelle
1

Sie könnten so etwas tun

#!/bin/bash

rm -rf /home/Guest/Desktop/*
rm -rf /home/Guest/Documents/*
rm -rf /home/Guest/Downloads/*
rm -rf /home/Guest/Music/*
rm -rf /home/Guest/Pictures/*
rm -rf /home/Guest/Videos/*

Speichern Sie dies als so etwas wie cleanup.shund machen Sie es ausführbar mit chmod +x cleanup.sh. Dann können Sie anrufen ./cleanup. Beachten Sie, dass dadurch alles in diesen Ordnern entfernt wird. Gehen Sie vorsichtig vor. Stellen Sie sicher, dass "Gast" in den Namen Ihres Benutzers geändert wird.

Sie können dies beim Start ausführen, indem Sie es zu den Einstellungen für Startanwendungen hinzufügen.

Sie können dieses Skript auch als Cron-Job auf Ihrem System hinzufügen, damit es jede Nacht ausgeführt wird. Sehen Sie hier für weitere Informationen über Cron - Jobs.

Kris Harper
quelle
lol deine Antwort ist besser als meine: D! Übrigens -rf in -r ändern, da dies sicherer ist.
RolandiXor
@ Roland: Nicht unbedingt sicherer und sogar eine mögliche Gefahr: -fVerhindert das Auffordern, schreibgeschützte Dateien (Dateien ohne gesetztes Schreibbit) zu entfernen, und entfernt diese ohne Bestätigung. Durch das Entfernen -fkann ein Benutzer verhindern, dass Dateien entfernt werden, indem er die /home/Guest/Desktop/000000000Datei erstellt und schreibgeschützt macht. Dadurch bleibt das Skript mit einer versteckten Bestätigung hängen und das Entfernen von Dateien wird nicht fortgesetzt. Firefox ist dafür bekannt, schreibgeschützte Downloads durchzuführen.
Lekensteyn
Deshalb habe ich es ursprünglich aufgenommen. Ich wollte nicht, dass das Skript im Falle einer schreibgeschützten Datei fehlschlägt. Ich dachte auch, da es sowieso ein ziemlich destruktives Skript war, würde das Hinzufügen der -fFlagge nicht viel schaden. Ich kann es wieder hinzufügen.
Kris Harper