#recycle - Papierkorb

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich hab grad mal durch Forum geschaut und festgestellt, dass es ein paar Beiträge zum Papiertkorb gibt, aber auch noch ungelöste Rätsel. Vielleicht können wir in diesem Thread mal alles sammeln, was es zum Papierkorb gibt und dann einen Wiki-Beitrag dazu erstellen.

Ich versuch mal ne Fragenliste anzulegen, damit wir Stoff sammeln können. Wer also auch ne Frage hat oder eine Antwort weiß, kann sich ja beteiligen.

1] Gibts es den Papierkorb (wenn man ihn denn anstellt) für alles Betriebssysteme, die Smaba benutzen?

2] Was kann man alles löschen, das dann im Papierkorb auftaucht (Verzeichnisse, #-Dateien .-Dateien ...)?

3] Kann man bestimmte Dateien vom Papierkorb ausnehmen, wenn man sie löscht? Einstellung irgendwo? Tastenkombination?

4] Wie groß wird der Papierkorb maximal? Kann man das einstellen?

5] Wird der Papierkorb auch beim Backup gesichert? Inkrementell?

6] Wie wird der Papierkorb beim Wiederherstellen (Restore) behandelt? Wird er überschreiben?

7] Kann man den Papierkorb zeitgesteuert löschen? Antwort hier: http://www.synology-forum.de/showthread.html?t=6344&highlight=papierkorb

8] Kann man den Papierkorb Volumen abhängig gesteuert löschen?

9] Wie sind die Benutzerrechte im Papierkorb? Kann man einen User zwar löschen lassen, aber nicht wiederherstellen?

...

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Kannst mal ein Beispiel machen, wie man damit den Papierkorb konfiguriert? Weil ich grad nichts auf meiner DS dazu finde (recycle_share.conf oder so).

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Gemäss Punkt 6 des ersten Links werden ab Samba 3 die Konfigs der Papierkorbes direkt in smb.conf angelegt. Könnte also sein, dass Version 3 verwendet wird (weiss ich aber auch ned)
Ich selber habe damit noch nicht experimentiert, werde ich aber sicherlich bei meinem ipkg Samba mal ausprobieren. Die Datei recycle.so existiert bei dir irgendwo auf der DS?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Habe mal ein bisschen experimentiert, aber mit dem Default Samba kriege ich den Papierkorb so nicht zum starten. Die Angabe von vfs object setzt die Freigabe ausser Gefecht (wird nicht mehr gefunden). Ohne vfs object, wie es gemäss diverser Seiten auch funzen sollte, sieht man zwar die Freigabe, aber der Mülleimer wird beim Löschen nicht angelegt.
Ich werde das die Tage mal noch mit dem ipkg Samba probieren
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Schon fertig experimentiert :cool:
Mit dem ipkg Samba (habe Version 3.2.8-1) funzt folgende Version:
Code:
#pro Freigabe in smb.conf
[name]
vfs object=/volume1/@optware/lib/vfs/recycle.so
vfs options = /opt/etc/samba/recycle.conf
#andere Optionen
Obige Version will aber einfach nicht mit dem Default Samba laufen...
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also so wirklich funzt es trotzdem nicht: z.B. wird der Papierkorb mit der Kennung des Nutzers angelegt (Eigentümer). Rechte hat nur der Eigentümer, Gruppe und Welt haben logischerweise keine Rechte. Ich habe mal als guest gelöscht und dann mit einem anderen User auch. Der Papierkorb wurde mit guest erstellt, die Löschung der Dateien von guest war drin, aber die Löschung der Dateien des anderen Users war nicht vorhanden im Müll.
Es scheint mir als würden nicht alle Einstellungen aus smb.conf befolgt. Ich habe dort drin festgelegt, dass innerhalb von .recycle ein Unterordner pro User erstellt werden sollte. Leider wird diese Einstellung ignoriert.
Vielleicht habe ich was übersehen, aber so ist der Papierkorb für mich nicht zu gebrauchen
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Vielleicht habe ich was übersehen, aber so ist der Papierkorb für mich nicht zu gebrauchen

So langsam merkst du, warum ich diesen Thread aufgemacht habe :D

Nichts desto trotz wären systematische Antworten auf meine Fragen bzw. neue Fragen recht sinnvoll um damit sowas wie ein FAQ zum Papierkorb im Wiki aufzunehmen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Joa so langsam merke ich dass es nicht so einfach ist :D
Komischerweise werden gewisse Optionen umgesetzt: z.B. werden per Default die Verzeichnisstrukturen nicht miterhalten. Die Option die Verzeichnisstruktur im Papierkorb zu erhalten wird jedoch aktzeptiert und umgesetzt. Pro Benutzer ein Müllverzeichnis wird jedoch wieder nicht aktzeptiert. Und gut dokumentiert seitens der Samba Entwickler ist das Teil ha nicht wirklich.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
So habe jetzt noch eine andere Schreibweise probiert. Auf der Seite beim ersten Link den ich gepostet habe steht es für die DS falsch beschrieben. Nachfolgend der Auszug aus meiner smb.conf wie es jetzt funzt
vfs object=/volume1/@optware/lib/vfs/recycle.so
recycle:repository=.recycle/%U
recycle:versions=True
recycle:touch=True
recycle:keeptree=True
recycle:exclude=*.tmp|*.temp|*.o|*.obj|~$*
recycle:exclude_dir=/tmp|/temp|/cache
recylce:mode=KEEP_DIRECTORIES|VERSIONS|TOUCH
recycle:maxsize=0
Muss pro Share angegeben werden und legt ein Verzeichis .recylce im Root der Share an. Darunter pro Benutzer ein Verzeichnis für dessen Müll. Dabei wird der .recycle Ordner mit chmod 0700 angelegt, was natürlich nicht geht wenn mehrere User reinschreiben dürfen/sollen (also noch flugs ein chmod 0770 drüber).
Code:
# ls -all
drwxrwxrwx  7 root    Home   4096 May 13 14:52 .
drwxrwxrwx 23 root    root   4096 May 12 02:10 ..
drwxrwx---  4 tobster users  4096 May 13 14:52 .recycle
Die eigentlichen Müllverzeichnisse gehören dem jeweiligen User und die Gruppe und auch sonst niemand hat jedwelche Rechte drauf. Mülltrennung wie sie sein sollte...
Code:
 #ls -all .recycle/
drwxrwx--- 4 tobster users 4096 May 13 14:52 .
drwxrwxrwx 7 root    Home  4096 May 13 14:52 ..
drwx------ 3 guest   users 4096 May 13 14:52 guest
drwx------ 3 tobster users 4096 May 13 14:44 tobster
rechtemässig scheint mir das in Ordnung zu sein. Wer also Schreibrechte auf die Freigabe hat, kann auch den Müll benutzen. User ohne Schreibberechtigung können den recycle ned benutzen. zumdem kann kein User den Müll eines anderen lesen
@itari
hoffe es hülft ein wenig ;)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Dann versuche ich mal zu antworten:

1] Gibts es den Papierkorb (wenn man ihn denn anstellt) für alle Betriebssysteme, die Samba benutzen?

offensichtlich

2] Was kann man alles löschen, das dann im Papierkorb auftaucht (Verzeichnisse, #-Dateien .-Dateien ...)?

alle Arten von Dateien und Verzeichnisse

3] Kann man bestimmte Dateien vom Papierkorb ausnehmen, wenn man sie löscht? Einstellung irgendwo? Tastenkombination?

ja in der smb.conf per directive exclude und excludedir und auch per Dateigröße maxsize


4] Wie groß wird der Papierkorb maximal? Kann man das einstellen?

beliebig gross (nur die Plattenkapazität oder eine quote können einschränken) - nein

5] Wird der Papierkorb auch beim Backup gesichert? Inkrementell?

[offen]

6] Wie wird der Papierkorb beim Wiederherstellen (Restore) behandelt? Wird er überschreiben?

[offen]

7] Kann man den Papierkorb zeitgesteuert löschen? Antwort hier: http://www.synology-forum.de/showthread.html?t=6344&highlight=papierkorb

8] Kann man den Papierkorb Volumen abhängig gesteuert löschen?

[müsste man per Skript lösen]


9] Wie sind die Benutzerrechte im Papierkorb? Kann man einen User zwar löschen lassen, aber nicht wiederherstellen?

könnte man (mühsam) einstellen

Soweit so gut?

10] Kann man einfach feststellen (als Admin) wie groß der Papierkorb ist/alle Papierkörbe zusammen sind?

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
zu 5)
wenn rsync nicht die Anweisung hat versteckte Dateien und Verzeichnisse zu ignorieren, dann müsste der Papierkorb beim Backup der Share mit kopiert werden.
zu 6)
könnte mir keinen Grund vorstellen warum er nicht zurückgeschrieben würde ;) (ausser natürlich es steht irgendwo ein exclude .recycle)
zu 10)
Code:
# du -sch /path/to/.recycle
sollte diese Antwort geben. Du kannst in der smb.conf auch nur ein Verzeichnis für den Müll festlegen (für alles Shares) z.B. irgendein tmp Verzeichnis. Dann hast du mit obigem Befehel gleich alle Mülleimer abgeklappert und musst das nicht pro Share machen.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
zu 5)
wenn rsync nicht die Anweisung hat versteckte Dateien und Verzeichnisse zu ignorieren, dann müsste der Papierkorb beim Backup der Share mit kopiert werden.
Das wäre fatal für die Datensicherheit; als User hab ich keinen Einfluss auf den Zeitpunkt des Backups, da würde also mein Müll immer mitgesichert werden?
zu 6)
könnte mir keinen Grund vorstellen warum er nicht zurückgeschrieben würde ;) (ausser natürlich es steht irgendwo ein exclude .recycle)

Auch das ist ein worse-Szenario: Ich lösche was in den Papierkorb .... dann wird ne Sicherung gemacht ... dann lösche ich meinen Papierkorb, weil ich Platz brauche wegen meiner Quote ... jetzt spinnt das System und ein Restore wird fällig ... ich bekomm meinen Papierkorb zurückgemüllt und meine Quotengrenze wird dadurch überschrittten ... ich kann nichts mehr auf meine Share schreiben, weil die Quote greitft ...

zu 10)
Code:
# du -sch /path/to/.recycle
sollte diese Antwort geben. Du kannst in der smb.conf auch nur ein Verzeichnis für den Müll festlegen (für alles Shares) z.B. irgendein tmp Verzeichnis. Dann hast du mit obigem Befehel gleich alle Mülleimer abgeklappert und musst das nicht pro Share machen.

Zu 10] müsste es auch was komfortableres geben ... also ich hätte am liebsten im DS Manager eine Anzeige, wie voll der jeweilige Papierkorb der Share ist und pro Share einen Knopf mit "lösch mit den Korb..."

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
zu 5) und 6)
dann musst du dem rsync die zu ignorierenden Verzeichnisse resp Verzeichnismuster vorgeben. Per Default (einfach ein rsync Befehl ohne grossen Schnickschnack) werden diese zu 99% auch mitgesichert resp wiederhergestellt. rsync bietet etliche exclude Optionen. Der kluge Admin wird also den rsync Aufruf entsprechend anpassen (könnte mir vorstellen, dass Syno diese Verzeichnisse eh ignoriert beim Backup/Restore). Ich mach aber meine Backup direkt mit rsync drum weiss ich es ned besser...
Zu 10)
Das würde sich gut in deinem Samba Manager machen. Du brauchst ne Liste aller Shares (wenn du nicht einen zentralen Papierkorb gemacht hast). Diese klapperst du ab und liest mittels du die Grösse aus. Dann noch hübsch darstellen. Et voilà ;) :D

Gruss

tobi

p.s. wenn du den Mülleimer nicht pro Share sondern pro DS anlegst, dann wäre 10) ziemlich schnell erledigt ;)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@itari
So würde ich die Verzeichnisse auslesen
PHP:
<?php
//Array mit allen zu prüfenden Shares
$liste = array('/volume1/public');
//Array für die Rückgabe
$return = array();

foreach($liste as $wert){
  $handle = opendir($wert.'/.recycle');
  $return[$wert] = array();
  while (false !== ($file = readdir($handle))) {
    if($file != '..' && $file != '.'){
      $return[$wert][$file] = array();
      $size = exec('du -sch '.$wert.'/.recycle/'.$file);
      $return[$wert][$file] = $size;
    }
  }
}
var_dump($return);
?>
ergibt dir in etwa folgendes
Code:
array(1) {
  ["/volume1/public"]=>
  array(2) {
    ["guest"]=>
    string(9) "50M total"
    ["tobster"]=>
    string(9) "12K total"
  }
}[FONT=verdana]
[/FONT]

du hast danach also ein Array mit einem weiteren Array pro Freigabe als Element. Dieses innere Array hat dann pro User ein Element mit der Grösse dessen Papierkorbs

Ans Formular und die Verarbeitung mache ich mich die Tage mal. Aber jetzt wird gedaddelt :D

Gruss

tobi
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also hier mal eine primitive Draft-Version. funzt soweit alles. Achtung: Nach Absenden des Forms wird sofort ohne Rückfrage gelöscht
PHP:
<?php
$liste = array('/volume1/public');
$return = array();
$recycle = '.recycle';
foreach($liste as $wert){
  $handle = opendir($wert.'/'.$recycle);
  $return[$wert] = array();
  while (false !== ($file = readdir($handle))) {
    if($file != '..' && $file != '.'){
      $return[$wert][$file] = array();
      $size = exec('du -sch '.$wert.'/'.$recycle.'/'.$file);
      $size = split(' ',$size);
      $return[$wert][$file] = $size[0];
    }
  }
}
if(!isset($_POST['del']) || !isset($_POST['send'])){
?>
  <html>
  <head>
  <title>Manage the Samba Garbage</title>
  </head>
  <body>
  <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<?php
  foreach($return as $key=>$wert){
    echo $key;
    echo '<br />';
    foreach($wert as $schl=>$bla){
      echo '  '.$schl.'  '.$bla.'<input type="checkbox" name="del[]" value="'.$key.'/'.$recycle.'/'.$schl.'" /><br />';
    }
  }
?>
  <input type="submit" name="send" value="Löschen" />  <input type="reset" value="Stop" />
  </form>
  </body>
  </html>
<?php
}else{
  foreach($_POST['del'] as $wert){
    if(file_exists($wert)){
      exec('rm -R '.$wert);
    }
  }
  header('Location: '.$_SERVER['PHP_SELF']);
  exit;
}
?>
Dieses Teil darf in keinstem Falle vom Internet her erreichbar sein!!!

Allenfalls müsste man die Absicherung für 3rd Party Applications noch einbauen. Trotzdem gehört das Script nicht auf einen öffentlich zugänglichen Server. Eine kleine Absicherung wäre es noch wenn der zu löschende Pfad (übergeben aus dem Form) noch gegen das Array $liste mit den zulässigen Freigaben gegengecheckt wird. Dann könnte ein böswilliger Zeitgenosse wenigstens nicht allzuviel Schaden anrichten.
So aber in dieser Form gilt obiger roter Teil!!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
So und hier noch die Version die den zu löschenden Pfad nicht nur auf Existenz sondern auch gegen die Whitelist prüft
PHP:
<?php
$liste = array('/volume1/public');
$return = array();
$recycle = '.recycle';
foreach($liste as $wert){
  $handle = opendir($wert.'/'.$recycle);
  $return[$wert] = array();
  while (false !== ($file = readdir($handle))) {
    if($file != '..' && $file != '.'){
      $return[$wert][$file] = array();
      $size = exec('du -sch '.$wert.'/'.$recycle.'/'.$file);
      $size = split(' ',$size);
      $return[$wert][$file] = $size[0];
    }
  }
}
if(!isset($_POST['del']) || !isset($_POST['send'])){
?>
  <html>
  <head>
  <title>Manage the Samba Garbage</title>
  </head>
  <body>
  <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<?php
  foreach($return as $key=>$wert){
    echo $key;
    echo '<br />';
    foreach($wert as $schl=>$bla){
      echo '  '.$schl.'  '.$bla.'<input type="checkbox" name="del[]" value="'.$key.'/'.$recycle.'/'.$schl.'" /><br />';
    }
  }
?>
  <input type="submit" name="send" value="Löschen" />  <input type="reset" value="Stop" />
  </form>
  </body>
  </html>
<?php
}else{
  foreach($_POST['del'] as $wert){
    if(file_exists($wert)){
      $check = false;
      foreach($liste as $w){
        $check = strpos($wert,$w);
        if($check === 0) break;
      }
      if($check === 0){
        exec('rm -R '.$wert);
      }else{
        die('Hacker Alarm ;-)');
      }
    }else{
      die('Hacker Alarm ;-)');
    }
  }
  header('Location: '.$_SERVER['PHP_SELF']);
  exit;
}
?>
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi Tobi,

jetzt hast du dir ganz viel Mühe gegeben ... ich wollte ja eigentlich nur was für unser Wiki an Anregungen und Antworten sammeln.

Wenn ich das jetzt so sehe, dann könnten wir glatt eine 3rs-party für den Papierkorb machen. Als 'root' müsste ich ja alles lesen und löschen dürfen. Also was man haben müsste wäre ein Liste aller Papierkörbe mit Größenangaben und dahinter ein Button mit 'leer mich'. Ich glaube, dass wäre eine richtig sinnvolle Sache.

Alles verpackt als spk-Paket und schwupps, jeder würde sich freuen.

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
hi Tobi,

jetzt hast du dir ganz viel Mühe gegeben ... ich wollte ja eigentlich nur was für unser Wiki an Anregungen und Antworten sammeln.

Wenn ich das jetzt so sehe, dann könnten wir glatt eine 3rs-party für den Papierkorb machen. Als 'root' müsste ich ja alles lesen und löschen dürfen. Also was man haben müsste wäre ein Liste aller Papierkörbe mit Größenangaben und dahinter ein Button mit 'leer mich'. Ich glaube, dass wäre eine richtig sinnvolle Sache.

Ist ja schon fast eine 3rd party Anwendung. root kann alles löschen und darum ist das Teil auch heikel. Die Liste aller Papierkörbe pro Share und dann unterteilt in die User funzt ja soweit schon. Da müsste man noch ein bisschen Hand ans Design anlegen. Grössenangaben sind auch vorhanden (zwar nicht sonderlich schön formatiert, aber was solls ist ja bestenfalls ne Alpha ;) )

Alles verpackt als spk-Paket und schwupps, jeder würde sich freuen.

Itari
Mein Tagessoll für heute ist erreicht (voll nach Plan) und darum wird das spk Paket noch ein bisschen warten müssen. Aber ich schreib mir es mal auf die ToDo-Liste. Es ging mir ja auch mehr um einen Proof-of-Concept :D

Gruss

tobi
 

Anhänge

  • smb.jpg
    smb.jpg
    33,2 KB · Aufrufe: 114
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat