Linux系统安全及应用(账号权限管理、登录控制、弱口令、端口扫描)

作者:晚风吹人醒.日期:2026/1/5

目录

1. 账号管理与权限控制

1.1 基本安全措施:

1.1.1 账号管理和文件权限

1.1.2 密码安全控制

1.1.3历史命令和自动注销

1.2 用户切换与提权:

2. 系统引导与登录控制

2.1 开关机安全控制:

2.1.1 GRUB

2.1.2 限制更改GRUB引导参数

2.2 终端登录控制:

3. 弱口令检测与端口扫描

3.1 弱口令检测-JR:

3.2 端口扫描-NMAP:

4.操作举例(帮助理解)


1. 账号管理与权限控制

1.1 基本安全措施:

1.1.1 账号管理和文件权限

#检查账号情况

cat /etc/passwd | grep /sbin/nologin #禁止终端登录的账号

cat /etc/passwd | grep -v /sbin/nologin #重点关注没有禁止终端登录的账号 invert match反向匹配

#禁止账号登录

usermod -s /sbin/nologin nologintest #禁止用户nologintest终端登录 -s shell 指定新的shell

#恢复账号登录

usermod -s /bin/bash nologintest #恢复用户nologintest终端登录

#锁定账号

passwd -l nologintest #-l lock 锁定账号

#查看锁定状态

passwd -S nologintest #-s status 查看账号锁定状态

cat /etc/shadow #用户名后面有两个!!号

#解锁账号

passwd -u nologintest #-u unlock 解锁账号

#当某用户长期无人使用时,为了安全考虑可以先进行锁定

#锁定账号

usermod -L zhangsan #锁定张三用户

#查看锁定状态

passwd -S zhangsan

#解锁账号

usermod -U zhangsan #解锁张三用户

特殊权限 suid sgid sticky

#suid 冒险位,执行二进制文件(执行文件)与文件所有人有关,与谁来执行无关(执行者以所有者的权限运行)

#去掉suid冒险位

#sgid 强制位,对目录生效,在此目录中创建文件和目录的属组都跟父目录的属组相同

#sticky 粘制位,目录中的文件只能被文件拥有者删除,root也可以删除

文件ACL getfacl setfacl

对文件的权限进行附加说明的权限设定方式,独立于基础权限

#查看权限

#设定ACL权限

#取消lisi用户的ACL权限

#取消所有用户的ACL设置,恢复文件默认设置

文件属性 chattr lsattr +i +a

#基本权限rwx概念

#默认root用户新建目录权限755,新建文件权限644。普通用户新建目录权限775,新建文件权限664

#修改umask配置文件(/etc/bashrc,/etc/profile),umask命令可以查看umask的值

#锁定配置文件,文件不能删除,不能更改,不能移动

chattr +i /etc/passwd #chattr change attribution

#设置了`i'属性的文件不能进行修改:你既不能删除它,也不能给它重新命名,你不能对该文件创建链接,而且也不能对该文件写入任何数据.只有超级用户可以设置或清除该属性.

#查看锁定情况

lsattr /etc/passwd
----i----------- /etc/passwd

#解锁配置文件

chattr -i /etc/passwd

1.1.2 密码安全控制

将密码的有效期设为30天

#新创建的用户默认设定

vim /etc/login.defs

PASS_MAX_DAYS 30 #默认值PASS_MAX_DAYS 99999

#已有用户修改设定

chage -M 30 nologintest #-M MAX_DAYS 不是-m 修改的是/etc/shadow配置文件

#账户安全限制,打开/etc/login.defs 文件,修改下列信息,修改的信息只限制新创建的用户

PASS_MAX_DAYS 20 #密码最长使用期限

PASS_MIN_DAYS 0 #密码最短使用期限

PASS_MIN_LEN 5 #密码最小字符

PASS_WARN_AGE 7 #密码临近多久到期时发出警告

强制用户下次登录时重设密码

chage -d 0 nologintest #-d LAST_DAY

1.1.3历史命令和自动注销

#修改历史记录保存条数

#统一管理

vim /etc/profile
HISTSIZE=200 #历史记录的保存条数,默认是1000

#单独定制

vim ~/.bash_profile
export HISTSIZE=200

#注销用户并清除history历史记录

vim ~/.bash_logout
echo > ~/.bash_history

#修改闲置超时时间

#统一管理

vim /etc/profile
export TMOUT=200 #单位为秒

#单独定制

vim ~/.bash_profile
export TMOUT=200

1.2 用户切换与提权:

su命令

su - root # - 切换为新用户的环境变量

whoami

限制某些用户可以使用su命令

useradd pamtest01

useradd pamtest02

gpasswd -a pamtest01 wheel #将pamtest01用户加入至wheel组内

cat /etc/group | grep wheel #确认wheel组成员

#开启pam认证

vim /etc/pam.d/su
auth required pam_wheel.so use_uid #将注释符号去掉,非wheel组成员无法使用su命令

验证su命令限制生效

sudo命令

作用:将root命令授权给普通用户使用

授权的基本配置格式:

user MACHINE=COMMANDS

user(用户);授权的用户名,或采用%组名的形式

MACHINE:使用此配置文件的主机名称,一般设为localhost或者实际的主机名即可。

COMMANDS:允许授权的用户通过sudo方式执行的特权命令。多个命令之间以逗号分隔。

#添加用户授权前

#添加用户授权后

#禁止zhang用户以root权限查看/etc/shadow文件,其他文件可以以root权限查看

#对zu1授权

测试user1,user2是否可以使用fdisk -l命令

#sudo别名使用

# User Aliases(用户别名),别名需要大写

#查看当前用户被授权的命令有那些

​​​​​​​

#sudo日志/var/log/secure

#默认情况下通过sudo方式执行操作并不记录,若要启用sudo日志记录,需要在/etc/sudoers 文件内增加 Defaults logfile 设置

​​​​​​​ ​​​​​​​

2. 系统引导与登录控制

2.1 开关机安全控制:

增加GRUB引导时间。

vim /boot/grub2/grub.cfg
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=20
else
set timeout=20
fi

2.1.1 GRUB

GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

2.1.2 限制更改GRUB引导参数

如果想编辑grub引导参数,按e键后,需要输入用户名密码。

#给编辑grub引导参数加密码

grub2-setpassword

#这个过程创建了一个/boot/grub2/user.cfg配置文件,其中包含已经加密的密码。密码的用户是root。如果想要删除密码,直接删除/boot/grub2/user.cfg文件就可以。

2.2 终端登录控制:

#限制普通用户登录终端

touch /etc/nologin #不需要更改任何信息,有这个文件就无法登录

rm -rf /etc/nologin #删除后普通用户就可以登录

3. 弱口令检测与端口扫描

3.1 弱口令检测-JR:

John the Ripper 开膛手约翰

安装过程

# tar -zxvf john-1.9.0.tar.gz -C /usr/src

# cd /usr/src/john-1.9.0

# cd src

# make clean linux-x86-64

#在run目录下 就会生成john工具

JR安装弱口令检测使用方法

1、复制shadow文件

# cp /etc/shadow /root/shadow.txt

2、直接查找

# cd /usr/src/john-1.9.0/run/

# ./john /root/shadow.txt

#查看已经检测出来的用户有哪些

# ./john --show /root/shadow.txt

#可以手动将需要添加的密码手动写入其中,做实验使用

# vim password.lst

#还可以结合用户自己选择的字典文件匹配查看

# ./john --wordlist=./password.lst /root/shadow.txt

3.2 端口扫描-NMAP:

yum安装nmap

yum -y install nmap

nmap使用

NMAP的扫描语法

nmap [扫描类型] [选项] <扫描目标 ...>
常用的扫描类型

-sS,TCP SYN扫描(半开)

-sT,TCP 连接扫描(全开)

-sF,TCP FIN扫描

-sU,UDP扫描

-sP,ICMP扫描

-P0,跳过ping检测

nmap 127.0.0.1 #查看当前主机的TCP所有开放端口

nmap -sU 127.0.0.1 #查看当前主机的UDP所有开放端口

nmap -p 22 192.168.37.0/24 #查看192.168.37.0网段所有主机22端口的开放情况,ssh

nmap -n -sP 192.168.37.0/24 #检测192.168.37.0/24网段有哪些存活主机,-n 禁用反向解析

4.操作举例(帮助理解)


Linux系统安全及应用(账号权限管理、登录控制、弱口令、端口扫描)》 是转载文章,点击查看原文


相关推荐


算法竞赛中的数据结构:图
喜欢吃燃面2025/12/27

目录 一.图的基本概念1.图的定义2.图、树、线性表的联系与区别2.1 核心联系2.2 核心区别 二.图的分类1.按边的方向分类2.按边的权重分类3 .按顶点和边的数量分类4 .按连通性分类(针对无向图)5 .按强连通性分类(针对有向图)6 .其他特殊类型7.顶点的度(补充)8.路径及相关长度概念(补充)8.1 路径8.2 路径长度(无权图)8.3 带权路径长度(带权图)8.4 核心区别对比 三.邻接矩阵1.邻接矩阵【注意】 四.邻接表五.链式前向星


ZooKeeper+Kafka
吉良吉影1232025/12/18

目录 一、Zookeeper 1.1 Zookeeper 概述 1.2 Zookeeper 工作机制 1.3 ZooKeeper 特点 1.4 Zookeeper 数据结构 1.5 ZooKeeper 应用场景 1.6 Zookeeper 选举机制 1.6.1 第一次启动选举机制 1.6.2 非第一次启动选举机制 Leader 的作用 1. 处理所有写请求(核心职责) 2. 主导 Leader 选举 3. 管理集群数据同步 4. 维护集群状态 Follower


编程界 语言神 : 赶紧起来学 Rust 了!
Pomelo_刘金2025/12/10

大家对 Rust 的印象 没接触过的: 编程界语言神 整天重构这重构那 还要 要干掉 c++ ?! 稍微了解过的: 学习曲线: 但实际上是: 第一个高峰是 借用检查器,第二个是异步,第三个是unsafe,第四个是宏怎么玩? 开始接触之后 编译器不让我写代码,怎么写都报错 写 rust 代码像是在跟 rust 编译器谈对象 , 我只是传个参数,你跟我讲所有权、借用、生命周期?” 写的代码上线之后,还不错哦 “别的语言项目上线流程” 内容: 编译 ✔ 测试(偶尔挂一两条)✔ 上线后:半


LangChain 深入
吴佳浩2025/12/1

LangChain 深入 这里需要装什么包什么依赖 我就不再一一赘述了 大家可以先看上一篇 《Langchain 浅出》 那么如果出现缺失的依赖怎么办 ?简单 缺什么装什么 目录 1、Python 依赖安装 2、词工程最佳实践 3、性能优化技巧 4、常见问题与解决方案 5、调试和错误处理 6、生产环境最佳实践 想了想还是给补一份基础的依赖吧 ,至于为什么,我也不知道 但是我还是补上了 另外 本章篇幅比较密的代码示例需要个人花点时间理解和消化有问题可以在评论区交流 Python 依


绘制K线第二章:背景网格绘制
佛系打工仔2026/1/13

绘制K线第二章:背景网格绘制 在第一章的基础上,我们简单修饰一下,补充一个背景九宫格的绘制功能。这个功能可以让K线图更加清晰易读,帮助用户快速定位价格和时间。 二、网格配置 确定网格的行数和列数 在绘制网格之前,我们需要确定: 几行:将高度分成几等份(对应价格轴) 几列:将宽度分成几等份(对应时间轴) 例如:4列5行,表示宽度分成4等份,高度分成5等份。 在Config中配置 为了灵活配置网格,我们在 KLineConfig 中添加了两个字段: data class KLineConfig(


Python 线程局部存储:threading.local() 完全指南
哈里谢顿2026/1/21

一句话总结: threading.local() 是 Python 标准库提供的「线程局部存储(Thread Local Storage, TLS)」方案,让同一段代码在不同线程里拥有各自独立的变量空间,从而避免加锁,也避免了层层传参的狼狈。 1. 为什么需要线程局部存储? 在多线程环境下,如果多个线程共享同一个全局变量,就必须: 加锁 → 代码变复杂、性能下降; 或者层层传参 → 代码臃肿、可维护性差。 有些场景只想让线程各自持有一份副本,互不干扰: Web 服务:每个请求线程绑定自

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客