一、介绍
在 Linux 系统中,shell 解析器分为多种,其中我们常用的 shell 解析器为 /bin/bash、/bin/sh
查看 shell 可以我们可以使用“cat /etc/shells”
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
在这些 shell 里,有一个特殊的 shell -- /sbin/nologin
简单介绍下对 /sbin/nologin 的理解:
系统账号的 shell 使用 /sbin/nologin,此时无法登录系统,即时给了密码也不行。
所谓“无法登录”,指的是仅是这个用户无法使用 bash 或者其他 shell 来登录系统而已,并不是说这个账号就无法使用系统资源。
举例来说,在各个系统账号中,打印作业有 lp 这个账号管理,www 服务器有 apache 这个账号管理,它们都可以进行系统程序的工作,但就是无法登录主机而已。
有时候有些服务,比如邮件服务,大部分都是用来接收主机的邮件而已,并不需要登录。假如有账号试图连接我的主机取得 shell,我们就可以拒接。
二、使用
1、创建用户
sudo useradd test
2、更改用户的默认 shell 为 /sbin/nologin
sudo chsh -s /sbin/nologin test
3、修改 test 用户的密码
sudo passwd test
4、切换至 test 用户
su test
最终显示:
This account is currently not available.
(SAW:Game Over!)