Существуют ли неинтерактивные оболочки для входа?

Я знаю, какая разница между интерактивными / неинтерактивными и входами / не-входами, но похоже, что на практике никогда не будет неинтерактивной оболочки входа, если у вас есть что-то вроде /bin/bash --login some-script.sh в скрипте (и даже это кажется немного странным). Правильно это или они более распространены?

  • Сценарий «для цикла» не работает по назначению
  • Запуск задания cron из другой оболочки
  • Опция gnome - terminal -e не выполняется?
  • Как очистить содержимое файла журнала ретрансляции в оболочке?
  • bash - очереди подсетей
  • Вывод «Голливуд-хакер-сцена» из оболочки
  • Как я * надежно * и * просто * получить текущее имя интерпретатора оболочки?
  • Отправка команды во вторую оболочку
  • One Solution collect form web for “Существуют ли неинтерактивные оболочки для входа?”

    Большинство учетных записей по подсчетам на вновь установленной системе не являются интерактивными, на самом деле:

     $ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c 5 /bin/bash 23 /bin/false 1 /bin/sh 1 /bin/sync 17 /usr/sbin/nologin 

    Ясно /bin/bash и /bin/sh являются традиционными оболочками, и они интерактивны. Но все остальные элементы в этом списке не являются интерактивными. Если вы читаете список и не знаете, что делает один из них, вы можете просто просмотреть его страницу руководства (например, man nologin или man sync ).

    Что действительно делает команда

    Глядя на историю проводки капитана, я вижу, что они довольно неопытные с Unix. Так что, может быть, вопрос в комментарии о несоблюдении, связанном с командной строкой в ​​верхней части ответа, а не просто о выходе. Поэтому я объясню также и строку командной строки, хотя это действительно не по теме для этого вопроса.

    Команда представляет собой конвейер Unix . Конвейер представляет собой цепочку команд – вы читаете ее слева направо, в которой вывод первой команды становится входом второго, вывод второго становится входом третьего и так далее, пока конец трубопровода. Выход последнего процесса отображается на терминале (если только он не был перенаправлен). Для получения дополнительной информации см. Запись в Википедии о конвейерах оболочки .

    Если вы не понимаете, что делает конвейер, вы можете просто запустить его в сегментах, чтобы узнать, что происходит. Вы также можете прочитать страницу руководства для команд, которые используются (здесь awk , sort и uniq ). Фактически, вы должны сделать это сейчас. Я буду ждать.

    Давайте постепенно запускаем этапы конвейера (вы можете безопасно сделать это в своей собственной системе Unix):

     ~$ awk -F: '{print $7}' < /etc/passwd | sed -e 's/^/ /' /bin/bash /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /bin/sync /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /usr/sbin/nologin /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /bin/false /usr/sbin/nologin [ ... and so on, I've left the rest out ... ] 

    Вышеприведенный результат – это просто содержимое седьмого поля из файла /etc/passwd . Это база данных (flat-text-file), которая сообщает системе, что у всех есть оболочка входа в систему. Если вы хотите узнать больше о /etc/passwd просто прочитайте его (он читается в мире) и посмотрите на страницу руководства для него (man 5 passwd) .

    Поэтому, читая весь список, вы можете получить представление о том, что такое популярные предметы, но это не очень хороший формат для ответа на этот вопрос, потому что вопрос действительно касался того, насколько распространены неинтерактивные оболочки. Давайте посчитаем их. Самый простой способ сделать это – сначала отсортировать элементы:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort /bin/bash /bin/bash /bin/bash /bin/bash /bin/bash /bin/false /bin/false /bin/false /bin/false /bin/false [ ... and so on, I've left the rest out ... ] 

    Мы можем использовать программу uniq чтобы показать нам только уникальные элементы:

    ~ $ awk -F: '{print $ 7}' </ etc / passwd | сортировать | uniq | sed -e 's / ^ / /' / bin / bash / bin / false / bin / sh / bin / sync / usr / sbin / nologin

    Но подождите, это бесполезно, сколько из них было там? Давайте попробуем uniq (прочитайте страницу руководства!):

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c 5 /bin/bash 23 /bin/false 1 /bin/sh 1 /bin/sync 17 /usr/sbin/nologin 

    Конечно, это результат, который мы видели в верхней части ответа. Давайте отсортируем его снова, чтобы увидеть записи в порядке:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort 17 /usr/sbin/nologin 1 /bin/sh 1 /bin/sync 23 /bin/false 5 /bin/bash 

    Подождите, это не так, 17 до 1 и 5 после 23. Проблема в том, что элементы сортируются лексикографически . Давайте попросим sort их численно и в обратном порядке:

     ~$ awk -F: '{print $7}' < /etc/passwd | sort | uniq -c | sort -n -r 23 /bin/false 17 /usr/sbin/nologin 5 /bin/bash 1 /bin/sync 1 /bin/sh 

    Я думаю, это объясняет все в оригинальном ответе. Если вы все еще неясны в деталях того, что делают эти команды, вы можете прочитать страницы руководства. Если вы все еще неясны на принципах того, что происходит, лучше начать с чтения книги (онлайн или на бумаге), объясняющей Unix и Linux.

    Interesting Posts

    Теперь visudo не будет работать вообще

    Ошибка авторизации сервера!

    Как правильно вызвать lsof для получения всех TCP-соединений?

    dpkg – как установить предварительную зависимость?

    Импортировать ключ EPEL GPG в кикстарт после установки

    Не удается связаться через интернет через интерфейс Ethernet

    PulseAudio не загружает модуль-туннель-приемник

    Динамическая переменная в скрипте KornShell

    nginx крит-ошибка tlsv1 ответ на плохой сертификат: номер предупреждения SSL 113

    Как возобновить команду «WATCH» при повторном подключении USB-GPS

    Обновите один пакет из целевой версии

    Не удалось запустить sshd во время загрузки на centos 6.4. Он начинается ТОЛЬКО после входа в систему с консоли

    Нечувствительность к регистру, дублирующая строку, удалите дубликат по выбору случая с самым высоким дублированием

    Как настроить контейнер докера для запуска при загрузке в CentOS 6.7

    Vim Открыть файл в режимах с несколькими разделителями

    Linux и Unix - лучшая ОС в мире.