Технически, если только pam
вы не настроили проверку вашей оболочки, pam_shells
ни один из них не может фактически предотвратить ваш вход в систему, если вы не в оболочке. В моей системе они даже разных размеров, поэтому я подозреваю, что они действительно что-то делают. Так в чем же разница? почему они оба существуют? Зачем мне использовать один над другим?
-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
/bin/false
должен существовать везде, но не/sbin/nologin
: '/ sbin / nologin': такого файла или каталога нет. Есть идеи, почему/usr/sbin/nologin
вместо/sbin/nologin
Debian и Ubuntu?Ответы:
Когда
/sbin/nologin
установлена оболочка, если пользователь с этой оболочкой войдет в систему, он получит вежливое сообщение «Эта учетная запись в данный момент недоступна». Это сообщение можно изменить с помощью файла/etc/nologin.txt
./bin/false
это просто двоичный файл, который сразу же завершает работу, возвращая false, когда он вызывается, поэтому, когда кто-то, имеющийfalse
учетную запись, входит в систему, он сразу же выходит из системы приfalse
выходе. Установка оболочки на/bin/true
тот же эффект не позволяет кому-либо войти в систему, ноfalse
, вероятно, используется в качестве соглашения,true
поскольку гораздо лучше передать концепцию, что у человека нет оболочки.Глядя на
nologin
справочную страницу, он говорит, что он был создан в 4.4 BSD (начало 1990-х), так что он появился намного позжеfalse
. Использованиеfalse
в качестве оболочки, вероятно, просто соглашение, перенесенное с первых дней UNIX.nologin
это более удобный для пользователя вариант с настраиваемым сообщением, которое выдается пользователю, пытающемуся войти в систему, поэтому теоретически вы захотите его использовать; но обаnologin
иfalse
будут иметь один и тот же конечный результат, если кто-то не имеет оболочки и не может войти в ssh.источник
/usr/sbin/nologin
для дистрибутивов на основе Debian.Некоторые FTP-серверы разрешают вам FTP-доступ, только если у вас есть действующая оболочка.
/sbin/nologin
считается допустимой оболочкой, тогда/bin/false
как нет.(Я думаю, что «действительный» означает, что его статус выхода равен 0, но
/etc/shells
может также войти в него, это, вероятно, зависит от системы, программного обеспечения FTP и вашей конфигурации.)источник
/etc/shells
. Просто предположение ... Я могу ошибаться./bin/false
это системная команда, которая используется каждый раз, когда вам нужно передать команду программе, которая не должна делать ничего, кроме выхода с ошибкой. Это компаньон для/bin/true
. Обе они являются очень старыми и стандартными утилитами POSIX и не выдают никаких выходных данных по определению. Значение true иногда используется для сценария оболочки, который должен выполняться бесконечно, например:/usr/sbin/nologin
специально разработан для замены оболочки и выдаёт жалобы на невозможность входа в систему. До того, как он существовал, его обычно использовали/bin/false
для фиктивных пользователей, но это могло сбивать с толку, поскольку пользователь не знает, почему его выкинули.источник
/bin/true
и/bin/false
не всегда то, что вы получите в сценарии оболочки. Вzsh
true
иfalse
встроенные модули, гдеbash
используются/bin/*
версииНа моей машине
nologin
всегда отображается одно и то же сообщение на английском языке без учета аргументов./bin/false
отвечает--version
и--help
на языке, указанном$LC_CTYPE
. Помимо этих косметических различий, они имеют тот же эффект.С точки зрения удобства использования,
nologin
лучше, если он используется за счет реального человека, который говорит по-английски. С точки зрения безопасности, нет никакой разницы.источник
false
, больше для системных учетных записей, у которых нет реального пользователя, иnologin
для отключенных учетных записей.nologin
Версия Centos не принимает аргументов, но может читать сообщения/etc/nologin.txt
.Задача / bin / false только для выхода с ненулевым кодом выхода.
Попробуйте это в командной строке:
Некоторые учреждения используют / bin / false в поле оболочки файла паролей. Если пользователь пытается войти, оболочка имеет вид / bin / false, поэтому они сразу выходят
источник
В Linux это
/sbin/nologin
происходит из проекта util-linux , а также/bin/false
является частью GNU Coreutils . Они выполняют разные роли, и у nologin есть возможность распечатать сообщение для людей, которые используют его в качестве оболочки для входа в систему. Команды linux приходят из BSD, где они, похоже, имеют долгую историю отличия. FreeBSDfalse
просто возвращает 1 , в то время какnologin
проверяет, работает ли он на TTY, и отправляет сообщение в системный журнал во время попыток входа в систему. Версии linux немного сложнее (яfalse
делаю разные забавные вещи с интернационализацией для вывода --help, я полагаю), но, по сути, работают так же.источник
Это может быть одна и та же программа, но они имеют разные значения. Название программы говорит обо всем.
источник
Оба выполняют более или менее одинаковую работу, но
/bin/false
полезны для непривилегированных пользователей. С другой стороны,/sbin/nologin
для привилегированных пользователей.источник
/etc/passwd
. Я только что посмотрел на/etc/passwd
недавно установленную версию Debian. В этом поле почти все системные учетные записи (идентификаторы пользователей <1000) имеют/usr/sbin/nologin
оболочку, за некоторыми исключениями. Обратите внимание, что я не согласен с ответом @ pythondetective. Я просто размышляю, что могло бы привести его к такому выводу. Мой комментарий немного поздно, хотя.