/bin/falseвспомогательная программа, /bin/trueполезная в некотором абстрактном смысле для обеспечения полной функциональности unix. Тем не менее, возникающие цели для этих программ были найдены; рассмотрим оператор BASH /some/program || /bin/true, который всегда будет иметь логическую оценку true ( $? = 0) независимо от возврата /some/program.
/bin/falseКак вы определили, новое использование - это пустая оболочка для пользователей, которым запрещен вход в систему. В этом случае система будет вести себя точно так, как если бы оболочка не запустилась.
POSIX (хотя я могу ошибаться и, возможно, SUS) ограничивает обе эти команды, чтобы они ничего не делали, кроме как возвращали соответствующее логическое значение.
/sbin/nologinутилита BSD, которая работает аналогично /bin/false(возвращает логическое значение false), но печатает также и вывод, что /bin/falseзапрещено делать. Предполагается, что это поможет пользователю понять, что произошло, хотя на практике многие эмуляторы терминалов просто закрываются, когда оболочка завершает свою работу, и в некоторых случаях сообщение становится почти нечитаемым.
Есть небольшая цель для включения /sbin/nologinв /etc/shells. Стандартный эффект /etc/shellsсостоит в том, чтобы перечислить программы, допустимые для использования, chshкогда пользователи изменяют свою собственную оболочку (и нет никаких веских оснований для изменения вашей собственной оболочки /sbin/nologin). Суперпользователь может изменить чью-либо оболочку на что угодно. Тем не менее, вы можете перечислить как /sbin/nologinи /bin/falseв /etc/rsh, которые будут запрещать пользователям этих оболочек изменять свою оболочку , используя chshв несчастном случае, если они получают оболочку.
Демоны FTP могут запретить доступ пользователям с оболочкой, не входящей в / etc / shells, или они могут использовать любую другую логику, какую пожелают. Запрещается запускать FTP в любом случае, потому что sftp(который обеспечивает аналогичную функциональность) похож, но безопасен. Некоторые сайты используют, /sbin/nologinчтобы отключить доступ к оболочке, в то же время разрешая доступ sftp, вставив его /etc/shells. Это может открыть бэкдор, если пользователю разрешено создавать cronjobs.
В любом случае scpне будет работать с недопустимой оболочкой. scponlyможет быть использован в качестве оболочки в этом случае.
Кроме того, выбор оболочки влияет на работу su -(АКА su -l). В частности, вывод /sbin/nologinбудет напечатан на стандартный вывод, если это оболочка; это не может быть в случае с /bin/false. В любом случае команды, запущенные с su -cl, завершатся с ошибкой.
Наконец, ответ:
Чтобы отключить учетную запись, не полагайтесь ни на одну из них, но установите оболочку в /sbin/nologinинформационных целях (если только /sbin/nologinона не находится /etc/shells, в какой момент вы должны использовать /bin/false, а какой нет). Вместо этого установите поле пароля в /etc/passwdзначение !, которое гарантированно cryptбудет действительным без паролей. Рассмотрите возможность установки хеша /etc/shadowтаким же образом, чтобы избежать ошибок. passwd -lсделаю это для вас.
Третий способ отключить учетную запись - установить в поле даты истечения срока действия учетной записи древнюю дату (например, usermod --expiredate 1). Это предотвратит вход в систему в случае, если ваши настройки позволяют пользователям проходить аутентификацию в своей учетной записи unix без пароля и для используемой ими службы не требуется оболочка.