linux中特殊 shell——/sbin/nologin案例解析

我们都知道,在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有了一个更深的认识呢?

 

你可能感兴趣的:(Linux/UNIX)