Slaughter: Dateininfomationen verändern

Hallo,

gibt es eine Möglichkeit die Dateiinformationen, wie z.B. das Datum der letzten Änderung, über Perl zu beeinflussen?

z.B.:

vorher: datei1.txt -> Geändert am = 01.01.2008 12:25:33
nachher: datei1.txt -> Geändert am = 31.12.2007 12:00:00

Vielen Dank für Eure Hilfe

Slaughter

  1. Hi Slaughter!

    Hier ein Lösungsvorschlag unter Linux:
    Zunächst solltest du wissen, ob es deine eigene Datei ist (wegen Zugriffsrechten); nein => lies von Anfang an; Ja => lies ab 2b.

    1. den Befehl "/usr/bin/touch" in die /etc/sudoers eintragen
    2a. unter perl system("/usr/bin/sudo /usr/bin/touch '{dateiname}' -d yyyy-mm-dd")

    ODER:

    2b.unter perl system("/usr/bin/touch '{dateiname}' -m -d yyyy-mm-dd")

    {dateiname} ist durch den Namen deiner Datei zu ersetzen
    yyyy-mm-dd ist ein Datum, z.B. 2008-01-21 (für Zeit gibt's die Option -t, einfach mal man touch lesen)

    Welche Sicherheitsrisiken sich aus der ersten Variante ergeben, ist mir derzeit nicht klar, sollte aber noch vorsichtig geprüft werden (weil der "webuser" u.U. dann auch Systemdateien in die Zukunft datieren kann, was zu Problemen führen könnte).

    Grüße,
    Richard

    1. Moin Moin!

      Hier ein Lösungsvorschlag unter Linux:
      Zunächst solltest du wissen, ob es deine eigene Datei ist (wegen Zugriffsrechten); nein => lies von Anfang an; Ja => lies ab 2b.

      1. den Befehl "/usr/bin/touch" in die /etc/sudoers eintragen

      Davon würde ich dringend abraten:

      sudo /usr/bin/touch /etc/nologin

      Viel Spaß!

      2a. unter perl system("/usr/bin/sudo /usr/bin/touch '{dateiname}' -d yyyy-mm-dd")

      ODER:

      2b.unter perl system("/usr/bin/touch '{dateiname}' -m -d yyyy-mm-dd")

      Was glaubst Du, was touch macht? Richtig, die utime()-Funktion aufrufen. Das kann Perl auch selbst, dafür muß man keinen Subprozess starten.

      Welche Sicherheitsrisiken sich aus der ersten Variante ergeben, ist mir derzeit nicht klar

      Warum schlägst Du das dann überhaupt vor?

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
      1. Hi Alexander!

        Warum schlägst Du das dann überhaupt vor?

        Weil mir Dein Vorschlag nicht bekannt war, ich aber einen mir bekannten nennen wollte UND dabei sogar noch auf das mögliche (mir ebenfalls nicht genau bekannte) Risiko hingewiesen hab, das durch geeignete Prüfungen ja behoben werden kann.

        Außerdem weiß ich nicht, wie das Dingen eigesetzt wird; für eine Intranetlösung z.B. ist der Sicherheitsaspekt relativ egal.

        Grüsse,
        Richard

        1. Moin Moin!

          Außerdem weiß ich nicht, wie das Dingen eigesetzt wird; für eine Intranetlösung z.B. ist der Sicherheitsaspekt relativ egal.

          Man sagt, 75% bis 90% aller Angriffe kämen von innen ... -- und selbst wenn es nur 30% wären, wäre es noch schlimm genug. Und wenn das Ding denn doch im Internet steht?

          Alexander

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
          1. Hallo,

            erstmal vielen Dank für die Antworten.

            Hier habe ich mal eine funktionerende Lösung zusammengefasst, welche zumindest unter Windows das Änderungsdatum auf den Wert(31.12.2007 00:00:00) zurücksetzt.

            #!/d:/perl/bin/perl.exe -w
            use strict;
            use Time::Local;#Wandlet UNIX-Zeitstempel in LOCALTIME um.
            my $datei = 'd:/test.txt';
            my $start=timelocal(0, 0, 0, 31, 11, 2007 );
            print "Unix: $start \n Zeitstempel: " . localtime($start) . "\n";
            #$ergebnis=utime (Lesezeitneu,Schreibzeitneu,@Dateien);
            #$ergebnis=utime (Lesezeitneu,Schreibzeitneu,$Datei);
            my $erg = utime($start,$start,$datei);

            if ($erg == 1){
                print "OK";
            }
            else {
                print "Fehler";
            }

            Gruß

            Slaughter

          2. Hi Alexander!

            Man sagt, 75% bis 90% aller Angriffe kämen von innen ... -- und selbst wenn es nur 30% wären, wäre es noch schlimm genug. Und wenn das Ding denn doch im Internet steht?

            Den inneren Feind bekämpfen - schwierig, sowas...
            Aber wenn es Probleme gibt, dann mach ich es mir verdammt einfach denn (quote Original):

            »»Welche Sicherheitsrisiken sich aus der ersten Variante ergeben, ist mir derzeit nicht klar, sollte aber noch vorsichtig geprüft werden

            Grüsse,
            Richard