Aus Neugier möchte ich wissen, warum ich, wenn ich mich als root anmelde, nicht mehr in / home / user bin . Was ist der Grund und was genau macht das / root- Verzeichnis?
Ich bin kein fortgeschrittener Benutzer. Bitte antworten Sie mit einfachen Worten oder geben Sie einen Link mit klaren, einfachen Erklärungen an. Ich benutze Ubuntu 16.04 und melde mich als root von an sudo -i
. Wie es hier erklärt wird , sudo -i
hat / root als Zuhause. Ich möchte wissen, was der Grund ist. Gibt es einen Vorteil, dort zu sein? Und nicht in ~ wie der Benutzer von sudo -s
.
home
Verzeichnis, aber dieses heißtroot
sudo -s
, um sich im selben Benutzerverzeichnis zu befinden.man sudo
beantwortet die Frage. Um einfach zu sein,user -i
verwenden Sie die Root-Benutzereinstellungen, abersudo -s
die aktuellen Benutzereinstellungen.Antworten:
Sie melden sich nicht als root an, indem Sie einen
sudo
Befehl ausführen. Sie starten eine Shell mit Root-Rechten.Wenn Sie im Ausgangsverzeichnis des aktuellen Benutzers bleiben möchten, können Sie
sudo -s
anstelle dessudo -i
Befehls verwenden.cd ~
Sie gelangen in dasselbe Verzeichnis, als befänden Sie sich nicht in einer Shell mit Root-Rechten. Wörtlich/home/$USER
.Wenn Sie verwenden
sudo -i
, verhält sich das System so, als wären Sie alsroot
Benutzer angemeldet . Aus diesem Grundbringt Sie zum Stammverzeichnis des Benutzers
/root
./root
Verzeichnis ist ein Ausgangsverzeichnis für denroot
Benutzer.Der wesentliche Unterschied besteht darin , dass Shell - Einstellungen Dateien wie
.bashrc
aus verwendet werden ,/root
beisudo -i
, und von einem normalen Benutzer beisudo -s
.quelle
.bashrc
werden von dort in einer bestimmten Shell verwendet. In den meisten Fällen gibt es keinen großen Unterschied./home
nicht verfügbar, besteht das Problem nicht. Dann loggen Sie sich wirklich als root ein.Der Grund, warum das Haus des
root
Benutzers ist/root
und nicht,/home/root
liegt darin, dass es sich in der Regel/home
um einen Einhängepunkt für eine separate Partition / ein separates Volume / eine separate Festplatte handelt (aus verschiedenen Gründen, z. B. Speicherplatz oder Remote).Wenn das Mounten aus irgendeinem Grund
/home
fehlschlagen sollte, können Sie trotzdem eine Verbindung herstellenroot
und sich in Ihrem Ausgangsverzeichnis/root
befinden, um Nachforschungen anzustellen und Fehler zu behebenDarüber hinaus sind Sie für die Wartung, die Ersteinrichtung, die Größenänderung
root
usw. so verbunden, wie Sie es möchten und können sollten/home
quelle
root hat / root als sein Zuhause und wenn Sie zu root wechseln, werden Sie in seinem Zuhause landen. Das ist die Natur von
sudo -i
.sudo -s
macht das selbe aber wechselt nicht die verzeichnisse. Handbuch für sudo :Der Root-Benutzer muss Teil des Systems sein. Wenn Sie / home auf eine andere Partition setzen und root ein Teil von / home ist, treten ernsthafte Probleme auf, wenn die Partition nicht bereitgestellt wird. Aus dem gleichen Grund haben wir auch
und
Wenn Sie / usr auf eine Partition setzen und / usr nicht mounten, haben Sie immer noch ein funktionierendes System.
quelle
sudo -i
vssudo -s
?Das Linux-Dateisystem ist spezifisch strukturiert. Wichtige Binärdateien sind in
/bin/
, Bootloader-Dateien befinden sich in/boot/
, die meisten Gerätedateien befinden sich in/dev/
, Bereitstellungspunkte für Wechselmedien befinden sich in/media/
usw.Sehen https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard .
Einige kleinere Details können von Distribution zu Distribution unterschiedlich sein (z
/usr/bin/
vs./usr/local/bin/
), aber im Allgemeinen folgen fast alle Linux-Distributionen der gleichen Verzeichnisstruktur.Zur Beantwortung Ihrer Frage:
Die Home-Verzeichnisse der Benutzer befinden sich in
/home/
. Grundsätzlich ist Linux ein Mehrbenutzer-Betriebssystem. Auf Ihrem Laptop befindet sich möglicherweise nur ein Benutzerkonto mit dem zugehörigen Basisverzeichnis./home/<username>/
Wenn Sie sich jedoch/home/
einen gemeinsam genutzten Linux-Server ansehen , werden viele Basisverzeichnisse angezeigt: eines für jedes Benutzerkonto. Die Idee ist, dass jeder Benutzer des Systems Schreibberechtigungen nur in seinem eigenen Ausgangsverzeichnis hat. Wenn Sie einen Benutzernamen habenbob
, können Sie Dateien in lesen und schreiben und löschen,/home/bob/
aber Sie können nichts in/home/alice/
oder in berühren/var/log/
.root
ist allerdings anders.root
ist der administrative Benutzer und hat überall auf dem System Schreibrechte (und kann als jeder Benutzer des Systems agieren). Es macht also Sinn, dassroot
das spezielle Homeverzeichnis/root/
daroot
keinen regulären Benutzer hat. Davon abgesehen/root/
handelt es sich nur um ein reguläres Verzeichnis ohne besondere Magie, obwohl es durchaus möglich (und sogar wahrscheinlich) ist, dass Systemdienstprogramme darauf angewiesen/root/
sind, die Heimat des Benutzers zu seinroot
.Wenn Sie
sudo -i
in einem Terminal ausführen , wechseln Sie vom normalen Benutzerbob
zum normalen Benutzerroot
. Beachten Sie, dass dieser Schalter nur das Terminalfenster betrifft, in das Sie eingegeben habensudo -i
. Für Ihren Dateimanager sind Sie immer noch dabob
und wenn Sie ein anderes Terminalfenster öffnen, sind Sie immer nochbob
da. In diesem Zusammenhang ist das Symbol~
eine Abkürzung für das Basisverzeichnis des aktuellen Benutzers. Fürbob
~
Mittel/home/bob/
aber fürroot
~
Mittel/root/
.Ich hoffe, das klärt die Dinge für Sie.
quelle
/
. Der Standardspeicherort wurde aus Sicherheitsgründen geändert (jeder muss in der Lage sein, Dateien/
aufzulisten, damit jeder sehen kann, welche Punktedateien der Root-Benutzer hatte.Ich sehe, dass alle antworten, was passiert, wenn Sie sich als root anmelden (Sie erhalten ein ~ -Verzeichnis, das sich nicht in / home befindet), aber niemand sagt warum. Hier ist der Grund:
Wenn die gesamte / home-Struktur unbrauchbar wird und Sie sie reparieren müssen oder wenn Sie / home neu zuordnen müssen, weil der Speicherplatz knapp wird, müssen Sie dies irgendwie tun. Sie können sich nicht als Benutzer mit ~ in / home anmelden, da Sie abstürzen würden, sobald Sie versucht haben, etwas zu tun. Also der root Benutzer hat hir ~ woanders.
quelle
hir
es wäre ein Tippfehler. Danke für all die Infos! Ich empfehle, die Code-Formatierung hart zu halten, aber das liegt an Ihnen.Sie sagen, Sie sind kein fortgeschrittener Benutzer, also werde ich versuchen, eine schrittweise Antwort zu schreiben.
Wenn Sie Linux verwenden, müssen Sie sich an einige wichtige Dinge erinnern:
Linux ist ein Mehrbenutzersystem. Es wurde von Anfang an nach der Unix-Philosophie so konzipiert (beachten Sie den unterschiedlichen Ansatz von Windows, das als Einbenutzersystem konzipiert wurde).
Als Mehrbenutzersystem kann Linux die Dateien der einzelnen Benutzer im System trennen. Dies geschieht unter Linux, indem jedem Benutzer ein Unterordner im
/home/
Verzeichnis zugewiesen wird . Alle Benutzerdateien gehören ihm / ihr und nur er / sie kann sie öffnen, ändern oder anderen Benutzern erlauben, sie zu verwenden. Umgekehrt gehört jede Datei im Dateisystem einem Benutzer, und dieser Benutzer hat die Macht darüber, wer diese Datei sehen oder verwenden kann. Wie bereits in einer anderen Antwort erwähnt, konnten Benutzer ihre Dateien ursprünglich an einer beliebigen Stelle im System ablegen. Irgendwann wurde jedoch klar, dass die Dinge besser organisiert werden sollten, und/home/
("slash-home") wurde der Ort, an dem sich die Dateien des Benutzers befinden sollten.Es gibt jedoch Dateien, die das System selbst und / oder jeder einzelne Benutzer im System benötigt: Binärdateien, Gerätedateien, Systemdateien usw. (Denken Sie daran: In Linux und anderen Unix-ähnlichen Systemen ist alles eine Datei.) . Diese global benötigten Dateien werden in verschiedenen Orten entlang der Dateisystem, organisiert in verschiedenen Ordnern innerhalb der gespeicherten Wurzel des Dateisystems :
/
. Außerdem gehören diese global benötigten Dateien nicht einem bestimmten Benutzer des Systems, sondern dem System selbst ... aber das kann verwirrend sein: Wem gehören die Binärdateien? Wer erteilt Berechtigungen für diese global benötigten Dateien?Da jede Datei im System "einen Besitzer benötigt", muss es einen "speziellen Benutzer" geben, der die global benötigten Dateien verwalten kann. Darüber hinaus kann dieser "spezielle Benutzer" Dinge tun, die kein anderer Benutzer im System tun kann: Er kann andere Benutzer für das System erstellen. Dieser Benutzer wird "Superuser" (für uns Sterbliche) oder "Root" (für das System) genannt.
Jetzt ist dieser Superuser ein anderer Benutzer des Systems, hat jedoch weitaus mehr Befugnisse (und Verantwortlichkeiten) als die anderer Benutzer: zum Beispiel Wartung. So ist es natürlich zu denken, dass "root" einen Platz braucht, um seine Sachen abzulegen, aber es darf nicht mit den Sachen der anderen Benutzer verwechselt werden. Anstatt einen Unterordner darunter zu haben
/home/
, hat "root" seinen eigenen reservierten Platz im Dateisystem:/root/
("slash-root" genannt). Denken Sie daran: "root" ist ein ganz besonderer Benutzer, daher braucht es einen besonderen, privilegierten Ort, um seine Sachen abzulegen.Jetzt ist in Ubuntu standardmäßig kein Root-Konto aktiviert, sodass ein "normaler" Benutzer die Berechtigung über das gesamte System haben muss. Hier setzt der
sudo
Befehl ("switch user and do") an: Er ermöglicht einem normalen Benutzer (der zuvor in der "sudoers" -Liste enthalten war), Befehle auszuführen, als wäre er ein anderer Benutzer, z. B. "root".Schließlich
-i
bedeuten diese Optionen "Erstanmeldung simulieren". Dies bedeutet, dasssudo
die Daten des "Profils des Zielbenutzers" gelesen werden, bevor der angegebene Befehl ausgeführt wird. Wenn Sie keinen Befehl angeben,sudo
wird eine Shell-Instanz mit dem (Root-) Profil des Zielbenutzers gestartet ... und dies beginnt mit dem Verschieben in den "Home" -Ordner des "Zielbenutzers". Alsosudo -i
werden Sie bewegen, um Stammordner (/root/
) zu tun .Ich hoffe, das hilft dir zu verstehen, was passiert
sudo -i
.BEARBEITEN
Ich glaube, ich habe etwas ungeklärt gelassen, also füge ich es hier hinzu:
Ich sagte oben: "In Linux ist alles eine Datei". Und ich meine es wörtlich! Ihre Dokumente und Bilder sind Dateien, aber auch Terminals (auf die Sie mit [STRG] + [ALT] + [Fn] zugreifen können), physische Laufwerke und beispielsweise Ihre Tastatur. Ein Unix-ähnliches System liest oder schreibt Daten aus / in Dateien und leitet den Datenfluss zu / von den entsprechenden Dateien im System, die die Datei darstellen, mit der Sie arbeiten, und die Eingabe von Schlüsseln, die Sie eingeben. und die Ausgabe, die Sie auf dem Bildschirm sehen. Einige dieser Dateien können direkt von Benutzern verwendet werden, andere nicht. Sie können zum Beispiel nicht direkt auf eine Festplatte schreiben oder lesen, aber Sie müssen Linux erlauben, einen normalen, durchsuchbaren Ordner mit der Gerätedatei (unter
/dev/
) zu verknüpfen, die Ihre Festplatte darstellt.Ein Linux-Dateisystem kann mehrere physische Laufwerke umfassen . Ein einfaches Beispiel ist, wenn Sie ein USB-Stick anschließen: Linux kann dieses Laufwerk mounten (Mounten ist der Vorgang, mit dem das System einen Standardordner, in dem Sie Dateien in einer Shell oder einem Datei-Navigator sehen können, mit einer Gerätedatei in verbindet
/dev/
) und Sie können damit arbeiten, und wenn Sie fertig sind, fordern Sie Linux auf, das Laufwerk abzumelden und es dann vom USB-Anschluss zu entfernen. Das Wichtigste dabei ist, dass sich dieser Zyklus zum Ein- und Aushängen auf dasselbe Dateisystem auswirkt, das Sie jeden Tag verwenden: Sie erstellen nicht jedes Mal ein neues Dateisystem, wenn Sie ein physisches Laufwerk hinzufügen oder entfernen, sondern Sie fügen dieses physische Laufwerk dem Dateisystem hinzu ( Vergleichen Sie diese Philosophie erneut mit dem Ansatz von Windows.Da sich das Dateisystem über mehrere physische Laufwerke erstrecken kann, wird deutlich, dass verschiedene Dateien des Systems auf verschiedene physische Laufwerke geschrieben werden können. Auf einem Laufwerk können die System-Binärdateien (
/bin/
) und auf einem anderen die Dateien des Benutzers (/home/
und seiner Nachkommen) gespeichert werden . In einer Konfiguration mit mehreren Laufwerken wird häufig auf/home/
ein anderes physisches Laufwerk geschrieben als/root/
. Wenn also das System ausfällt und Benutzer sich nicht anmelden können, weil das Laufwerk nicht mehr/home/
funktioniert, kann root. (Das ist sehr simpel. Es müssen viele Dinge auf jedes physische Laufwerk kopiert werden, damit sich root anmelden kann, wenn dies kein anderer Benutzer kann. Dies kann Ihnen jedoch einen allgemeinen Eindruck vermitteln.)Und dieses tilde (
~
) -Zeichen ... bezeichnet das Home-Verzeichnis des aktuellen Benutzers. Wenn Sie als "bob" angemeldet sind,cd ~
werden Sie zu weitergeleitet/home/bob/
. Wenn Sie jedoch als "root" angemeldet sind,cd ~
werden Sie zu weitergeleitet/root/
tl; dr So jetzt denke ich , alles gesagt:
"root" ist ein spezieller Benutzer mit Befugnissen und Verantwortlichkeiten, die weit über denen anderer Benutzer liegen
"/ root /" ist der Ort, an dem "root" seine Sachen speichern kann, ohne zu riskieren, dass sie mit anderen Sachen von normalen Benutzern verwechselt werden. Dieser Ordner kann auf ein anderes physisches Laufwerk als geschrieben werden
/home/
.sudo -i
Startet eine Shell, die die Anmeldung von root simuliert. Dies bedeutet, dass Sie in den Stammordner von root wechseln. Wie bei jedem anderen Benutzercd ~
werden Sie in Ihr Home-Verzeichnis geleitet. Wenn Sie jedoch Root sind, wird dies auch der Fall sein/root/
Wenn das System auf verschiedenen physischen Laufwerken installiert ist, kann sich der Root anmelden und versuchen, das Problem zu beheben, selbst wenn ein anderes Laufwerk im System ausfällt.
quelle
Der Hauptgrund für die unterschiedliche Behandlung des Stammverzeichnisses:
Wenn etwas schief geht, müssen Sie in der Lage sein, Systemwiederherstellungsaufgaben auszuführen, sobald Sie es schaffen, das Dateisystem / bereitzustellen.
Abhängig von Ihrem Setup befinden sich die Home-Verzeichnisse der Benutzer möglicherweise auf einem anderen Dateisystem oder sind sogar über das Netzwerk gemountet.
Um sich als root anzumelden (dh geben Sie an einer Anmeldeaufforderung den Namen root und das root-Passwort ein), müssen Sie von der Konsole aus nur das eine Dateisystem bereitstellen.
(Dies ist auch der Grund, warum sich die Kerndienstprogramme in / bin und / sbin anstelle von / usr / bin oder / usr / sbin befinden - alles in / usr ist entbehrlich.)
quelle