Что такое логин и не-логин?

Говорят, что настройки для входа в оболочку не входят в .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 по запросу "что такое оболочка входа в систему", я даю более правильный ответ ниже:

Оболочка входа - это просто оболочка, которая называется оболочкой входа. Это не означает, что оболочка появляется после входа в систему, хотя обычно приложение, которое регистрирует вас, сообщает, что запускается как оболочка входа. Существуют следующие способы сказать оболочке, что она должна быть логиновой:

  1. Запуск оболочки с -l или же --login аргумент, предполагая, что это знает (я не знаю никаких оболочек, которые не знают -l, но --login поддерживается только несколькими оболочками).
  2. Запуск оболочки с 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).

Другие вопросы по тегам