一、介绍
在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