Что такое логин и не-логин?
Говорят, что настройки для входа в оболочку не входят в .bashrc настройки оболочки файла и входа в систему .profile файл.
Что на самом деле подразумевается под логином и без логина?
Пожалуйста, объясните, не используя технический жаргон, насколько это возможно.
2 ответа
Проще говоря:
- Если вы открываете оболочку или терминал (или переключаетесь на него), и он просит вас войти в систему (Имя пользователя? Пароль?), Прежде чем выдает подсказку, это оболочка для входа.
- Если это не так (например, gnome-терминал) и позволяет вам использовать его сразу, это оболочка без авторизации.
Если вы обычный пользователь Ubuntu Desktop, единственная оболочка для входа - это... ваш рабочий стол (вы вводите пароль для входа, верно;)? Ну, технически это оболочка входа в систему, которая запускает графический интерфейс, но это входит в жаргон. И да, он будет читать настройки в .profile
Единственный раз, когда вы (обычный пользователь), вероятно, увидите оболочку входа, похожую на оболочку входа, - это если у вас возникли проблемы с рабочим столом, и вы переключаетесь на виртуальный терминал с помощью комбинации клавиш Ctrl + Alt + F1.
Другие общие случаи использования оболочки входа в систему:
- удаленный доступ к вашему компьютеру через
ssh(или локальноssh localhost) - моделирование начальной оболочки входа с
bash -l(или жеsh -l) - моделирование начального
rootвход в оболочку сsudo -i- или же
sudo -u username -iдля другогоrootпользователь
- или же
- аутентификация как еще один
rootпользователь сsu - username(и их пароль) - с использованием
sudo loginкоманда для переключения пользователя
Я не думаю, что правильный ответ можно дать без "технического жаргона". Так как этот вопрос является первым, который появляется в Google по запросу "что такое оболочка входа в систему", я даю более правильный ответ ниже:
Оболочка входа - это просто оболочка, которая называется оболочкой входа. Это не означает, что оболочка появляется после входа в систему, хотя обычно приложение, которое регистрирует вас, сообщает, что запускается как оболочка входа. Существуют следующие способы сказать оболочке, что она должна быть логиновой:
- Запуск оболочки с
-lили же--loginаргумент, предполагая, что это знает (я не знаю никаких оболочек, которые не знают-l, но--loginподдерживается только несколькими оболочками). - Запуск оболочки с
argv[0]установлен в-{some_string}(то есть с HYPHEN-MINUS, добавленным к обычномуargv[0]или какой-то другой строке). Вот что делают ssh и su: su просто запускает исполняемый файл с-suкакargv[0](привет всем думающимargv[0]имеет отношение к исполняемому в настоящее время имени исполняемого файла), ssh запускает zsh с помощью-zshкогда пользователь установил/bin/zshкак его оболочка.
Логичность оболочки не имеет абсолютно никакого отношения к тому, кто спрашивает у вас пароль или выполняет какую-либо другую процедуру аутентификации. Некоторые программы, такие как ssh или login (или некоторые эмуляторы терминала, такие как urxvt) запускают оболочки как логин, используя argv[0] это начинается с ГИФЕН-МИНУС. Некоторым нравится su или sudo (или zsh: см. - Модификатор предкоманды, описанный в разделе Модификаторы PRECOMMAND в man zshmisc) не делайте этого по умолчанию, но так можно сказать. У некоторых есть единственная возможность указать shell как логин, используя его аргумент (т.е. bash -l): ssh с аргументом команды (который явно указывает ssh, что запускать на удаленном конце).
Обычно лучше сначала обратиться к документации программы, используемой для вызова оболочки, чтобы определить, будет ли оболочка входом в систему, а затем выполнить несколько тестов, чтобы определить, будет ли приложение запускать оболочку входа (например, добавив echo в .profile).