/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 без пароля и для используемой ими службы не требуется оболочка.