Просто из любопытства я хотел бы знать, почему, когда я вхожу в систему как root, я больше не в / home / user . В чем причина и что именно делает каталог / root ?
Я не продвинутый пользователь. Пожалуйста, ответьте простыми словами или дайте ссылку, которая дает четкие, простые объяснения. Я использую Ubuntu 16.04 и захожу в систему как пользователь root sudo -i
. Как объясняется здесь , sudo -i
имеет / root в качестве дома. Я хочу знать, в чем причина; есть ли здесь какое-то преимущество? И не в ~ как пользователь sudo -s
.
home
каталог, но он называетсяroot
sudo -s
чтобы быть в том же каталоге пользователя.man sudo
ответит на вопрос. Прощеuser -i
говоря, используя настройки пользователя root, ноsudo -s
текущие настройки пользователя.Ответы:
Вы не вошли в систему как root, запустив
sudo
команду. Вы запускаете оболочку с правами root.Если вы хотите остаться в текущем домашнем каталоге пользователя, вы можете использовать
sudo -s
вместоsudo -i
команды.cd ~
перенесет вас в тот же каталог, как если бы вы не были в оболочке с привилегиями root. Буквально/home/$USER
.При использовании
sudo -i
система действует так, как будто вы вошли в систему какroot
пользователь. Из-за этогоприведет вас в домашний каталог пользователя root
/root
./root
каталог является домашним каталогом дляroot
пользователя.Основное отличие состоит в том, что файлы настроек оболочки, такие
.bashrc
как используются от/root
случаяsudo -i
, и от обычного пользователя в случаеsudo -s
.источник
.bashrc
используются оттуда в определенной оболочке. В большинстве случаев нет большой разницы./home
нет, проблема не существует. Тогда вы действительно войдете в систему как root.Причиной, по которой домашний
root
пользователь является/root
и не/home/root
является, является то, что обычно/home
это точка монтирования для отдельного раздела / тома / диска ... (по различным причинам, таким как дисковое пространство или удаленное устройство, ...)Если по какой-либо причине монтирование
/home
не удастся, вы все равно можете подключиться какroot
и находиться в вашем/root
домашнем каталоге, чтобы исследовать и исправить ошибкиБолее того, для обслуживания, начальной настройки, изменения размера, ... вы должны быть подключены как
root
и должны быть в состоянии демонтировать / перемонтировать/home
источник
root имеет / root в качестве своего дома, и когда вы переключитесь на root, вы окажетесь в его доме. Это природа
sudo -i
.sudo -s
делает то же самое, но не переключает каталоги. Руководство по sudo :Пользователь root должен быть частью системы. Когда вы помещаете / home в другой раздел, а root является частью / home, вы можете столкнуться с серьезными проблемами, если раздел не был смонтирован. По той же причине у нас также есть
а также
Когда вы помещаете / usr в раздел, а / usr не монтируется, у вас остается работающая система.
источник
sudo -i
противsudo -s
?Файловая система 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.Я вижу, что все отвечают на то, что происходит, когда вы входите в систему как root (вы получаете каталог ~, который не находится в / home), но никто не говорит почему. Вот почему:
Если вся структура home / home становится непригодной для использования, и вам необходимо ее исправить, или если вам нужно перераспределить / home, потому что она исчерпывает пространство, вы должны как-то это сделать. Вы не можете войти в систему как любой пользователь, имеющий ~ в / home, потому что вы потерпите крах, как только попытаетесь что-либо сделать. Таким образом, пользователь root имеет hir ~ в другом месте.
источник
hir
это опечатка. Спасибо за всю информацию! Я рекомендую сохранять жесткое форматирование кода, но это зависит от вас.Вы говорите, что вы не опытный пользователь, поэтому я постараюсь написать пошаговый ответ.
Когда вы используете Linux, вы должны помнить некоторые важные вещи:
Linux - многопользовательская система. Это было задумано с самого начала, следуя философии Unix (обратите внимание на другой подход, принятый в Windows, который был задуман как однопользовательская система)
Как многопользовательская система, Linux имеет возможность разделять файлы, принадлежащие каждому пользователю в системе. Linux выполняет это путем назначения каждому пользователю подпапки внутри
/home/
каталога. Файлы каждого пользователя принадлежат ему / ей, и только он может открывать, изменять их или разрешать другим пользователям использовать их. И наоборот, каждый файл в файловой системе принадлежит пользователю, и этот пользователь имеет право контролировать, кто может просматривать или использовать этот файл. Как упоминалось в другом ответе, первоначально пользователи могли размещать свои файлы в любом месте системы, но в какой-то момент стало очевидно, что все должно быть лучше организовано, и/home/
("slash-home") стал местом, где должны находиться файлы пользователя.Однако существуют файлы, которые нужны самой системе и / или каждому отдельному пользователю в системе: двоичные файлы, файлы устройств, системные файлы и т. Д. (Помните: в Linux и в любой другой unix-подобной системе все является файлом) , Это нужно глобально файлы хранятся в различных местах по файловой системе, организованных в различных папках в корне файловой системы :
/
. Кроме того, эти глобально необходимые файлы принадлежат не конкретному пользователю системы, а самой системе ... но это может сбивать с толку: кому принадлежат двоичные файлы? Кто дает разрешения на эти глобально необходимые файлы?Поскольку каждый файл в системе «нуждается в владельце», должен существовать «специальный пользователь», который может управлять глобально необходимыми файлами. Более того, этот «специальный пользователь» может делать то, что не может делать ни один другой пользователь в системе: он может создавать других пользователей для системы. Этот пользователь называется «суперпользователь» (для нас, смертных) или «корень» (для системы).
Теперь этот суперпользователь является другим пользователем системы, но обладает полномочиями (и обязанностями), намного превышающими полномочия других пользователей: например, техническое обслуживание. Поэтому естественно думать, что «руту» нужно место для размещения своих вещей, но его не следует путать с вещами, принадлежащими другим пользователям. Таким образом, вместо подпапки ниже
/home/
«root» имеет свое собственное зарезервированное пространство в файловой системе:/root/
(называется «slash-root»). Помните: «root» - это особенный пользователь, поэтому ему нужно специальное привилегированное место для размещения своих вещей.Теперь в Ubuntu по умолчанию не включена корневая учетная запись, поэтому «обычный» пользователь должен иметь полномочия над системой в целом. Вот тут и начинает действовать команда
sudo
(«переключить пользователя и делать»): она позволяет обычному пользователю (ранее включенному в список «sudoers») выполнять команды, как если бы он был другим пользователем, например «root».Наконец, эти
-i
параметры означают «имитировать первоначальный вход в систему». Это означает, чтоsudo
перед выполнением данной команды будут прочитаны данные «профиля целевого пользователя». Если вы не предоставите команду, тогдаsudo
запустится экземпляр оболочки с профилем целевого пользователя (root) ... и это начнется с перемещения в «домашнюю» папку «целевого пользователя». Такsudo -i
что переместим вас в домашнюю папку root (/root/
).Я надеюсь, что это поможет вам понять, что происходит с
sudo -i
.РЕДАКТИРОВАТЬ
Я думаю, что оставил что-то неясным, поэтому я добавлю их сюда:
Я сказал выше: «в Linux все является файлом». И я имею в виду, буквально! Ваши документы и изображения - это файлы, но также и терминалы (к которым вы можете получить доступ, нажав [CTRL] + [ALT] + [Fn]), физические диски и клавиатура, например. Unix-подобная система работает, читая или записывая данные из / в файлы, и направляя поток данных в / из соответствующих файлов в системе, которые представляют файл, с которым вы работаете, и ввод ключей, которые вы печатаете, и вывод, который вы видите на экране. Некоторые из этих файлов могут использоваться непосредственно пользователями, но некоторые другие не могут; Например, вы не можете читать или писать напрямую на жесткий диск, но вы должны позволить Linux связать обычную, просматриваемую папку с файлом устройства (ниже
/dev/
), представляющим ваш жесткий диск.Файловая система Linux может охватывать несколько физических дисков . Простой пример, когда вы подключите USB флэш - накопитель: Linux может монтировать этот диск (монтаж на процесс , с помощью которого система подключает стандартную папку, где вы можете увидеть файлы в раковине или файл навигатор, в файл устройство в
/dev/
) и вы можете работать с ним, и когда вы закончите, вы попросите Linux отключить диск и затем удалить его из порта USB. Здесь важно то, что этот цикл «монтирование - размонтирование» затрагивает * ту же файловую систему, которую вы используете каждый день: вы не создаете новую файловую систему каждый раз, когда добавляете или удаляете физический диск, а добавляете этот физический диск в файловую систему ( еще раз, сравните эту философию с подходом Wndows).Поскольку файловая система может охватывать несколько физических дисков, становится очевидным, что разные файлы системы могут быть записаны на разные физические диски. Один диск может хранить системные двоичные файлы (
/bin/
), а другой - файлы пользователя (/home/
и его потомков). При установке с несколькими дисками обычно/home/
записывается на физическом диске/root/
, отличном от того , поэтому, если система ломается и пользователи не могут войти в систему, потому что диск, на котором/home/
перестает работать, может выполнить root. (Это упрощенно ... многие вещи необходимо скопировать на каждый физический диск, чтобы root мог войти в систему, если никто другой не может, но это может дать вам общее представление).И этот
~
символ tilde ( ) ... он обозначает домашний каталог текущего пользователя. Если вы вошли в систему как «bob», тоcd ~
вы попадете на/home/bob/
, но если вы вошли в систему как «root», тоcd ~
вы перейдете к/root/
tl; dr Так что теперь я думаю, что все сказано:
«root» - это особый пользователь, полномочия и обязанности которого намного выше, чем у других пользователей.
«/ root /» - это место, где «root» может хранить свои вещи, не рискуя путать их с другими вещами, принадлежащими обычным пользователям. Эта папка может быть записана на другой физический диск, чем
/home/
.sudo -i
запускает оболочку, имитирующую логин root, что подразумевает перемещение в домашнюю папку root. Как и любой другой пользователь,cd ~
перенесет вас в ваш домашний каталог, но, если вы являетесь пользователем root, он будет/root/
Если система установлена на разных физических дисках, root может войти в систему и попытаться исправить ситуацию, даже если другой диск в системе выйдет из строя.
источник
Основная причина, по которой домашний каталог root должен трактоваться по-разному:
Когда что-то идет не так, как надо, вы должны иметь возможность выполнять задачи восстановления системы, как только вам удастся смонтировать / filesystem.
В зависимости от настроек домашние каталоги пользователей могут находиться в другой файловой системе или даже могут быть подключены по сети.
Чтобы войти в систему как пользователь root (т. Е. Ввести имя root и пароль root в приглашении для входа в систему) из консоли, вам потребуется только одна смонтированная файловая система.
(Именно поэтому основные утилиты находятся в / bin и / sbin вместо / usr / bin или / usr / sbin - все в / usr расходуется.)
источник