news 2026/4/25 15:12:14

20260121人工智能作业v1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20260121人工智能作业v1

文章目录

    • 一、原操作逐步骤深度详解
      • 1. 创建用户组 dev_team
        • 核心详解:
      • 2. 创建用户 alice,指定主组为 dev_team
        • 核心详解:
      • 3. 创建用户 bob,指定主组为 dev_team
        • 核心详解:
      • 4. 创建 /opt/project 目录
        • 核心详解:
      • 5. 修改 /opt/project 的所有者和所属组
        • 核心详解:
      • 6. 配置 /opt/project 权限为 750
        • 核心详解:
      • 7. 为 /opt/project 添加粘滞位
        • 核心详解:
    • 二、优化后的生产级脚本
      • 核心优化点:
      • 脚本使用说明:
    • 三、核心知识点与优化总结
      • 1. 核心知识点回顾
      • 2. 优化点总结

你希望对创建dev_team用户组、alice/bob用户,以及/opt/project目录权限配置(含粘滞位)的7个Shell操作进行深度详解,并优化为更健壮、规范的生产级脚本。以下是逐步骤的底层原理解析,以及包含错误处理、校验、安全考量的优化方案。

一、原操作逐步骤深度详解

1. 创建用户组 dev_team

groupadddev_team
核心详解:
  • 命令作用:在系统中新增名为dev_team的用户组,底层会修改两个核心文件:
    • /etc/group:存储组的公开信息(格式:组名:密码占位符:GID:组成员);
    • /etc/gshadow:存储组的加密密码(无密码时为!,表示禁止组密码登录)。
  • 关键细节
    • GID(组ID)自动分配:默认从1000开始(系统组<1000),可通过-g指定固定GID(如groupadd -g 1001 dev_team);
    • 潜在问题:若dev_team已存在,执行该命令会直接报错(groupadd: group 'dev_team' already exists),生产环境需先校验。

2. 创建用户 alice,指定主组为 dev_team

useradd-g dev_team alice
核心详解:
  • 原注释修正-u是笔误,useradd-g参数才是指定主组-u是指定UID);
  • 命令作用:创建用户alice,并将其主组直接设为dev_team(默认不指定-g时,会自动创建与用户名同名的alice组作为主组);
  • 底层修改
    • /etc/passwd:新增行(格式:alice:x:1001:1001::/home/alice:/bin/bash),其中1001是alice的UID和dev_team的GID;
    • /etc/shadow:新增alice的密码占位符(默认无密码,无法登录,需用passwd alice设置密码);
  • 关键细节
    • -g指定的组必须已存在(否则报错);
    • 默认创建家目录/home/alice,需确保/home目录存在(否则家目录创建失败);
    • 登录Shell默认是/bin/bash,可通过-s指定(如-s /bin/zsh)。

3. 创建用户 bob,指定主组为 dev_team

useradd-g dev_team bob
核心详解:
  • 与alice创建逻辑完全一致,核心目的是确保bobalice同属dev_team主组,后续共享/opt/project目录的组权限;
  • 补充:若需将用户添加到附加组(而非主组),用-G参数(如useradd -G dev_team bob,主组仍为bob,附加组为dev_team)。

4. 创建 /opt/project 目录

mkdir-p /opt/project
核心详解:
  • -p参数核心价值:递归创建父目录,若/opt不存在则先创建/opt,再创建/opt/project;若目录已存在,无报错(避免重复执行脚本时中断);
  • 默认权限:创建的目录所有者为执行命令的用户(如root),所属组为执行用户的主组(如root),默认权限为755rwxr-xr-x)。

5. 修改 /opt/project 的所有者和所属组

chownalice:dev_team /opt/project
核心详解:
  • chown语法chown [所有者]:[所属组] 路径(冒号分隔,也可用.分隔,如alice.dev_team,但冒号更通用);
  • 权限要求:仅root或目录的当前所有者有权执行chown(普通用户只能修改自己拥有的文件的所属组,且需是该组成员);
  • 关键细节
    • 仅改所有者:chown alice /opt/project
    • 仅改所属组:chown :dev_team /opt/project(或chgrp dev_team /opt/project);
    • 递归修改(目录下有子文件/目录):chown -R alice:dev_team /opt/project(本例目录刚创建,无需递归,但需知晓)。

6. 配置 /opt/project 权限为 750

chmod750/opt/project
核心详解:
  • 八进制权限解析750对应符号权限rwxr-x---,拆解如下:
    权限范围八进制值符号权限具体含义
    所有者(alice)7rwx读(4)+ 写(2)+ 执行(1)
    所属组(dev_team)5r-x读(4)+ 执行(1)
    其他用户0无任何权限
  • 目录执行权限(x)的关键:目录的x权限是“进入目录”的前提——即使有r权限,无x也无法cd进入或ls列出目录内容;
  • 更易读的符号写法chmod u=rwx,g=rx,o= /opt/project(生产环境推荐,可读性更高)。

7. 为 /opt/project 添加粘滞位

chmod+t /opt/project
核心详解:
  • 粘滞位(Sticky Bit):仅对目录有效,添加后目录权限位最后一位变为t(替代原x位),即750 + t→ 八进制1750,符号权限rwxr-x--t
  • 核心规则(解决的问题)
    • 无粘滞位时:dev_team组的成员(如bob)可删除/改名/opt/project任意文件(即使是alice创建的);
    • 有粘滞位时:仅文件所有者目录所有者(alice)root能删除/改名该目录下的文件(bob只能删除自己创建的文件);
  • 典型应用:系统/tmp目录默认权限1777rwxrwxrwt),所有用户可创建文件,但只能删除自己的文件;
  • 八进制写法chmod 1750 /opt/project(直接指定粘滞位+基础权限,更精准);
  • 移除粘滞位chmod -t /opt/project

二、优化后的生产级脚本

核心优化点:

  1. 增加存在性校验(组、用户、目录),避免重复创建报错;
  2. 开启严格模式set -euo pipefail),异常时脚本立即终止;
  3. 增加日志输出,明确每一步操作结果;
  4. 补充安全设置(用户密码、家目录权限);
  5. 使用符号权限写法,提升可读性;
  6. 校验操作结果,确保配置生效。
#!/bin/bash# 生产级脚本:创建dev_team组、alice/bob用户,配置/opt/project目录权限# 严格模式:错误立即退出、未定义变量报错、管道错误检测set-euo pipefail# 配置项(集中管理,便于修改)GROUP_NAME="dev_team"USERS=("alice""bob")TARGET_DIR="/opt/project"DIR_PERM="u=rwx,g=rx,o="# 等价于750STICKY_BIT=true# 是否添加粘滞位# 日志函数(结构化输出)log(){localLEVEL=$1localMSG=$2echo"[$(date+'%Y-%m-%d %H:%M:%S')] [$LEVEL]$MSG"}# 1. 创建用户组(先校验是否存在)log"INFO""开始创建用户组:$GROUP_NAME"ifgetent group"$GROUP_NAME"&>/dev/null;thenlog"WARN""用户组$GROUP_NAME已存在,跳过创建"elsegroupadd"$GROUP_NAME"log"INFO""用户组$GROUP_NAME创建成功(GID:$(getent group $GROUP_NAME|cut-d: -f3))"fi# 2. 创建用户并指定主组(批量处理)log"INFO""开始创建用户:${USERS[*]}"forUSERin"${USERS[@]}";do# 校验用户是否存在ifid-u"$USER"&>/dev/null;thenlog"WARN""用户$USER已存在,跳过创建"continuefi# 创建用户:指定主组、家目录、登录Shelluseradd-g"$GROUP_NAME"-d"/home/$USER"-s"/bin/bash""$USER"# 设置初始密码(生产环境建议注释,改为手动设置)echo"$USER:Dev@123456"|chpasswd# 强制用户首次登录修改密码passwd-e"$USER"# 配置家目录权限(仅所有者可访问)chmod700"/home/$USER"log"INFO""用户$USER创建成功(UID:$(id-u$USER)),初始密码:Dev@123456(首次登录需修改)"done# 3. 创建目标目录(-p确保父目录存在)log"INFO""开始创建目录:$TARGET_DIR"mkdir-p"$TARGET_DIR"log"INFO""目录$TARGET_DIR创建/确认成功"# 4. 修改目录所有者和所属组log"INFO""设置$TARGET_DIR所有者:alice,所属组:$GROUP_NAME"chownalice:"$GROUP_NAME""$TARGET_DIR"# 校验所有者/所属组是否生效ACTUAL_OWNER=$(stat-c"%U""$TARGET_DIR")ACTUAL_GROUP=$(stat-c"%G""$TARGET_DIR")if["$ACTUAL_OWNER"="alice"]&&["$ACTUAL_GROUP"="$GROUP_NAME"];thenlog"INFO""所有者/所属组配置生效"elselog"ERROR""所有者/所属组配置失败,实际:$ACTUAL_OWNER:$ACTUAL_GROUP"exit1fi# 5. 配置目录基础权限log"INFO""设置$TARGET_DIR基础权限:$DIR_PERM(等价于750)"chmod"$DIR_PERM""$TARGET_DIR"# 6. 添加粘滞位(可选)if["$STICKY_BIT"=true];thenlog"INFO""为$TARGET_DIR添加粘滞位"chmod+t"$TARGET_DIR"# 校验粘滞位是否生效ifstat-c"%a""$TARGET_DIR"|grep-q"^1";thenlog"INFO""粘滞位添加成功,最终权限:$(stat-c"%A""$TARGET_DIR")"elselog"ERROR""粘滞位添加失败"exit1fifi# 最终校验:列出目录权限信息log"INFO""所有配置完成!$TARGET_DIR最终权限信息:"ls-ld"$TARGET_DIR"log"INFO""脚本执行完毕"

脚本使用说明:

  1. 执行权限:需root运行(sudo bash script.sh);
  2. 密码设置:脚本中默认设置初始密码Dev@123456,并强制首次登录修改(生产环境建议注释该部分,改为手动设置密码);
  3. 可配置项:顶部GROUP_NAME/USERS/TARGET_DIR等变量可按需修改;
  4. 日志输出:每一步操作有时间戳和级别(INFO/WARN/ERROR),便于排查问题。

三、核心知识点与优化总结

1. 核心知识点回顾

  • 用户/组核心文件/etc/passwd(用户信息)、/etc/group(组信息)、/etc/shadow(用户密码)、/etc/gshadow(组密码);
  • 权限核心:目录必须有x权限才能进入;750权限确保“所有者可读写执行、组成员可读写执行?不,750是所有者rwx,组成员rx,其他无”;
  • 粘滞位核心:解决“同组用户误删他人文件”问题,仅文件所有者/目录所有者/root可删除文件;
  • chown/chmodchown改所有者/组(仅root),chmod改权限(所有者/root可改)。

2. 优化点总结

原操作问题优化方案
无存在性校验,重复执行报错getent group/id -u校验组/用户是否存在
无错误处理,异常静默失败开启set -euo pipefail严格模式
权限写法不直观用符号权限(u=rwx,g=rx,o=)替代八进制
无配置校验stat校验所有者/权限/粘滞位是否生效
安全隐患(无密码/弱密码)设置初始密码+强制首次登录修改
无日志,排查困难结构化日志函数,输出时间戳和操作结果

该优化脚本兼顾了健壮性(错误处理、校验)、安全性(密码策略、权限控制)和可维护性(集中配置、日志输出),完全适配生产环境的使用要求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 12:16:22

【开题答辩全过程】以 基于python的校园志愿服务管理系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/21 13:38:49

2026 AI MARKET ANALYSIS原圈科技AI市场分析终极榜单不懂AI竞品分析将落后!

原圈科技在AI市场分析领域表现突出&#xff0c;其智慧营销智能体矩阵被视为高净值行业的"AI营销大脑"。本文将为你揭晓2026年AI市场分析平台TOP榜单&#xff0c;并深入探讨原圈科技如何凭借在数据深度、运营闭环和私域安全方面的绝对优势&#xff0c;帮助企业实现智能…

作者头像 李华
网站建设 2026/4/25 4:36:17

别再瞎用threading了!3类CPU密集型任务必须切换到多进程的铁证

第一章&#xff1a;Python多线程与多进程的核心差异Python的并发编程模型中&#xff0c;多线程&#xff08;threading&#xff09;与多进程&#xff08;multiprocessing&#xff09;虽目标相似——提升程序执行效率&#xff0c;但其底层机制、适用场景和行为表现存在本质区别。…

作者头像 李华
网站建设 2026/4/21 16:41:08

必读感悟:软件测试中的心理健康挑战

软件测试与心理健康的隐形纽带 在快速迭代的软件开发世界中&#xff0c;软件测试作为质量保障的核心环节&#xff0c;常常被喻为“系统的守门人”。然而&#xff0c;测试从业者面临的心理健康挑战却鲜少被关注。高强度的工作节奏、重复性任务的压力以及角色边缘化的现实&#…

作者头像 李华
网站建设 2026/4/25 14:00:42

‌开发者心声:工作与生活的平衡艺术

当测试成为生活的主旋律‌ 作为一名软件测试工程师&#xff0c;我们的工作往往被误解为“找bug的工匠”&#xff0c;实则肩负着产品质量的守护者角色。在敏捷开发的时代&#xff0c;测试周期压缩、持续集成&#xff08;CI/CD&#xff09;流程的加速&#xff0c;让加班成为常态…

作者头像 李华
网站建设 2026/4/25 18:21:17

揭秘Python操作PostgreSQL数据库:5个步骤快速上手并避免常见陷阱

第一章&#xff1a;Python连接PostgreSQL数据库概述在现代Web开发和数据处理中&#xff0c;Python因其简洁的语法和强大的生态被广泛用于与关系型数据库交互。PostgreSQL作为功能丰富、可靠性高的开源对象-关系型数据库系统&#xff0c;常与Python配合使用&#xff0c;实现高效…

作者头像 李华