一、介绍
在Linux系统中,shell解析器分为多种,其中我们常用的shell解析器为 /bin/bash、/bin/sh
查看shell可以我们可以使用“chsh -l”或者“cat /etc/shells”

chsh -l
1


cat /etc/shells
1

在这些shell里,有一个特殊的shell——/sbin/nologin
简单介绍下对 /sbin/nologin的理解:
系统账号的shell使用/sbin/nologin,此时无法登录系统,即时给了密码也不行。
所谓“无法登录”,指的是仅是这个用户无法使用bash或者其他shell来登录系统而已,并不是说这个账号就无法使用系统资源。
举例来说,在各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,它们都可以进行系统程序的工作,但就是无法登录主机而已。
有时候有些服务,比如邮件服务,大部分都是用来接收主机的邮件而已,并不需要登录。假如有账号试图连接我的主机取得shell,我们就可以拒接。

二、使用
1、假定系统中存在一个账号test,如果没有,则useradd创建一个用户test,可通过cat /etc/passwd 查询,显示如下:

此时该test用户为/bin/bash
2、接下来,更改shell为“/sbin/nologin”(root用户下)

chsh -s /sbin/nologin test
1

结果出现,/sbin/nologin 未在/etc/shells 中列出
说明未添加 /sbin/nologin 在shells中
编辑/etc/shells,添加

vim /etc/shells
1

然后再执行chsh -s /sbin/nologin test

显示已改变
可通过cat /etc/passwd

cat /etc/passwd
1

此时,test的shell已经改变

3、尝试登录test账户

su -l test
1

系统提示:账号不可获取
在以后其他人使用这个账户登陆我们的主机的时候,就会提示他人不可以使用该账户登陆。

也可以更改提示信息,可以通过创建一个“/etc/nologin.txt”文件,写入以下信息:

This account is system account or mail account.

Please DO NOT use this account to login my Linux server.
1
2
3
再次输入 su -l test
即可出现该提示信息

This account is system account or mail account.

Please DO NOT use this account to login my Linux server.
1
2
3
更改方式为:

chsh -s shell username  #例:chsh -s /sbin/nologin test
1
注意:试验完了后记得删除 /etc/nologin.txt文件,并将账户的shell更改回来,避免影响后续的使用。
————————————————
版权声明:本文为CSDN博主「听说唐僧不吃肉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xu710263124/article/details/116236997

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐