我们都知道,在linux系统中有很多的shell,查看shell可以使用“chsh -l”或者“cat /etc/shells ”。
在这些shell里面,有一个shell——/sbin/nologin却比较特殊,那么它到底有什么特殊,又有什么用呢?我们以实际的案例来解释一下。
在我们的系统中有apache这个账号管理着www服务器,lp管理着打印服务等。还有类似很多的这样的系统服务,他们运行在系统中,由专门的账户管理着,这些账号都有一个共同的特性,那就是他们的shell都是/sbin/nologin,并且这些账号都是不能够登陆主机的,但是却能够使用系统的很多资源。那么相像一下,这样的场景是不是在很多时候都会被应用到,比如我们的邮件服务,很多时候我们的邮件服务器只需要进行收取邮件的功能,那么为了保证系统的安全,我们是不是就可以创建一个这样的账号,给它分配一个/sbin/nologin就可以了?
假设我的系统中有一个test账号,现在我们将它的shell更改为“/sbin/nologin”(root用户下执行):
chsh -s /sbin/nologin test
我们再查看下此时test账户的shell
我们修改成功了,接下来我们试着登陆test这个账户瞧一瞧。
系统会提示当前账号不可获取。
这样,在以后其他人使用这个账户登陆我们的主机的时候,就会提示他人不可以使用该账户登陆。
为了使提示信息更友善,我们也可以创建一个“/etc/nologin.txt”文件,写入以下信息:
This account is system account or mail account.
Please DO NOT use this account to login my Linux server.
我们再次登陆test账户试试:
我们看到,刚才的文件内容已经被显示在屏幕上了。大家可以自己试一试,试验完了后记得删除 /etc/nologin.txt文件,并将账户的shell更改回来,避免影响后续的使用。
更改方式为:
chsh -s shell username #例:chsh -s /bin/bash test
讲到这里,大家是不是对/sbin/nologin有了一个更深的认识呢?