Linux拓展之阻止或禁用普通用户登录

引入

有时候我们可能需要阻止或禁用普通用户登录,比如超级管理员需要维护系统。有几种方法可以在 Linux 中禁用普通用户登录。

参考资料:

  • How to Block or Disable User Login in Linux
  • nologin命令

注:我当前进行测试的 Linux 系统是 CentOS 7。



方法一

第一种方法:使用 /etc/nologin 文件禁止所有普通用户登录。

/etc/nologin 文件只是用来向普通用户(即非 root 用户)在关机后再尝试重新登录会显示的消息(这消息其实就是写在 /etc/nologin 文件的内容),从而阻止他们登录。通常 Linux 系统在关机时自动创建该文件,在开机时将其删除。

而我们要自己控制是否要让普通用户,所以需要自己手动创建该文件。使用超级管理员执行如下命令:

vi /etc/nologin
# 然后向该文件内写入一些提示内容,任意内容均可。然后保存并关闭文件

只要该文件存在于系统中,Linux 系统就会阻止所有普通用户登录;当删除该文件后,普通用户又可以进行登录了。

为此,我们可以写一个脚本来处理这种情况:Linux脚本练习之script015-实现禁止和允许普通用户登录系统。。

#!/bin/bash####################################
#
# 功能:实现禁止和允许普通用户登录
#
# 使用:直接执行,无须任何参数。
#
######################################
# 实现禁止和允许普通用户登录
##
function allow_or_forbid_login() {# 根据 /etc/nologin 文件是否存在,来判断是允许普通用户登录还是禁止普通用户登录if [ -f "/etc/nologin" ]; thenread -n 1 -p "你是否想要允许普通用户登录[Y/N]:" is_allowechoelseread -n 1 -p "你是否想要禁止普通用户登录[Y/N]:" is_forbidechofi# 将输入的字母都转换成小写字母is_allow=$(echo "$is_allow" | tr 'A-Z' 'a-z')is_forbid=$(echo "$is_forbid" | tr 'A-Z' 'a-z')# 实现禁止普通用户登录if [ "$is_forbid" = "y" ]; then# 如果要禁止普通用户登录,只需要创建 /etc/nologin 文件即可echo "系统正在维护中,请过段时间再登录!" > /etc/nologinecho "现在普通用户将不能登录系统了!"elif [ "$is_forbid" = "n" ]; thenecho "现在普通用户仍然可以登录!"fi# 实现允许普通用户登录if [ "$is_allow" = "y" ]; then# 只要删除掉 /etc/nologin 文件就可以让普通用户进行登录了rm -rf "/etc/nologin"echo "现在普通用户已经可以登录了!"elif [ "$is_allow" = "n" ]; thenecho "现在普通用户仍然不允许登录!"fi
}##
# 主函数
##
function main() {# 在主函数中调用allow_or_forbid_login
}# 调用主函数
main


方法二

第二种方法:禁止某个用户登录,而非禁止所有用户登录,也无法通过 FTP 登录。

如果我们想要禁止某个特定的用户登录,那么可以使用 passwd 命令:

# 语法
# 禁止特定用户,让它不能够进行登录
passwd -l 指定用户名
# 解锁特定用户,让它能够进行登录
passwd -u 指定用户名# 示例
# 让 zhangsan 用户不能登录
passwd -l zhangsan
# 让 zhangsan 用户能够登录
passwd -u zhangsan

禁止用户 zhangsan 登录的情况如下:
在这里插入图片描述
在这里插入图片描述
解锁用户 zhangsan 能够登录:
在这里插入图片描述

方法三

第三种方法:禁止指定用户通过 shell 登录但是允许 FTP 等其他方法(如 WinSCP 这类可以进行FTP登录的软件)登录。

如果要通过该种方法实现,我们可以直接修改 /etc/passwd 文件种指定用户登录的 shell,通常由 /bin/bash 修改为 /sbin/nologin

vi /etc/passwd

例如,修改 zhangsan 用户:
在这里插入图片描述但上面的方法每次都需要去修改 /etc/passwd 文件,很麻烦。所以我们可以使用 chsh 命令,该命令将会改变指定用户的 shell。命令格式如下:

# 语法
# 禁止指定用户登录,其实就是将普通用户的 shell 修改为 /sbin/nologin,这样普通用户就无法登录了
chsh -s /sbin/nologin 指定用户名
# 恢复指定用户登录,其实就是将普通用户的 shell 又修改回 /bin/bash,这样普通用户就又能够进行登录了
chsh -s /bin/bash 指定用户名# 示例
# 禁止指定用户 zhangsan 登录
chsh -s /sbin/nologin zhangsan
# 恢复指定用户 zhangsan 登录
chsh -s /bin/bash zhangsan

在这里插入图片描述

注:关于 chsh 命令可参考 Linux命令之改变用户的shell设定chsh。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部