Какой из приведенных вариантов является ПРАВДОЙ относительно оболочки входа?

Какой из приведенных вариантов является ПРАВДОЙ относительно оболочки входа?

Какой из приведенных вариантов является ПРАВДОЙ относительно оболочки входа?

  1. Оболочка входа меняется каждый раз, когда пользователь входит в систему. Ядро принимает решение о доступности оболочки во время входа в систему.
  2. Оболочка входа фиксирована для всех пользователей в конкретной системе. Ее нельзя настроить.
  3. Оболочку входа можно настроить администратором в файле /etc/passwd.
  4. Ни один из вышеперечисленных.

решение1

Ядро не знает ничего о пользователях, кроме их числового идентификатора как тега на определенных вещах (процессах, файлах). У него нет понятия «входа в систему», который происходит в пользовательской среде.

Программа, которая управляет процессом входа в систему ( loginв текстовом режиме консоли,Дисплейный менеджерна графической консоли, демон, такой как sshdили telnetdдля удаленного входа в систему и т. д.) сначала аутентифицирует пользователя и выполняет другие задачи.ПАМчасто используется; он имеетмного возможностейсвязанные с аутентификацией, ведением журнала, базами данных пользователей и т. д. Последним шагом процесса входа в систему (в случае успешного входа), после того как программа переключилась с работы от имени root на работу от имени нужного пользователя, является вызов оболочки входа.

Оболочка входа определяется из базы данных учетных записей пользователей. Существует несколько типов баз данных пользователей; наиболее распространенными являются/etc/passwd(или, реже, какой-либо другой файл, настроенный черезНСС), который представляет собой простой текстовый файл, найденный на локальном компьютере, иНИСиLDAPкоторые представляют собой сетевые базы данных, используемые в сетях, где учетные записи могут использоваться с нескольких машин.

Пользователи могут изменить свою оболочку с помощьюchshкоманда для локальных учетных записей, сypchshдля счетов NIS или сchsh.ldapдля учетных записей LDAP. В некоторых местах chshкоманда настроена на работу с любым типом базы данных учетных записей, который используется. Пользователям разрешено переключаться только между оболочками, которые перечислены в файле /etc/shells; это одновременно и мера безопасности (пользователи, чья оболочка не указана, считаются имеющими ограниченные учетные записи и не могут ее изменить), и мера безопасности (изменение на несуществующую или ограниченную оболочку может фактически заблокировать учетную запись). Администратор может изменить оболочку входа любой учетной записи, выполнив команду chshили напрямую отредактировав базу данных.

В нормально настроенной системе полезные программы оболочки будут перечислены в списке, /etc/shellsи эти программы будут работать. (1) технически верно, поскольку оболочка входа может меняться (пользователь или администратор могут вызвать ее chshв любое время), даже если обычно это не так, и, конечно, запуск любой программы подразумевает загрузку ядром файла программы и завершится ошибкой, если файл не существует или поврежден.

Программа входа запускает оболочку входа с аргументом 0, установленным на имя программы с дефисом -перед именем. Например, если оболочка входа /bin/bash(необходим полный путь, поиск не $PATHвыполняется), то аргумент 0 будет -bash. Аргумент 0 обычно является именем программы; дополнительный дефис сообщает оболочке, что она должна действовать как оболочка входа. Оболочки входа запускают дополнительные файлы при запуске, например /etc/profileи ~/.profile; см.Разница между оболочкой входа и оболочкой без входа?для получения более подробной информации об этой части.


Этот экзамен с множественным выбором не очень хорошо продуман, поскольку каждый вариант может быть истолкован как истинный.

(1): действительно, оболочка входа определяется каждый раз, когда пользователь входит в систему. Также верно, что ядро ​​решает, доступна ли оболочка во время процесса входа. Так что технически (1) верно (а техническая корректность — это лучшая форма корректности, не так ли?). Но (1) очень вводит в заблуждение, потому что ядро ​​не решает, что такое оболочка входа как таковая, у него даже нет понятия входа или оболочки.

(2) в общем случае неверно, поскольку у разных пользователей могут быть разные оболочки входа. Однако существуют настройки, в которых по той или иной причине все пользователи имеют одну и ту же оболочку — например, гетерогенные сети, где учетные записи распределены между машинами, и единственная оболочка, которая гарантированно доступна везде, — это /bin/sh.

(3) — это, вероятно, предполагаемый ответ, потому что /etc/passwdэто одно из мест, где администратор может настроить оболочку входа. Однако /etc/passwdне следует редактировать напрямую, а через vipwкоманду или через команду, такую ​​как chsh. Кроме того, нелокальные учетные записи не хранятся в /etc/passwd.

решение2

Давайте проверим некоторые факты:

  1. Проверьте это. echo $SHELL. Теперь выйдите из системы и войдите снова. echo $SHELL. Промойте, постирайте, повторите. Один и тот же ответ каждый раз.

  2. Оболочка входа выводится из содержимого /etc/passwdдля всех пользователей. Значение, заданное в этом файле, будет значением оболочки входа для каждого пользователя в системе. Пользователь может запустить другую оболочку, но она не будет его оболочкой входа, если значение не задано в /etc/passwd.

    Вы можете убедиться в этом, попробовав выполнить команду из различных оболочек, которую вы запускаете вручную:

    bash -c "get-shell"
    sh   -c "get-shell"
    zsh  -c "get-shell"
    

    Все эти команды дадут вам одинаковый вывод, независимо от того, в какой оболочке вы их запустите, поскольку значение для оболочки входа определяется не тем, какую оболочку выбирает пользователь для запуска, а той, которая установлена ​​для него в /etc/passwd.

    Обратите внимание, что если в вашей системе этого нет, get-shellвы можете подставить getent passwd $(whoami) | cut -d: -f7команду выше, чтобы определить оболочку входа пользователя.

  3. Это будет сильно зависеть от уровня знаний администратора. Редактирование файла /etc/passwdтребует знания того, как запустить текстовый редактор от имени root, и ловкости, чтобы не испортить ни одного символа в файле. Хотя ниндзя может справиться с этим, администратор, который прочитает, man chshувидит, что это программа для настройки оболочек входа:

    ОПИСАНИЕ
    chsh используется для смены оболочки входа

  4. Если хотя бы один из приведенных выше ответов верен, то это должно быть ложно.

Связанный контент