警察与土匪游戏

#!/bin/bash
# ========================
# 警察和土匪游戏 - Linux 权限练习
# ========================
echo "=== 开始创建组和用户 ==="
# 1. 创建两个组:police 和 bandit
sudo groupadd police
sudo groupadd bandit
# 2. 创建用户 jack, jerry 属于 police 组;xh, xq 属于 bandit 组
sudo useradd -g police jack
sudo useradd -g police jerry
sudo useradd -g bandit xh
sudo useradd -g bandit xq
# 给用户设置密码,方便后续切换测试
echo "jack:123456" | sudo chpasswd
echo "jerry:123456" | sudo chpasswd
echo "xh:123456" | sudo chpasswd
echo "xq:123456" | sudo chpasswd
echo "=== 组和用户创建完成 ==="
# ========================
# jack 创建文件 123.txt,设置初始权限
# ========================
echo "=== jack 创建文件并设置权限 ==="
# 切换到 jack 用户创建文件
sudo -u jack bash -c 'touch /home/jack/123.txt'
# 设置权限:自己读写(rw-),本组人可读(r--),其他组无权限(---)
# 即:640 → rw-r-----
sudo chmod 640 /home/jack/123.txt
# 确保文件属主是 jack,属组是 police(因为 jack 的主组是 police)
sudo chown jack:police /home/jack/123.txt
echo "文件 /home/jack/123.txt 已创建,权限设为 640 (rw-r-----)"
# ========================
# jack 修改权限:让其它组人可以读,本组人可以读写
# ========================
echo "=== jack 修改权限:其他组可读,本组可读写 ==="
# 新权限:自己读写(rw-),本组读写(rw-),其他组只读(r--)
# 即:664 → rw-rw-r--
sudo chmod 664 /home/jack/123.txt
echo "权限已修改为 664 (rw-rw-r--)"
# ========================
# xh 投靠警察 —— 把 xh 加入 police 组
# ========================
echo "=== xh 投靠警察:加入 police 组 ==="
sudo usermod -aG police xh
echo "xh 已加入 police 组"
# ========================
# 测试 xh 是否能读写该文件
# ========================
echo "=== 测试 xh 是否能读写 /home/jack/123.txt ==="
# 尝试以 xh 身份读取文件
if sudo -u xh cat /home/jack/123.txt > /dev/null 2>&1; then
echo "✅ xh 可以读取文件"
else
echo "❌ xh 无法读取文件"
fi
# 尝试以 xh 身份写入文件
if sudo -u xh echo "test from xh" >> /home/jack/123.txt 2>/dev/null; then
echo "✅ xh 可以写入文件"
else
echo "❌ xh 无法写入文件"
fi
# ========================
# 如果无法读写,修改权限让 xh 可以读写
# ========================
echo "=== 若 xh 无法读写,则调整权限使其可读写 ==="