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

引入

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

参考资料:

注:我当前进行测试的 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" ]; then
      read -n 1 -p "你是否想要允许普通用户登录[Y/N]:" is_allow
      echo
  else
      read -n 1 -p "你是否想要禁止普通用户登录[Y/N]:" is_forbid
      echo
  fi

  # 将输入的字母都转换成小写字母
  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/nologin
      echo "现在普通用户将不能登录系统了!"
  elif [ "$is_forbid" = "n" ]; then
      echo "现在普通用户仍然可以登录!"
  fi

  # 实现允许普通用户登录
  if [ "$is_allow" = "y" ]; then
      # 只要删除掉 /etc/nologin 文件就可以让普通用户进行登录了
      rm -rf "/etc/nologin"
      echo "现在普通用户已经可以登录了!"
  elif [ "$is_allow" = "n" ]; then
      echo "现在普通用户仍然不允许登录!"
  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

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/125232580