ich brauche eine kleine Hilfe für einen Linux-Befehl zum Dateien löschen. Hintergrund: Ich lösche innerhalb eines Programms alle Dateien rekursiv in einem Verzeichnis, die älter als 7 Tage sind. Alle bisherigen Benutzer sind auf der gleichen Ebene und schreiben die Dateien als rw-r–r-- oder rw-rw-r–, entsprechend löschbar sind die Dateien. Dazu benutze ich erfolgreich diesen Befehl:
Es sollen jetzt auch übergeordnete Benutzer auf diese Zielordner schreiben. Eine Änderung der Dateirechte soll nicht stattfinden. Mein Problem hierbei: Sobald ein übergeordneter Benutzer schreibt, kann ich mit meinen Benutzerrechten nicht mehr löschen - es erfolgt eine J/N-Nachfrage zur Bestätigung.
Ich suche eine Lösung, dass keine Nachfrage seitens Linux erfolgt, ob ich eine „durch Überordnung“ zugriffsgeschützte Datei löschen will oder nicht. Diese übergeordneten Benutzerdateien sollen einfach kommentar- und nachfragelos übersprungen werden.
Alle bisherigen Benutzer sind auf der
gleichen Ebene
Ich nehme an, Du meinst, sie sind in der gleichen Gruppe.
„!find /verzeichnis/zielordner/ -mtime +7 -type f
-exec /bin/rm {} ;“
Es sollen jetzt auch übergeordnete Benutzer
ich habe ebenfalls Probleme mit dieser Terminologie. Es gibt doch nur User und Gruppen, aber keine Hierarchie im Sinne von übergeordneten Usern
auf diese
Zielordner schreiben.
Sobald ein übergeordneter
Benutzer schreibt, kann ich mit meinen Benutzerrechten nicht
mehr löschen - es erfolgt eine J/N-Nachfrage zur Bestätigung.
Diese übergeordneten
Benutzerdateien sollen einfach kommentar- und nachfragelos
übersprungen werden.
Lass sie doch einfach schon beim finden „überspringen“, sprich, nicht finden:
Die Option -writable sorgt dafür, daß nur die schreibbaren, also auch löschbaren Dateien gefunden werden.
Ich hoffe, daß ich das mit deinen „übergeordneten“ Dateien und Usern richtig interpretiert habe.
Ich tippe mal darauf, dass das Verzeichnis /tmp/versuch für den User kb writeable ist. Damit kann dieser User alle Dateien in diesem Verzeichnis löschen, auch wenn diese selbst nicht writeable für ihn sind.
Ob ein User die Dateien eines anderen Users löschen kann, hat nichts mit der Option -f oder --interactive zu tun, sondern hängt ausschliesslich von den Filemodusbits der betroffenen Dateien und Verzeichnisse ab. Die beiden Optionen des Befehls rm ändern daran nichts sondern unterbinden nur die Nachfrage, wenn eine schreibgeschützte Datei gelöscht werden soll. Die Nachfrage kommt auch bei einer schreibgeschützten Datei in einem schreibgeschützten Verzeichnis. Wird in diesem Fall mit „J“ geantwortet, wird die Datei trotzdem nicht gelöscht.
root@home:/tmp# ls -ld versuch/
dr-xr-xr-x 2 root root 4096 17. Feb 07:19 versuch/
root@home:/tmp# ls -l versuch/
insgesamt 0
-rw-r--r-- 1 root root 0 17. Feb 07:19 root.txt
axurit@home: /bin/rm /tmp/versuch/\*
/bin/rm: reguläre leere Datei (schreibgeschützt) „/tmp/versuch/root.txt“ entfernen? y
/bin/rm: Entfernen von „/tmp/versuch/root.txt“ nicht möglich: Keine Berechtigung
axurit@home: /bin/rm --interactive=never /tmp/versuch/\*
/bin/rm: Entfernen von „/tmp/versuch/root.txt“ nicht möglich: Keine Berechtigung
Es kommt also darauf an, was der UP genau will. Wenn er ohne Nachfrage alle Dateien löschen will, die er löschen kann, dann genügt die Option -f bzw. --interactive=never. Wenn er die nicht schreibbaren Dateien nicht löschen will, obwohl er dies könnte, wenn diese in einem schreibbaren Verzeichnis liegen, dann passt deine Lösung.
Ich tippe mal darauf, dass das Verzeichnis /tmp/versuch für
den User kb writeable ist.
Naja, davon bin ich ausgegangen. Wenn Michael schreibt „Es sollen jetzt auch übergeordnete Benutzer auf diese Zielordner schreiben.“
habe ich das so interpretiert, daß das Verzeichnis für alle (other) schreibbar ist, was auch immer diese ominösen „übergeordneten Benutzer“ sein sollen.
Es kommt also darauf an, was der UP genau will.
Ja, das scheint mir noch etwas unklar zu sein. Aber Michael wird den Nebel sicher noch auflösen
Ich muss das nochmal genauer erklären, zumindest soweit ich über die Berechtigungen Bescheid weiß - bin seit 20 Jahren Windows-Mausschubser und habe lediglich Randerfahrung mit Consolenbefehlen.
Ich habe mehrere Programme laufen, wir nennen es intern „Wächter“. Die Progs laufen auf einer Basic-ähnlichen Umgebung (echt kein Witz, ist ein HP-eigener Basicdialekt) auf einem Linux-System. Jeder Wächter hat seinen eigenen Benutzernamen, alle Wächter befinden sich in der Gruppe „users“. Dann habe ich Kollegen, die mir auch in Gruppe „users“ die Dateien unter deren Benutzernamen in meine Verzeichnisse einstellen. Diese Dateien lassen sich ohne Probleme verarbeiten (auslesen, verschieben, kopieren, löschen).
So - mein Problem: Jetzt kommt ein neuer Benutzer ins Spiel, dieser hat meines Wissens root-ähnliche Rechte und wickelt Scripte im Crontab ab, ist aber ebenfalls in Gruppe „users“. Das hatte ich mit „übergeordnet“ gemeint. Wenn mir dieser Benutzer eine Datei einstellt, streikt mein System, da meine Wächterbenutzer die Datei weder verändern (chmod, chown), nicht verschieben noch kopieren dürfen. Es fehlt das Zugriffsrecht. Leider bekomme ich keine Fehlermeldung zurück, das könnte ich abfangen. Mein System erkennt die Anfrage nach der Eingabe nicht selbständig.
Ich bin leider diese Woche nicht mehr am Problem zugange, werde mich aber am Montag mal mit der Idee -writable beschäftigen. Das klingt ganz gut, finde ich. Die andere Version mit --interactive=never bringt mir nichts, ich brauche die Dateien als Protokoll oder ggf. für ein Restore mindestens 7 Tage lang im Backup.
Nochmals vielen herzlichen Dank für die rege Anteilnahme, ich melde mich wieder, wie das ausgeht.