Только из любопытства, я хотел бы знать, почему, когда я вхожу в систему как корень, я больше не нахожусь в/home/user. Какова причина и что / корневой каталог делает точно?
Я не опытный пользователь. Ответьте в простых словах или дайте ссылку, которая дает ясные, простые объяснения. Я использую Ubuntu 16.04, и я вхожу в систему как корень sudo -i
. Поскольку это объяснено здесь, sudo -i
имеет корень / как домой. Я хочу знать, какова причина; там какое-либо преимущество должно быть там? А не в ~ как пользователь sudo -s
.
Вы не регистрируетесь как корень путем выполнения a sudo
команда. Вы запускаете оболочку с полномочий пользователя root.
Если Вы хотите остаться в текущем пользовательском корневом каталоге, можно использовать sudo -s
вместо sudo -i
команда.
cd ~
возьмет Вас к тому же каталогу, как будто Вы не находитесь в оболочке с полномочиями пользователя root. Буквально /home/$USER
.
Когда Вы используете sudo -i
, система действует, как будто Вы зарегистрированы как root
пользователь. Из-за этого
cd ~
приносит Вам к корневому каталогу пользователя root, который является /root
.
/root
каталог является корневым каталогом для root
пользователь.
Основное различие то, что файлы настроек оболочки как .bashrc
используются от /root
в случае sudo -i
, и от обычного пользователя в случае sudo -s
.
Причина, почему дом root
пользователь /root
и нет /home/root
то, потому что обычно /home
точка монтирования к отдельному разделу/объему/диску... (по различным причинам, таким как дисковое пространство или удаленный...)
По некоторым причинам монтируясь /home
перестал бы работать, Вы могли все еще соединиться как root
и будьте в Вашем /root
корневой каталог, чтобы заняться расследованиями и починить вещи
Кроме того, для обслуживания, начальной настройки, изменения размеров... Вы были бы соединены как root
и должен смочь размонтировать/повторно монтировать /home
Какова причина и что / корневой каталог делает точно?
корень имеет корень / как свой дом и когда Вы переключитесь на корень, он сделает, чтобы Вы оказались в его доме. Это - природа sudo -i
. sudo -s
делает то же, но не переключают каталоги. Руководство для sudo:
-s [command]
-s (оболочка), опция выполняет оболочку, указанную переменной Среды оболочки, если это установлено или оболочка, как указано в базе данных пароля. Если команда указана, она передается оболочке для выполнения через-c опцию оболочки. Если никакая команда не указана, интерактивная оболочка выполняется.
-i [command]
-i (моделируют начальный вход в систему) опция выполняет оболочку, указанную записью базы данных пароля целевого пользователя как оболочка входа в систему. Это означает, что определенные для входа в систему файлы ресурсов, такие как .profile или .login будут считаны оболочкой. Если команда указана, она передается оболочке для выполнения через-c опцию оболочки. Если никакая команда не указана, интерактивная оболочка выполняется. sudo пытается измениться на корневой каталог того пользователя прежде, чем выполнить оболочку. Политика безопасности должна инициализировать среду к минимальному набору переменных, подобных тому, что присутствует, когда пользователь входит в систему. Раздел Command Environment в sudoers (5) ручные документы, как-i опция влияет на среду, в которой выполняется команда, когда sudoers политика используется.
Пользователь root должен быть частью системы. Когда Вы помещаете / домой на другой раздел, и корень был частью / домой, Вы столкнулись бы с серьезной проблемой, если бы раздел не смонтировался. По той же причине мы также имеем
/bin
/sbin
и
/usr/bin
/usr/sbin
Когда Вы помещаете/usr на раздел, и/usr не монтирует, что у Вас все еще есть рабочая система.
Файловая система Linux структурирована в особенном методе. Существенные двоичные файлы находятся в /bin/
, файлы загрузчика находятся в /boot/
, большинство файлов устройств находится в /dev/
, точки монтирования для съемных носителей находятся в /media/
, и т.д...
См. https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard.
Некоторые незначительные детали могут отличаться от дистрибутива до дистрибутива (например. /usr/bin/
по сравнению с. /usr/local/bin/
), но в целом почти все дистрибутивы Linux следуют за той же структурой каталогов.
Отвечать на Ваш вопрос:
Корневые каталоги пользователей находятся в /home/
. В принципе Linux является многопользовательской операционной системой. У Вас может просто быть одна учетная запись пользователя на Вашем ноутбуке с его корневым каталогом в /home/<username>/
, но если Вы изучаете /home/
на общем сервере Linux Вы будете видеть много корневых каталогов: один для каждой учетной записи пользователя. Идея состоит в том, что у каждого пользователя системы есть полномочия записи только в их собственном корневом каталоге. Если Ваше имя пользователя bob
можно считать и записать и удалить файлы в /home/bob/
но Вы ничего не можете коснуться в /home/alice/
или в /var/log/
.
root
отличается все же. root
административный пользователь и имеет полномочия записи везде в системе (и может действовать как любой пользователь системы). Таким образом, это имеет смысл это root
имеет специальный корневой каталог /root/
потому что root
не обычный пользователь. Кроме этого, /root/
просто обычный каталог без специального волшебства, хотя это тихо возможный (даже, вероятно), что системные утилиты полагаются /root/
будучи домом пользователя root
.
Когда Вы выполняетесь sudo -i
в терминале Вы переключаетесь от того, чтобы быть, например, обычного пользователя bob
к тому, чтобы быть root
. Обратите внимание, что этот переключатель влияет только на окно терминала, где Вы ввели sudo -i
. Для Вашего файлового менеджера Вы неподвижны bob
и если Вы открываете другое окно терминала, Вы неподвижны bob
там. В этом контексте символ ~
сокращение от корневого каталога текущего пользователя. Для bob
~
средства /home/bob/
но для root
~
средства /root/
.
Я надеюсь, что это разъясняет вещи для Вас.
Я вижу, что все отвечают, что происходит, когда Вы входите в систему как корень (Вы получаете ~ каталог, который не находится в / домой), но никто не говорит почему. Вот то, почему:
Если весь/, домашняя структура становится неприменимой и необходимо зафиксировать ее, или если необходимо перераспределить / домой, потому что она исчерпывает пространство, необходимо сделать так так или иначе. Вы не можете войти в систему как никакой пользователь, который имеет ~ в / домой, потому что Вы отказали бы, как только Вы пытались сделать что-либо. Таким образом, у пользователя root есть hir ~ в другом месте.
Вы говорите, что Вы не опытный пользователь, таким образом, я попытаюсь записать пошаговый ответ.
При использовании Linux необходимо помнить некоторые важные вещи:
Linux является многопользовательской системой. Это было задумано как этот с начала, после философии Unix (заметьте другой подход, проявленный Windows, который был задуман как система отдельного пользователя),
Как многопользовательская система, Linux имеет способность разделить файлы, принадлежащие каждому пользователю в системе. Путем Linux выполняет, это путем присвоения каждому пользователю подпапки в /home/
каталог. Каждый пользователь регистрирует, принадлежат ему, и только он может открыть их, изменить их или позволить другим пользователям использовать их. С другой стороны каждый файл в файловой системе принадлежит пользователю, и тот пользователь имеет власть по тому, кто видит или использует тот файл. Как упомянуто в другом ответе, первоначально пользователи могли поместить свои файлы где угодно в систему, но в какой-то момент стало очевидно, что вещи должны быть лучше организованы, и /home/
("дом наклонной черты") стал местом, где файлы пользователя должны быть.
Существуют, однако, файлы, в которых нуждаются сама система и/или каждый пользователь в системе: двоичные файлы, файлы устройств, системные файлы, и так далее (помните: в Linux, и в любой другой подобной Unix системе, все - файл). Это глобально необходимые файлы хранится в различных местах вдоль файловой системы, организованной в различных папках в корне файловой системы: /
. Кроме того, эти глобально необходимые файлы не принадлежат конкретному пользователю системы, но к самой системе..., но это может сбивать с толку: кто владеет двоичными файлами? Кто дает полномочия по этим глобально необходимым файлам?
Так как каждому файлу в системе "нужен владелец", должен быть "специальный пользователь", который может управлять глобально необходимыми файлами. Кроме того, этот "специальный пользователь" может сделать вещи, которые не может сделать никакой другой пользователь в системе: он может создать других пользователей для системы. Этого пользователя называют "суперпользователем" (для нас смертные) или "корень" (для системы).
Теперь, этот суперпользователь является другим пользователем системы, но имеет полномочия (и обязанности) далеко выше тех из других пользователей: обслуживание, например. Таким образом, естественно думать, что "корню" нужно место для помещения его материала, но Это не должно быть перепутано с материалом, принадлежащим другие пользователи. Так, вместо того, чтобы иметь подпапку ниже /home/
, "корень" имеет его собственное зарезервированное пространство в файловой системе: /root/
(названный "корнем наклонной черты").Помните: "корень" является совершенно особым пользователем, таким образом, ему нужно специальное, привилегированное место для помещения его материала.
Теперь, Ubuntu не включили корневую учетную запись по умолчанию, таким образом, у "нормального" пользователя должны быть полномочия над системой в целом. Это то, где sudo
("переключают пользователя и делают"), команда умирает: это позволяет обычному пользователю (ранее включенный в список "sudoers") выполнять команды, как будто он был другим пользователем, например, "базируйтесь".
Наконец, это -i
опции, средние ", моделируют начальный вход в систему". Это означает это sudo
считает данные профиля "целевого пользователя" прежде, чем выполнить данную команду. Если Вы не обеспечиваете команду, то sudo
запустит экземпляр оболочки с (корневого) профиля целевого пользователя..., и это запускается с перемещения в "домашнюю" папку "целевого пользователя". Так sudo -i
переместит Вас, чтобы сделать домашнюю папку корня (/root/
).
Я надеюсь, что это помогает Вам понять то, что происходит с sudo -i
.
Я думаю, что оставил somethings неразъясненными, таким образом, я добавлю их здесь:
Я сказал выше: "в Linux все - файл". И я имею в виду это, буквально! Ваши документы и изображения являются файлами, но также и терминалами (те, к которым можно получить доступ нажатие [CTRL] + [ALT] + [Fn]), и физические диски и клавиатура, например. Подобная Unix система работает путем чтения или записи данных из файлов и направления потока данных к соответствующим файлам в системе, которые представляют файл, Вы работаете с, и вход ключей, которые Вы вводите, и вывод, который Вы видите на экране. Некоторые из этих файлов могут использоваться непосредственно пользователями, но некоторые другие не могут; например, Вы не можете читать или записать непосредственно в жесткий диск, но необходимо позволить Linux для соединения нормальной, доступной для просмотра папки к файлу устройств (под /dev/
) представление Вашего жесткого диска.
Файловая система Linux может охватить несколько физических дисков. Простой пример - при включении перьевого диска USB: Linux может смонтировать, что диск (монтирование является процессом, которым система соединяет стандартную папку, где Вы видите файлы в оболочке или навигаторе файла к файлу устройств в /dev/
) и можно работать с ним, и когда Вы сделаны, Вы просите, чтобы Linux демонтировал диск и затем удалил его из USB-порта. Важная вещь здесь состоит в том, что этот "монтируются - размонтирование" влияние цикла *та же файловая система", Вы каждый день используете: Вы не создаете новую файловую систему каждый раз, Вы добавляете или удаляете физический диск, но Вы добавляете, что физический диск к файловой системе (снова, сравните эту философию с подходом Wndows).
Так как файловая система может охватить несколько физических дисков, становится очевидно, что различные файлы системы могут быть записаны в различные физические диски. Один диск может сохранить системные двоичные файлы (/bin/
) и другой может хранить файлы пользователя (/home/
и его потомки). В установке с несколькими приводами распространено иметь /home/
записанный в другом физическом диске, чем /root/
, таким образом, если системные повреждения и пользователи не могут войти в систему потому что диск где /home/
работа остановок, корень может. (Это упрощенно..., много вещей должны быть скопированы в каждый физический диск, чтобы позволить корню входить в систему, если никакой другой пользователь не может, но это может дать Вам общее представление).
И та тильда (~
) символ... это обозначает корневой каталог текущего пользователя. Если Вы зарегистрированы как "боб", то cd ~
возьмет Вас к /home/bob/
, но если Вы зарегистрированы как "корень", затем cd ~
возьмет Вас к /root/
tl; доктор Поэтому теперь, я думаю, что все сказано:
"корень" является специальным пользователем с полномочиями и обязанностями далеко выше других пользователей
"/корень /" место, где "корень" может сохранить свой материал, не рискуя им перепутанный с другим материалом, принадлежащим обычным пользователям. Эта папка может быть записана в другой физический диск, чем /home/
.
sudo -i
запускает оболочку, моделирующую вход в систему корня, и это подразумевает перемещение в домашнюю папку корня. Как с любым другим пользователем, cd ~
возьмет Вас к Вашему корневому каталогу, но, если Вы - корень, это будет /root/
Если система установлена через различные физические диски, корень может войти и попытаться починить вещи, даже если другой диск в системе перестал работать.
Базовая причина корневого каталога корня, который будут рассматривать по-другому:
Когда вещи идут не так, как надо, необходимо смочь выполнить системные задачи восстановления, как только Вам удается смонтироваться / файловая система.
В зависимости от Вашей установки пользовательские корневые каталоги могли бы быть в другой файловой системе, или они могли бы даже быть смонтированы по сети.
Чтобы войти в систему как корень (т.е. ввести корень имени и пароль root при приглашении ко входу в систему) от консоли, Вам только нужна одна смонтированная файловая система.
(Это также, почему базовые утилиты находятся в / мусорном ведре и/sbin вместо/usr/bin или/usr/sbin - все в/usr потребляемо.)