Linux综合基础测试

Linux综合基础测试

实验1:文件目录结构与基本命令操作

1、在/tmp目录下创建如下目录结构:

/tmp/test/
├── dir1/
│ ├── file1.txt
│ └── file2.txt
├── dir2/
│ └── subdir/
└── file3.txt

命令

mkdir -p /tmp/test/{dir1,dir2}		# -p 递归创建目录
mkdir /tmp/test/dir2/subdir/
touch /tmp/test/file3.txt
touch /tmp/test/dir1/{file1.txt,file2.txt} # 创建多个文件

image-20250802095920579

2、将dir1目录及其内容复制到dir2/subdir下

cp -r /tmp/test/dir1/ /tmp/test/dir2/subdir/	# -r 移动整个目录

image-20250802100115109

3、查找/tmp目录下所有.txt文件并显示详细信息

find /tmp -name "*.txt" -exec ls -l {} +		# 查找tmp目录下名为.txt的文件再使用 ls -l 命令查看详细信息

image-20250802100338398

4、将file3.txt移动到dir1目录并重命名为newfile.txt

mv /tmp/test/file3.txt /tmp/test/dir1/newfile.txt		# mv重命名文件

image-20250802100602437

实验2:用户与组管理

1、创建用户user1、user2和组group1

useradd user1		# 密码为123
useradd user2
groupadd group1

image-20250802101433065

2、将user1和user2加入group1组

usermod -aG group1 user1		# -aG 添加到附加组
usermod -aG group1 user2

image-20250802101733086

3、创建目录/shared,设置权限使group1组成员可以读写,其他人无权限

mkdir /shared
chown .group1 /shared/ # 修改属组为group1
chmod 770 /shared/ # 修改权限,属主rwx、属组rwx、其他没权限,创建文件需要w和x权限

image-20250802102748276

4、验证user1可以在/shared中创建文件,user3(非组成员)不能访问

su - user1
touch /shared/us1.txt

su - user3
touch /shared/us3.txt

image-20250802102857616

image-20250802103128025

实验3:权限管理(UGO)

1、创建文件/data/secret.txt,内容为”Top Secret”

mkdir /data
vim /data/secret.txt # vim 可以直接创建文件并修改

image-20250802103654748

2、设置权限:所有者root可读写,组admin可读,其他人无权限

groupadd admin
chown .admin /data/secret.txt # 修改文件属组为admin
chmod 640 /data/secret.txt # 修改权限,属主rw、属组r、其他没权限
ls -l /data/secret.txt

image-20250802103912342

3、创建用户testuser并尝试访问该文件验证权限

useradd testuser
su - testuser
cat /data/secret.txt # 查看secret.txt文件内容

image-20250802103958694

4、使用ACL添加testuser的读写权限

setfacl -m u:testuser:rw /data/secret.txt		# 为用户testuser添加读写权限

image-20250802104305671

实验4:SUID权限应用

1、创建脚本/usr/local/bin/showfile,内容为显示/etc/shadow文件内容

vim /usr/local/bin/showfile

image-20250802162509878

2、设置脚本所有者为root并添加SUID权限

chmod u+s /usr/local/bin/showfile

image-20250802162734358

3、使用普通用户执行该脚本验证权限提升

# 未添加执行权限
[root@wickt 桌面]# su - enterprise
[enterprise@wickt ~]$ /usr/local/bin/showfile

image-20250802162825063

# 添加执行权限
[root@wickt 桌面]# su - enterprise
[enterprise@wickt ~]$ /usr/local/bin/showfile

image-20250802163032881

[root@wickt 桌面]# su - enterprise 

[enterprise@wickt ~]$ /usr/local/bin/showfile
cat: /etc/shadow: 权限不够

[enterprise@wickt ~]$ cat /usr/local/bin/showfile
#!/bin/bash
cat /etc/shadow

[enterprise@wickt ~]$ ls -l /usr/local/bin/showfile
-rwsr-xr-x. 1 root root 28 8月 3 20:46 /usr/local/bin/showfile

###!!!Linux内核出于安全考虑,忽略脚本文件的SUID位

4、实验完成后移除SUID权限

# 未添加执行权限
chmod u-s /usr/local/bin/showfile

image-20250802163352983

###!!!Linux内核出于安全考虑,忽略脚本文件的SUID位

要求:对脚本内容进行注释

#showfile

echo '#!/bin/bash # #!/bin/bash 声明是bash脚本。以 #! 开头的脚本文件 set-uid/set-gid 位会被内核忽略
cat /etc/shadow' > /usr/local/bin/showfile # cat /etc/shadow 为实际执行的命令
# echo 将这两行文本写入 /usr/local/bin/showfile 文件中
chmod +x /usr/local/bin/showfile # +x 为所有用户添加x执行权限
#showfile

echo '#!/bin/bash
cat /etc/shadow' > /usr/local/bin/showfile
chmod +x /usr/local/bin/showfile

实验5:文件属性保护

1、创建重要配置文件/etc/important.conf

touch /etc/important.conf

image-20250802104848911

2、使用chattr命令防止文件被修改或删除

chattr +i /etc/important.conf		#  -i 文件不能被修改、删除、重命名

image-20250802105049825

3、尝试修改和删除文件验证保护效果

rm -rf /etc/important.conf				# 删除成文件
echo "test" > /etc/important.conf # 修改文件

image-20250802105147488

4、恢复文件正常属性

chattr -i /etc/important.conf		# 删除 i 属性

image-20250802105246093

实验6:sudo权限配置

1、创建用户admin和组sudoadmin

useradd admin
passwd admin
groupadd sudoadmin

image-20250802110115533

2、配置sudo使sudoadmin组成员可以执行所有命令无需密码

visudo
# 在sudoers文件末尾输入 %sudoadmin ALL=(ALL:ALL) ALL
# % 表示不是用户而是用户组,第一个 ALL 是规则对所有主机生效
# ALL:ALL 左侧 ALL 是以任何用户身份运行命令,右侧 ALL 是以任何用户组身份运行命令
# 最后一个 ALL 是可以运行任何命令

image-20250802110648626

3、将admin用户加入sudoadmin组

usermod -aG sudoadmin admin

image-20250802110449831

4、验证admin用户可以使用sudo执行特权命令

[root@wickt 桌面]# su - admin
[admin@wickt ~]$ sudo whoami

image-20250802110808490

实验7:综合权限管理

1、创建目录/project,属组为devteam

mkdir /project
groupadd devteam
chown .devteam /project # 修改目录属组

image-20250802112702722

2、设置权限:组成员可读写,其他人只读

chmod g+w,o-x /project			# 为组成员添加读权限,删除其他人的执行权限

image-20250802112624100

3、设置SGID权限使新建文件自动继承组权限

chmod g+s /project/

image-20250802174559676

4、创建用户dev1、dev2并加入devteam组

useradd dev1
useradd dev2
usermod -aG devteam dev1 # 将用户添加进特定用户组
usermod -aG devteam dev2

image-20250802112305890

5、验证dev1创建的文件dev2可以编辑

[root@wickt 桌面]# su - dev1
[dev1@wickt ~]$ touch /project/devshared.txt

[root@wickt 桌面]# su - dev2
[dev2@wickt ~]$ echo "test" > /project/devshared.txt # 在文件末尾追加一行
[dev2@wickt ~]$ cat /project/devshared.txt # 查看文件
test

image-20250802113020718

实验8:日志分析与安全审计

1、创建日志文件
将以下内容保存为 /var/log/application.log

2024-03-15 09:10:22 [INFO] User 'admin' authenticated from 192.168.1.100 (session: SESS-7X2G9P)
2024-03-15 09:11:05 [ERROR] Failed login attempt for user 'root' from 10.0.0.55 (reason: invalid password)
2024-03-15 09:12:33 [WARNING] High CPU usage detected (92%) on server-node-01
2024-03-15 09:13:17 [SECURITY] Sensitive file accessed: /etc/shadow by user 'backup'
2024-03-15 09:14:02 [DEBUG] API request: GET /api/v1/users?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
2024-03-15 09:15:48 [INFO] Payment processed: $250.00 via Credit Card (ref: PAY-8832)
2024-03-15 09:16:30 [ERROR] Database connection timeout (MySQL@10.0.0.100:3306)
2024-03-15 09:17:11 [ALERT] SSH brute force detected from 45.33.12.88 (15 attempts)
vim /var/log/application.log

image-20250802113322195

2、设置权限

chmod 640 /var/log/application.log
chown root:adm /var/log/application.log

image-20250802113526757

任务1.1:统计日志中所有错误事件的数量

grep -c "ERROR" /var/log/application.log

image-20250802113716622

任务1.2:提取所有包含IP地址的行(仅显示IP)

grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/application.log

image-20250802113943991

任务2.1:查看SECURITY事件及其前后1行内容

grep -C 1 "SECURITY" /var/log/application.log

image-20250802114053207

任务3.1:找出所有涉及金额的记录(含$符号)

grep "\$[0-9]*" /var/log/application.log

image-20250802114303846

扩展任务:提取金额数值并计算总和(自己借助AI写出)

grep -oP '\$\K[\d,]+(\.\d{2})?' /var/log/application.log | awk '{gsub(/,/, ""); sum+=$0} END {printf "$%.2f\n", sum}'
# -oP 使用 Perl 正则语法,只输出匹配部分
# \$\K 匹配 $ 符号但不保留在输出中,\K 表示"丢弃之前匹配的内容"
# [\d,]+ 匹配数字和逗号
# (\.\d{2})? 可选的小数部分
# gsub(/,/, "") 删除金额中的逗号
# sum+=$0 将数值累加到总和
# printf "$%.2f\n" 格式化输出带美元符号和两位小数

image-20250802171220206

时间范围统计:统计09:10-09:15期间的事件数量

grep -c "09:1[0-5]" /var/log/application.log

image-20250802114740260

任务4.1:检测潜在暴力破解行为

grep "Failed login\|brute force" /var/log/application.log		# 过滤有 Failed login 字段,或 brute force 字段的事件

image-20250802114828614

任务5.1:分析脚本文件生成安全事件报告

echo "安全事件报告" > report.txt		# 在 report.txt 文件中写入"安全事件报告"字段
date >> report.txt # 在 report.txt 文件中添加现在的时间
echo "=== 高风险事件 ===" >> report.txt # 在 report.txt 文件中添加"=== 高风险事件 ==="字段
grep -E "SECURITY|ALERT" /var/log/application.log >> report.txt # 过滤出带有 SECURITY 或 ALERT 字段的事件记录,并写入 report.txt 文件
echo "=== 异常IP列表 ===" >> report.txt # 在 report.txt 文件中添加"=== 异常IP列表 ==="字段
grep -Eo "([0-9]{1,3}\.){3}[0-9]{1,3}" /var/log/application.log | sort -u >> report.txt # 过滤出IP地址字段,使用 sort -u 排序并去重,并写入 report.txt 文件

image-20250802115039340

Author: wickt42
Link: http://example.com/2025/08/02/linux综合测试1/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.