Warum lässt chmod 777 -R / das System unbrauchbar?


52

Ich erteile nur allen die Erlaubnis, etwas zu tun, aber warum stürzt das System ab, wenn ich nur die Erlaubnis erteile? Ich ändere nur die Berechtigung und ändere nicht die Dateien.



2
Ich denke, es stürzt nicht ab, sondern bricht einfach irgendwann den Bootvorgang ab. Wenn Sie sich das ansehen würden /var/log/syslog, würden Sie sogar den Grund herausfinden.
Hallo-Engel

7
Es ist wichtig zu wissen, dass dies, auch wenn es nichts kaputt macht, nicht "allen die Erlaubnis gibt, irgendetwas zu tun". Es würde immer noch eine große Anzahl von Aktionen geben, die nur "root" (genauer gesagt, ein Prozess mit effektiver UID Null) ausführen könnte.
zwol

6
@ Glen Wenn mit "verwandt" "genaues Duplikat" gemeint ist, aus dem hervorgeht, warum wir in der Lage sein sollten, über Websites hinweg als betrogen zu kennzeichnen ", dann sicher! Toller Link. ;)
underscore_d

4
Ich würde wirklich LIEBEN zu hören, dass die Geschichte über Sie diese Frage stellte.
Dewi Morgan

Antworten:


104

Dafür gibt es mehrere Gründe.

Zusätzlich zu den üblichen Lese- / Schreib- / Ausführungsberechtigungen gibt es noch einige andere Bits, die Dateiberechtigungen enthalten. Vor allem setuidund setgid. Wenn ein Programm mit einem dieser Berechtigungsbits ausgeführt wird, erhält es die "effektive UID" und / oder "effektive GID" des Programmbesitzers und nicht des Benutzers, der es ausgeführt hat. Dadurch können Programme mit mehr Berechtigungen ausgeführt werden als der Benutzer, der sie ausgeführt hat. Es wird von vielen wichtigen Systemdienstprogrammen verwendet, einschließlich suund sudo. Ihr chmodBefehl löscht diese Bits und macht die Dienstprogramme unbrauchbar.

Zweitens führen einige Programme (insbesondere ssh) eine Überprüfung der Dateiberechtigungen durch und lehnen die Verwendung von Dateien mit Berechtigungen ab, die sie als unsicher ansehen. Dies verringert das Risiko, dass unachtsame Administratoren versehentlich Sicherheitslücken schließen, macht jedoch den Umgang mit ausgelöschten Dateiberechtigungen umso schmerzhafter.


41

Eine kurze Antwort.

Linux-System erfordert bestimmte Berechtigungen für bestimmte Programme wie sudousw.

Wenn Sie ausführen chmod 777 -R /, löschen Sie alle Berechtigungen und ersetzen sie durch 777. Dies macht das System unbrauchbar, sofern Sie nicht alle Berechtigungen manuell wiederherstellen.

In der Praxis ist die Neuinstallation viel schneller und einfacher.

Das Problem ist, dass viele Systemprogramme so konzipiert sind, dass sie nicht gestartet werden, wenn sie die Berechtigungen nicht "mögen". Dies erfolgt aus Sicherheitsgründen.

Ich denke, es ist wichtiger zu erklären, wie man das Systemdesign paraktisch handhabt, als zu erklären, warum jedes Programm nicht mit falschen Berechtigungen funktioniert.

Wenn Sie wirklich möchten, dass alle Benutzer über unbegrenzte Berechtigungen in Ubuntu verfügen, können Sie alle Benutzer zur sudoGruppe hinzufügen, anstatt die Datei- und Verzeichnisberechtigungen zu ändern. Das wird den gleichen Effekt haben, aber das System nicht ruinieren.

Eine andere (sehr schlechte) Möglichkeit besteht darin, das Root-Konto zu aktivieren und jedem zu erlauben, sich als Root anzumelden.


11
Vielleicht wird sich jemand Zeit nehmen und eine detaillierte Antwort geben ;-)
Pilot6

1
Ich könnte einen besseren Weg aufzeigen, um es jedem zu ermöglichen, alles auf diesem System zu tun - aber einen ausführlichen Artikel darüber zu schreiben, warum jede Binärdatei ihre spezifischen Berechtigungen, Einstellungen und Flags benötigt, ist ein bisschen zu viel, imho. ;-)
Phillip-Zyan K Lee- Stockmann

4
Linux-Systeme sind nicht so konzipiert, dass jeder alles machen kann. Sie können das Root-Konto aktivieren, und jeder kann sich dafür als Root anmelden. Es ist dumm, aber das ist der Weg.
Pilot6

9
So Pilot6 Sie damit sagen , dass die Systemprogramme so gestaltet sind, dass , wenn die Erlaubnis schief geht , dann sind sie nicht erlaubt / der Lage , richtig funktionieren? Und bitte Pilot6, wenn möglich, geben Sie uns eine ausführlichere Antwort mit Beispielen und Erklärungen, warum bestimmte Anwendungen eingeschränkte Berechtigungen erfordern. Vielen Dank.
Brij Raj Kishore

13
@ Goldname Der Absturz ist der Fehler - es ist eine ganze Reihe von Programmen, die sagen "Ich kann keine kritischen Funktionen mit dem System in diesem Zustand ausführen, also
brich

32

chmod hat subtile Nuancen.

chmod 0777verhält sich anders als chmod u+rwx,g+rwx,o+rwxdie in dem Abschnitt setuid- und Setgid werden durch den ersten und konserviert von dieser auf Null gesetzt.

Deshalb wurde das System unbrauchbar. Sie haben die erforderliche Setuid aus einigen Programmen entfernt.

Hier ist eine Liste der setuid- oder setgid-Dateien auf meinem Linux Fedora 23-Laptop:

[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]# 

Ich habe Dutzende von Lärmeinträgen in Caches und Protokollen entfernt.


3
Ich frage mich, warum Gnuchess und Schurke auf dieser Liste stehen.
WiseOldDuck

2
@WiseOldDuck: Ich gehe davon aus, dass die Spiele das gewisse Etwas haben, sodass sie ihre "Highscore" -Datei aktualisieren können, dies jedoch keinem nicht privilegierten Benutzer erlauben.
Wallyk

3
@ WiseOldDuck Wie Wallyk sagt, und denken Sie daran, setuid muss nicht unbedingt root (und afaik setgid ist nicht wirklich nützlich für root)
StarWeaver

5
Es ist an der Zeit, sich die Mühe zu machen, zu erklären, was zu chmodtun ist, und beispielhafte Beweise zu liefern, etwas, das an anderer Stelle sehr fehlt.
Underscore_d

1
Heißt das, dass chmod u+rwx,g+rwx,o+rwx -R /das System nicht kaputt geht?
Dennis Jaheruddin

15

Zusätzlich zu den anderen Antworten: Sie haben auch das "Sticky Bit" von entfernt /tmp(das normalerweise Berechtigungen 1777 hat), und dies könnte andere unerwartete Probleme verursachen, da Programme in der Lage wären, in die temporären Dateien der jeweils anderen zu schreiben oder diese zu löschen.

Das Sticky-Bit ist eine spezielle Berechtigung, die es zwar jedem erlaubt, Dateien zu erstellen /tmp, aber nur der Person erlaubt, die es erstellt hat, es zu verschieben oder zu entfernen.


4
msgstr "und dies hätte jeden außer root daran gehindert, das Verzeichnis system / tmp zu benutzen." - Das scheint nicht richtig. Es würde weiterhin jedem erlauben, das Verzeichnis system / tmp zu verwenden. Kein Sticky Bit erforderlich, wenn Benutzer, Gruppe und andere alle Rechte haben. Es würde jedoch jedem erlauben, die Dateien anderer zu entfernen.
HDV

1
also Ben Wenn ich chmod 1777 -R / laufen lasse, sollte es kein Problem geben, da ich das Sticky-Bit nicht lösche? -
Brij Raj Kishore

Danke @hvd - du hast recht und ich habe den Beitrag leicht geändert, um das zu reflektieren.
Ben XO

@BrijRajKishore, die Frage bleibt, warum du das überhaupt machst. Ubuntu und die Programme, aus denen es besteht, sind aus vielen Gründen nicht dafür ausgelegt, "erlaubnislos" ausgeführt zu werden. Es wäre sinnvoller, stattdessen "su" zu rooten.
Ben XO

1
Es ist nicht bekannt, ob es zu einem Absturz kommt. Es ist durchaus möglich, dass dies der Fall ist, da Anwendungen plötzlich in der Lage sind, temporäre Dateien gegenseitig zu bearbeiten - möglicherweise aus Versehen - und dies kann zu einem Absturz führen. Da Ubuntu noch nie so getestet wurde, werden Sie wahrscheinlich die erste Person sein, die es herausfindet. :-) Auf der anderen Seite kann das Setzen des Sticky-Bits für jeden einzelnen Ordner im System viele andere Probleme verursachen, da Anwendungen aufgrund von Gruppenberechtigungen für Ordner (dh Ordner mit Berechtigungen 2777) erwarteten, Programme manipulieren zu können.
Ben XO
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.