klawischnigg: Linux: Dateiattribute wieder herstellen

Hi there,

ich habe in einem Verzeichnis, in das mehrere Linuxlaufwerke (unter anderem auch das Startlaufwerk mit dem Betriebssystem vom Root weg) gemountet waren ein vorschnelles, wie immer gedankenloses 😉, chmod 777 -R abgesondert. Jetzt funktioniert natürlich fast nix mehr, vor allem funktioniert nix mehr, was Root-Rechte benötigt.

Gibts irgendeinen Weg, das relativ schmerzlos zu reparieren oder ist Neuinstallation (Mint 19.3 ist eh schon etwas angegraut) der bessere Weg?

Was ich schon versucht habe (die Root-Eingabeaufforderung im Recovery-Modus funktioniert noch):

  • mit getFacl und setFacl die Dateirechte von einer älteren Version (Mint 19.1), die ich noch auf einer Platte hatte, zu übertragen.
  • irgendeinen Timeshift-Snapshot zu restoren

beides hat nicht funktioniert. Ist jetzt nicht dramatisch tragisch, Daten sind alle da, würd' mich nur interessieren, ob es irgendeinen Weg gibt, an einer Neuinstallation vorbeizukommen...

akzeptierte Antworten

  1. Jetzt funktioniert natürlich fast nix mehr, vor allem funktioniert nix mehr, was Root-Rechte benötigt.

    Hm. Eleganter Weg, sein System zu zerschießen. sudo rm -rf / tut's ja seit einiger Zeit nicht mehr.

    Ich vermute recht dringend, dass eine Neuinstallation der einfachste und schnellste Weg ist. Alles was Du ohne Kenntnis der originalen Rechte wieder herstellen kannst wird mehr oder weniger kaputt oder unsicher sein.

    Aber fang mit

    chmod 0440 /etc/sudoers
    chmod 0640 /etc/shadow
    chmod 0644 /etc/passwd /etc/group
    chmod 4755 /usr/bin/sudo
    chmod 4755 /usr/bin/su
    

    an…

    1. Hi there,

      Jetzt funktioniert natürlich fast nix mehr, vor allem funktioniert nix mehr, was Root-Rechte benötigt.

      Hm. Eleganter Weg, sein System zu zerschießen.

      Ja, gell? Bin richtig stolz auf mich...😉

      Aber fang mit

      chmod 0440 /etc/sudoers
      chmod 0640 /etc/shadow
      chmod 0644 /etc/passwd /etc/group
      chmod 4755 /usr/bin/sudo
      chmod 4755 /usr/bin/su
      

      Ja, danke, ich probier's damit, ehe ich den finalen Stecker ziehe...

    2. Hi there,

      Aber fang mit

      chmod 0440 /etc/sudoers
      chmod 0640 /etc/shadow
      chmod 0644 /etc/passwd /etc/group
      chmod 4755 /usr/bin/sudo
      chmod 4755 /usr/bin/su
      

      an…

      Also, es läuft noch etwas holprig, aber es beginnt zu laufen. Ich kann auf dem Rechner im Terminal und dort, wo's notwendig ist, wieder Gott spielen. Vielleicht krieg' ich den Rest ja auch noch hin, jetzt, wo ich nicht bei jeder klitzekleinen Änderung wieder booten muß, danke nocheinmal...😉

      1. # schon genannt:
        chmod 0440 /etc/sudoers
        chmod 0640 /etc/shadow
        chmod 0644 /etc/passwd /etc/group
        chmod 4755 /usr/bin/sudo
        chmod 4755 /usr/bin/su
        # weitere:
        chmod 1777 /tmp
        chmod 2755 /usr/bin/bsd-write
        chmod 2755 /usr/bin/chage
        chmod 4755 /usr/bin/chfn
        chmod 4755 /usr/bin/chsh
        chmod 2755 /usr/bin/crontab
        chmod 2755 /usr/bin/expiry
        chmod 4755 /usr/bin/fusermount
        chmod 4755 /usr/bin/gpasswd
        chmod 2755 /usr/bin/mlocate
        chmod 2755 /usr/bin/locate     #(wenn nicht durch mlocate ersetzt)
        chmod 4755 /usr/bin/mount
        chmod 4755 /usr/bin/newaliases #(wenn kein Link)
        chmod 4755 /usr/bin/newgrp
        chmod 4755 /usr/bin/passwd
        chmod 4755 /usr/bin/pkexec
        chmod 2755 /usr/bin/ssh-agent
        chmod 4755 /usr/bin/umount
        chmod 2755 /usr/bin/wall
        chmod 4755 /sbin/exim4
        chmod 4754 /usr/sbin/mount.ecryptfs_private
        chmod 2755 /usr/sbin/pam_extrausers_chkpwd
        chmod 4754 /usr/sbin/pppd
        chmod 2755 /usr/sbin/unix_chkpwd
        chmod 4755 /vmware-authd
        

        Es gäbe sicher auch die Mäglichkeit, ein Skript zu erstellen.

        Aber:

        Man kann sich wohl einfacher eine Liste aller installieren Pakete ausgeben lassen und die dann mit apt --reinstall install paket neu installieren.

        #!/bin/bash
        for paket in $(dpkg -l | grep "^ii" | sed -E "s/[\t ]+/ /g" | cut -d " " -f2);
           do
           sudo apt --reinstall install $paket;
        done
        
        1. Hi there,

          ich werde mir diese Liste unter Garantie aufheben, in Stein meisseln und als Batch-Datei irgendwo einmal benötigen.

          Im konkreten Fall hab ich einfach eine komplette Neuinstallation durchgeführt. Ich habe vorher das ganze Home-Directory (selbstverständlich inkl. der "verborgenen" Verzeichnisse) gesichert und bin jetzt schon fast wieder auf dem gleichen Stand wie vorher. Abzüglich der Programme, die ich nur ein mal probieren wollte und ohnehin nie benötigt habe😉.

          Danke auf alle Fälle nocheinmal für Dein Bemühen...

          1. Im konkreten Fall hab ich einfach eine komplette Neuinstallation durchgeführt. Ich habe vorher das ganze Home-Directory (selbstverständlich inkl. der "verborgenen" Verzeichnisse) gesichert

            Das hast Du richtig gemacht.

            Beim nächsten Mal sichere unbedingt auch die Inhalte von /etc (aber nicht brutal zurückschreiben - sonst geht wieder was kaputt ) und zum Beispiel (Du musst hier nachsehen und darüber nachdenken, was genau gebraucht wird) /var/lib/mysql, /var/mail, /var/www, '/var/spool', …