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校验所有者/权限/粘滞位是否生效
安全隐患(无密码/弱密码)设置初始密码+强制首次登录修改
无日志,排查困难结构化日志函数,输出时间戳和操作结果

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1194216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python自动化办公终极指南】:3步实现多个Word文档高效合并

第一章&#xff1a;Python自动化办公合并多个Word文档概述在现代办公环境中&#xff0c;处理大量 Word 文档是常见需求&#xff0c;尤其是需要将多个文档内容整合为一个统一文件的场景。手动复制粘贴不仅效率低下&#xff0c;还容易出错。Python 提供了强大的自动化能力&#x…

2026必备!MBA论文写作TOP10 AI工具测评

2026必备&#xff01;MBA论文写作TOP10 AI工具测评 2026年MBA论文写作AI工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着人工智能技术的持续发展&#xff0c;MBA学生在论文写作过程中对高效、专业工具的需求日益增长。从选题构思到文献综述&#xff0c;再到数据整理与格…

智能网联汽车测试工具领衔,AI与云计算标准重塑测试行业格局

在2026年初的科技浪潮中&#xff0c;测试工具领域迎来重大突破。近日&#xff0c;一场聚焦“智能网联汽车信息安全与软件升级”的测试工具发布会在上海隆重举行&#xff0c;由工业和信息化部批复成立的智能网联汽车软件检测中心主办。此次发布会不仅公布了GB44495-2024《汽车整…

2026 APF有源滤波器厂家推荐:四大品牌综合实力测评与选型指南

2026 APF有源滤波器行业背景与测评说明 2026年APF有源滤波器行业发展白皮书显示,随着新能源光伏/风电、工业4.0智能工厂及轨道交通的快速普及,非线性负载(如逆变器、电弧炉、VVVF变频器)引发的谐波超标、无功损耗问…

2026 年 1 月铝镁锰瓦厂家推荐排行榜:直立锁边/仿古/氟碳/金属板瓦,涵盖0.8mm至1.1mm及多种型号的铝镁锰合金屋面瓦实力甄选

2026年铝镁锰瓦行业深度解析与实力厂家甄选指南 随着现代建筑对功能性、美观性与可持续性要求的不断提升,金属屋面系统,特别是以铝镁锰合金为核心的屋面材料,正成为大型公共建筑、商业综合体及高端住宅项目的首选。…

Python异步编程十大最佳实践(附真实项目案例):让你的代码效率飙升

第一章&#xff1a;Python异步编程 async await 详解在现代高并发应用开发中&#xff0c;Python 的异步编程模型通过 async 和 await 关键字提供了高效的非阻塞 I/O 操作支持。该机制基于事件循环&#xff0c;允许程序在等待耗时操作&#xff08;如网络请求、文件读写&#xff…

2026企业战略指南原圈科技AI市场分析指南赢在2026的企业竞争实操

原圈科技AI市场分析指南&#xff0c;旨在帮助企业应对2026年商业挑战。本文将通过三步教程&#xff0c;详解如何构建全域信息采集网络与多维度智能分析系统&#xff0c;并驱动自动化营销策略生成&#xff0c;将AI洞察转化为持续市场优势&#xff0c;实现从降本增效到战略引领的…

Kubernetes集群节点扩容实战

Kubernetes集群节点扩容实战 1.1 部署目标 在Kubernetes集群中添加node节点及master节点 1.2 初始集群架构 参考基于kubeasz的k8s v1.34.x高可用集群部署部署一个单master,单Node的k8s集群节点类型 数量 功能 IPmaste…

2026年最被低估的岗位:AI测试策略师,你准备好了吗?

行业裂变中的价值重构 2026年软件测试领域正经历颠覆性变革。ISTQB白皮书显示传统自动化脚本岗位需求同比下降52%&#xff0c;而AI测试策略师岗位年增长率达120%。这种断层式增长背后&#xff0c;是AI系统复杂度指数级提升带来的质量保障范式转移——测试正从“执行验证”转向…

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

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

Python并发陷阱曝光:5种典型业务场景下线程与进程的正确打开方式

第一章&#xff1a;Python并发编程的现状与挑战 Python 作为一门强调可读性与开发效率的语言&#xff0c;在 Web 服务、数据处理和自动化脚本等场景中广泛使用。然而&#xff0c;其全局解释器锁&#xff08;GIL&#xff09;机制使得多线程无法真正并行执行 CPU 密集型任务&…

别再混淆了!merge与concat究竟有何不同,一文让你豁然开朗

第一章&#xff1a;别再混淆了&#xff01;merge与concat究竟有何不同&#xff0c;一文让你豁然开朗在数据处理中&#xff0c;merge 与 concat 是两个高频操作&#xff0c;但它们的用途和行为截然不同。理解二者差异&#xff0c;是高效使用 pandas 的关键。核心功能对比 concat…

全球市场调研:2026年旋转蒸发仪十大品牌排行榜及优质供应商推荐

一、行业背景与全球市场调研据中国报告大厅《2026-2031 年全球及中国旋转蒸发仪行业市场分析报告》显示,2026 年全球旋转蒸发仪市场规模已达 78.3 亿元,年复合增长率保持 8.6% 的高速增长,预计 2029 年将突破 90.55…

福州研究生留学机构top10揭秘!申请成功率高背后真相解析

福州研究生留学机构top10揭秘!申请成功率高背后真相解析一、福州研究生如何选择留学中介?信息不对称与成功率焦虑如何破解?作为从业八年的华南地区国际教育规划导师,笔者在日常咨询中接触到大量来自福州高校的学子…

linux audit入门使用

文章目录前言一、安装Audit&#xff1f;二、理解工作流程与核心工具三、核心使用&#xff08;三大工具&#xff09;1. auditctl&#xff1a;实时控制审计规则2. ausearch&#xff1a;查询审计日志3. aureport&#xff1a;生成汇总报告四、规则持久化&#xff08;关键步骤&#…

震惊故事:AI项目失败,我学到了什么?

作为一名资深软件测试工程师&#xff0c;我曾参与一个雄心勃勃的AI项目——一个医疗诊断系统&#xff0c;旨在通过图像识别技术自动检测癌症早期迹象。项目团队包括开发、数据科学和测试人员&#xff0c;我被任命为测试负责人。起初&#xff0c;我们信心满满&#xff1a;系统基…

从IP封禁到行为检测:揭秘现代反爬虫体系及应对方案

第一章&#xff1a;从IP封禁到行为检测&#xff1a;反爬虫技术演进全景随着网络数据价值的不断提升&#xff0c;网站对自动化爬取行为的防御手段也在持续升级。早期的反爬虫策略主要依赖简单的IP封禁机制&#xff0c;即当某一IP在短时间内发起大量请求时&#xff0c;服务器将其…

LeetCode 3314.构造最小位运算数组 I:今日先简单题简单做-到II再优化

【LetMeFly】3314.构造最小位运算数组 I&#xff1a;今日先简单题简单做-到II再优化 力扣题目链接&#xff1a;https://leetcode.cn/problems/construct-the-minimum-bitwise-array-i/ 给你一个长度为 n 的质数数组 nums 。你的任务是返回一个长度为 n 的数组 ans &#xff0…

从同步到异步的华丽转身:手把手教你重构代码实现百万级并发处理

第一章&#xff1a;从同步到异步&#xff1a;为何百万级并发离不开async/await在构建高并发服务时&#xff0c;传统同步编程模型很快会遭遇瓶颈。每个请求占用一个线程&#xff0c;而线程资源昂贵且数量受限&#xff0c;导致系统无法支撑大量同时连接。异步编程通过事件循环和非…

如何用Python在10分钟内成功调用Deepseek API?工程师都在偷偷看的教程

第一章&#xff1a;Python调用Deepseek API的核心准备 在使用 Python 调用 Deepseek 提供的 API 服务前&#xff0c;开发者需要完成一系列环境与权限配置工作。这些准备工作确保后续请求能够被正确发送并接收响应。 获取API密钥 访问 Deepseek 官方平台&#xff0c;在用户控制…