Wie setze ich die Ordnerberechtigungen in Ubuntu auf die Standardeinstellungen zurück?

19

Ich habe vor kurzem den Befehl eingegeben

sudo chmod 777 -R /

danach mögen einige Dinge

sudo -i

arbeiten nicht normal. Ich frage mich also, ob ich die Ordnerberechtigungen auf irgendeine Weise auf ihren ursprünglichen Zustand zurücksetzen kann.

Braiam
quelle
Ich glaube nicht, dass Linux sich an frühere Berechtigungseinstellungen erinnert. Versuchen Sie, eine neue Datei zu erstellen, und überprüfen Sie, welche Berechtigungseinstellungen sie erhält.
Thecoshman
Oh, warte, ich verstehe, was du dort getan hast. Dies ist wahrscheinlich eine Neuinstallation. Sichern Sie einfach Ihre Daten, und notieren Sie sich, welche Anwendungen Sie installiert haben. Viel Spaß, probieren Sie 10.4! (Bester Name überhaupt übrigens ... was das Radio-Ding bedeuten?)
Thecoshman
Ich wage Sie, eine Person zu finden, die genau das nicht getan hat: D Es ist eine sehr schwierige Situation. Sie können es beheben, versuchen Sie es mit Jlovis Antwort, aber es wird Zeit und Mühe kosten und es wird frustrierend. einfach neu installieren und fertig. Und verwenden Sie niemals sudo chmod, es sei denn, Sie wissen, was Sie tun.
Jack Mayerz

Antworten:

17

Es ist möglich , aus dieser chaotischen Situation zurückzukommen.

Ich habe wieder die gleiche Art von Problem ausgeführt (ein Fehler in einem Skript, das ich geschrieben habe) und es behoben, aber Sie müssen einen Experten um Hilfe bitten. Sei sehr vorsichtig!

Erstens war meine Situation einfacher zu lösen, da ich ein Dual-Boot-System hatte (Ubuntu und meine alte Fedora-Installation), aber das Betriebssystem von einer CD / DVD oder einem USB-Stick auszuführen, sollte dasselbe tun.

MPOINT=/mount/ubuntu

Zuerst habe ich meine Dateisysteme wie folgt gemountet (vergessen Sie nicht, die Mountpunkte zu erstellen):

mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home

Dann habe ich den folgenden Befehl ausgeführt (mein Problem betraf nur einige wenige - kritische - Verzeichnisse), um die Berechtigungen vom laufenden System auf das unordentliche zu kopieren (in meinem Fall habe ich sogar ein Ubuntu-System in Virtual Box unter Fedora installiert und habe dort die Berechtigungen):

find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh

Und dann habe ich das Skript restoreperms.sh ausgeführt.

Ich konnte wieder mit Ubuntu booten.

Der Inhalt von restoreperms.sh wird ungefähr so ​​aussehen:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

Ich habe es nicht getestet, aber es muss auch für Eigentümer und Eigentümergruppen funktionieren. So etwas wie:

find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

Natürlich muss hier darauf geachtet werden, dass UID und GID auf beiden Systemen gleich sind, aber für die systembezogenen Benutzer und Gruppen sollte dies kein Problem sein.

Bearbeiten:

Durch das Festlegen des Besitzers werden auch die SGID- und SUID-Flags ungültig gemacht , was seltsame Probleme verursacht (Sie können beispielsweise sudo nur ausführen, wenn die Berechtigung 4755 lautet). Sie müssen und sollten nur Berechtigungen AFTER Besitzer setzen. SPEICHERE die vollständigen Dateiberechtigungsinformationen zusammen mit den Besitzerinformationen.

Rk:

  1. Wichtig dabei ist, dass eine Installationsdiskette mit der von Ihnen verwendeten Version synchronisiert bleibt oder zumindest mit der aktuellen Ubuntu-Version funktioniert.
  2. Jetzt habe ich diese Befehle in einem Cronjob, der jeden Tag (möglicherweise Wochen) ausgeführt wird, um diese Informationen zu speichern. Das wird die Lösung beim nächsten Mal einfacher machen, aber so wie ich es jetzt habe, wird es natürlich nie wieder vorkommen. ;-) Etwas wie das:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

Der richtige (kombinierte) Befehl ist eher so etwas wie:

`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`

Beachten Sie, dass zusätzliche Sorgfalt erforderlich sein kann, um Klammern in Dateinamen (z. B. unter Gebietsschemas) zu berücksichtigen, und dass chown möglicherweise die von chmod gesetzten Bits setuid und setgid stillschweigend deaktiviert. In letzterem Fall, der beispielsweise / bin / su und / usr / bin / sudo zum Erliegen bringt, müssen Sie möglicherweise die Reihenfolge der obigen exec-Klauseln vertauschen.

jlovi
quelle
nur eine ausgezeichnete Antwort. Ich habe in Ask Ubuntu
Private am
Einfach eine perfekte Lösung für mich!
2

Nach Wiederherstellung Sudo oder Auswahl des Wiederherstellungsmodus beim Booten

Es ist möglich, ein ganzes System mithilfe von Debsummen wiederherzustellen, die die Integrität und die Berechtigungen von Dateien überprüfen.

von der man Seite:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Installiert Pakete mit geänderten Dateien neu

oder auf einen bestimmten Pfad beschränkt, zB /usr:

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

oder auf mehrere Pfade beschränkt, zB: /sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)
Ivan Buttinoni
quelle
prüft debsums wirklich die berechtigungen? Ich habe versucht chmod a-x /bin/pingund debsums -cwollte diese Datei nicht melden.
Reox
0

Beobachten Sie immer, was Sie als sudo ausführen.

Dieser Thread erklärt, dass Sie einige Berechtigungen manuell zurücksetzen können, und ein Skript hilft dabei, aber es ist immer noch eine große Aufgabe. Befolgen Sie lieber die Tipps auf dem Laufenden, um die installierten Pakete (Markierungen) zu speichern und das Betriebssystem neu zu installieren, und wenden Sie die Markierungen für gespeicherte Pakete an, um Ihre Anwendungen wiederherzustellen.

umkehren
quelle
0

Soweit ich weiß, bieten nur System V-Pakete und RPMs einen Befehl zum Reparieren von Dateiberechtigungen. Auf System V (Solaris) ist es pkgchk, bei RPMs ist es rpm --setperms.

Leider scheint es keinen solchen Befehl für Debian / Ubuntu-Pakete zu geben - aber ich könnte mich hier irren.

Aber selbst mit Hilfe dieser Befehle ist es keine triviale Aufgabe, Ihr System wieder in einen vernünftigen Zustand zu versetzen. Wenn Sie es reparieren, können Sie Ihrem System leicht neuen Schaden zufügen - wenn Sie nicht vorsichtig sind.

Anders als Joseph sagte, bist du nicht der erste und du wirst nicht der letzte sein, der einen solchen Befehl eingibt. Allein die Idee, die Dateiberechtigungen auf einem Unix-System auf 777 zu ändern, ist ein starkes Indiz dafür, dass Sie mit dieser Art von System nicht sehr erfahren sind. Das Beste, was Sie in dieser Situation tun können, ist, eine Sicherungskopie der benötigten Dateien (Basisverzeichnisse, Konfigurationsdateien, Maildateien?) Zu erstellen und eine Neuinstallation durchzuführen.

Und Sie sollten sehr, sehr vorsichtig sein, wenn Sie Ihre - beschädigten - Sicherungsdateien wiederherstellen.

Viel Glück!

PS: Ich frage mich nur, was für ein Problem Sie lösen wollten?

kdo
quelle
0

Wow, du hast es getötet. Es ist tot! Melden Sie sich an und verwenden Sie den Computer als root (seitdem Sie ihn aktiviert haben). Ändern Sie dann die Gruppenzugehörigkeit von root in Benutzer. Das mag funktionieren oder auch nicht, weil ich es noch nie probiert habe, aber es ist einen Versuch wert.

slhck
quelle
0

Sie können eine chmodOperation nicht rückgängig machen . Zumindest nicht im Sinne eines Rollbacks zu einer früheren Einstellung, was in dieser Situation erforderlich ist. Argumentieren, Sie können eine Undo chmodOperation, durch chmodjede Datei und Verzeichnis wieder in seinen ursprünglichen Modus ing - aber sie sind nicht alle gleich; Das Ermitteln der ursprünglichen Modi ist schwierig (wie in den anderen Antworten erläutert).

Svisstack
quelle