linux权限管理小游戏

这篇博客通过一个名为'警察和土匪'的游戏介绍了Linux权限管理。游戏涉及创建用户、组,以及权限的分配和变更。在'西游记'部分,博主模拟了角色之间的权限关系,并展示了如何通过权限控制文件访问。最后,提供了小练习,指导读者实践Linux目录和文件权限的设置。
摘要由CSDN通过智能技术生成

警察和土匪游戏

police, bandit
jack, jerry:警察
xh, xq:土匪
在这里插入图片描述
登录root

  1. 创建组
    groupadd police
    groupadd bandit
  2. 创建用户
    useradd -g police jack
    useradd -g police jerry
    useradd -g bandit xh
    useradd -g bandit xq
  3. jack创建一个文件 jack.txt,自己可以读写,本组人可以读,其它组没有任何权限
    登录jack
    vim jack.txt
    chmod 640 jack.txt
  4. jack修改该文件,让其它组人可以读,本组人可以读写
    chmod o+r,g+w jack.txt
  5. xh投靠警察
    登录root
    usermod -g police xh
  6. 测试,看看xh是否可以读写jack.txt
    登录xh
    在这里插入图片描述
    结论:不能,
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
好的,这是一个经典的Shell小游戏,你可以在Linux终端中玩五子棋。你可以按照以下步骤来进行游戏: 1. 创建一个空文件,例如"gobang.sh"。 2. 将以下代码复制并粘贴到文件中: ``` #!/bin/bash # 五子棋游戏 # 初始化棋盘 function init_board() { for ((i=0;i<15;i++)) do for ((j=0;j<15;j++)) do board[$i,$j]=0 done done } # 绘制棋盘 function draw_board() { echo -e "\033[1;33m 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14\033[0m" for ((i=0;i<15;i++)) do echo -e "\033[1;33m$i\033[0m\c" for ((j=0;j<15;j++)) do if [ ${board[$i,$j]} -eq 0 ]; then echo -e "\033[1;37m+\033[0m\c" elif [ ${board[$i,$j]} -eq 1 ]; then echo -e "\033[1;31m@\033[0m\c" else echo -e "\033[1;32m@\033[0m\c" fi if [ $j -eq 14 ]; then echo "" else echo -e "\033[1;37m|\033[0m\c" fi done done } # 判断是否胜利 function check_win() { # 横向 for ((i=0;i<15;i++)) do for ((j=0;j<11;j++)) do if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i,$j+1]} -a ${board[$i,$j+1]} -eq ${board[$i,$j+2]} -a ${board[$i,$j+2]} -eq ${board[$i,$j+3]} -a ${board[$i,$j+3]} -eq ${board[$i,$j+4]} ]; then if [ ${board[$i,$j]} -eq 1 ]; then echo "红方胜利!" else echo "绿方胜利!" fi exit 0 fi done done # 纵向 for ((i=0;i<11;i++)) do for ((j=0;j<15;j++)) do if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j]} -a ${board[$i+1,$j]} -eq ${board[$i+2,$j]} -a ${board[$i+2,$j]} -eq ${board[$i+3,$j]} -a ${board[$i+3,$j]} -eq ${board[$i+4,$j]} ]; then if [ ${board[$i,$j]} -eq 1 ]; then echo "红方胜利!" else echo "绿方胜利!" fi exit 0 fi done done # 斜向 for ((i=0;i<11;i++)) do for ((j=0;j<11;j++)) do if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j+1]} -a ${board[$i+1,$j+1]} -eq ${board[$i+2,$j+2]} -a ${board[$i+2,$j+2]} -eq ${board[$i+3,$j+3]} -a ${board[$i+3,$j+3]} -eq ${board[$i+4,$j+4]} ]; then if [ ${board[$i,$j]} -eq 1 ]; then echo "红方胜利!" else echo "绿方胜利!" fi exit 0 fi done done for ((i=0;i<11;i++)) do for ((j=14;j>=4;j--)) do if [ ${board[$i,$j]} -ne 0 -a ${board[$i,$j]} -eq ${board[$i+1,$j-1]} -a ${board[$i+1,$j-1]} -eq ${board[$i+2,$j-2]} -a ${board[$i+2,$j-2]} -eq ${board[$i+3,$j-3]} -a ${board[$i+3,$j-3]} -eq ${board[$i+4,$j-4]} ]; then if [ ${board[$i,$j]} -eq 1 ]; then echo "红方胜利!" else echo "绿方胜利!" fi exit 0 fi done done } # 主函数 function main() { init_board draw_board echo "游戏开始!" echo "红方先手,绿方后手。" turn=1 while true do if [ $turn -eq 1 ]; then echo "红方下棋:" else echo "绿方下棋:" fi read -p "请输入棋子坐标(x,y):" x y if [[ ! $x =~ ^[0-9]+$ ]] || [[ ! $y =~ ^[0-9]+$ ]]; then echo "输入不合法!" continue fi if [ $x -lt 0 -o $x -gt 14 -o $y -lt 0 -o $y -gt 14 ]; then echo "坐标超出范围!" continue fi if [ ${board[$x,$y]} -ne 0 ]; then echo "该位置已经有棋子了!" continue fi if [ $turn -eq 1 ]; then board[$x,$y]=1 turn=2 else board[$x,$y]=2 turn=1 fi draw_board check_win done } main ``` 3. 给文件添加执行权限: ``` chmod +x gobang.sh ``` 4. 运行游戏: ``` ./gobang.sh ``` 5. 按照提示下棋即可。红方为"@ ",绿方为"@"。当有一方连成五子线时,游戏结束。 祝你玩得愉快!
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值