马哥sre云计算运维第2次作业
·
一、用户和用户组管理
- linux是多用户多任务的操作系统,由于多个用户使用同一个操作系统,必然就涉及用户的添加、删除、修改等操作,同样的也会涉及相对应的权限分配问题。
- 在linux中,一切都是文件。
- 用户和用户组的主要配置文件:
- /etc/passwd 存储着用户及属性信息(名称、UID、主组ID等)
root:x:0:0:Super User:/root:/bin/bash- root–用户名, x–密码位,0–用户id, 0–用户组id,Super User–注释信息,/root–家目录, /bin/bas–登录成功后的命令解释器。
- 登录用/bin/bash, 禁止登录用/usr/bin/nologin
- /etc/shadow:用户密码及相关属性,以分号隔开。
nihao:$y$j9T$5OyrOXKEFHYPpKbfpecGw.$v9J9Q4tTBE2uTQNqtDv2W3A8OLYIg/kIBLIaTxxtcT9:20545:0:99999:7:::- 第一列:用户名, 第二列:密码值(密文)。
- /etc/group: 存储组及属性信息
- ```nihao❌1001:``
- nihao–组名, x–组密码, 1001–组标识,最后一列–组内用户列表。
- /etc/gshadow 存储着组密码及相关属性
nihao:!::- nihao – 组名,! – 没有设置有效密码,第三列–这里为空,表示该组没有指定的管理员,第四列–这里为空,表示该组除了初始用户外,没有其他附加成
- /etc/passwd 存储着用户及属性信息(名称、UID、主组ID等)
用户
- 在Linux中每个用户,是通过 User Id (UID)来唯一标识的。
- 用户的分类:
- 管理员:root, 0
- 普通用户:1-60000 自动分配
- 系统用户:对守护进程获取资源进行权限分配
- 1-999 (CentOS 7以后)
- 登录用户:给用户进行交互式登录使用
- 1000+(CentOS7以后)
- 系统用户:对守护进程获取资源进行权限分配
- 关于用户的命令:
命令 作用 参数以及作用 示例 useradd 创建用户 -u|–uid UID #指定UID, -g|–gid GID #指定用户组,-m|–create-home #创建家目录,一般用于登录用户,-p|–password PASSWORD #设置密码,这里用的是明文,useradd -s 创建用户并指定shell useradd -m userdel 删除用户 userdel -r: 加上 -r 参数,它可以直接删除对应的家目录和邮箱。不然的话删的不干净。-f|–force #强制删除,哪怕用户正在登录状 userdel -r nihao passwd 更改用户密码 在rhel系列里面有 --stdin 参数,可以直接使用标准输入作为passwd的输入 cho “123456” chpasswd 批量更改用户密码的工具 chpasswd < file, echo “用户名:密码” | chpasswd echo “zhangsan:123456” id 查看用户的基本信息 -a #显示详细信息,默认选项,-Z|–context #仅显示安全上下文信息,-n|–name #显示用户名或组名,要组合使用 -nu|-ng|-n, -g|–group #仅显示GID,就是只显示主组ID, -u|–user #仅显示UID id -ng nihao getent 查询用户信息、组信息或网络配置 getent root
用户组
- 在Linux系统中,为了方便批量对一个或多个用户进行快捷的操作,我们一般会将用户加入用户组中,通过对用户组的操作,从而实现对普通用户的属性的批量操作能力。
- 用户组是通过Group ID(GID) 来唯一标识的。
- 用户组分类:
- 管理员组:root, 0
- 普通用户组:
- 系统用户:对守护进程获取资源进行权限分配。
- 1-999(CentOS7以后)
- 普通用户:给用户使用
- 1000+(CentOS7以后)
- 系统用户:对守护进程获取资源进行权限分配。
- 用户的主要组(primary group)
- 用户必须属于一个且只有一个主组
- 默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组.
- 而如果在创建用的时候,指定一个现有的组加入,那么就不会自动创建同名的用户组。
- 用户的附加组(supplementary group):
- 一个用户可以属于零个或多个辅助组,附属组。
- 关于用户组的成员管理
- 自动创建用户和用户组,默认情况下,该组的成员自己不显示。
- 关于用户组的命令:
命令 作用 参数以及作用 示例 groupadd 创建用户组 -g|–gid GID #新建组时指定组ID,默认是系统分配 groupadd -g num groupmod 修改用户组属性 -g|–gid GID #将组 ID 改为 GID, -n|–new-name NEW_GROUP #改名为 NEW_GROUP,-p|–password PASSWORD #将密码更改为(加密过的) PASSWORD groupmod -g 10086 group4 groupdel 删除用户组 -f|–force #强制删除 groupdel -f nihao
二、上下文 – Context
- 程序所处的环境
- 在 Linux 中,安全上下文就像是给系统里的 “人”(进程)和 “东西”(文件、目录)都发了张 “身份卡”。
- 对于进程(运行的程序)来说,这张 “身份卡” 规定了它能干啥、不能干啥,就像保安会根据身份卡决定让不让你进某些地方。
- 普通用户程序和管理员程序的 “身份卡” 不同,权限也不一样。
- 对于文件和目录,“身份卡” 决定了谁能碰它、能怎么碰(读、写、改)。重要文件的 “身份卡” 限制很多,只有特定身份的进程才能动
- rhel系列os:rhel,centos,rocky,openeuler…
- 使用的是selinux
- 管理比较紧,限制比较多。
- 查看状态: getentforce
- 临时关闭:setentforce 0
- 永久关闭:去 /etc/selinux/config 里面把 SELINUX=disabled
- 使用的是selinux
- debian 系列
- debian, ubuntu, xx
- 使用的是apparmor
- 管理比较松,限制比较少
三、权限操作:
-
Linux系统下的文件权限体系是控制对文件和目录访问权限的重要机制,它决定了谁可以读取、修改或执行文件。这一体系是Linux系统安全性和数据保护的基础。
-
在linux系统中,文件的权限,主要体现在两个方面:文件属性、操作权限。

-
我创建的文件的归属
- 所有者:user
- 归属组:group
- 其他人: other
-
文件归属:

-
数字标识:
- r:4, w:2,x:1
- rwx=7, r-x=6,r-x=5,—=0
-
默认权限
- linux系统在创建文件的时候,会有一个默认的权限。
- 普通文件的权限是 644,普通目录文件的权限是755。
- 在Linux系统中,文件创建时的默认权限与umask(用户文件创建掩码)相关
- 权限的算法:顶格的权限 - 掩码
- 掩码查看: umask
-
权限相关命令。
命令 作用 参数以及作用 示例 chown 修改文件的属主,也可以修改文件属组 -R 递归操 [OPTION]… [OWNER][:[GROUP]] FILE…, owner 表示所有者,:group 和 .group 表示归属组,owner. 和 owner: 表示所有者和归属组一样 chmod 修改文件的操作权限 -R 递归操作 + 增加某些权限,- 删除某些权限,= 只保留某些权限,覆盖写法, chmod 005 -R /chown/dir1/ -
特殊权限

- SUID:
- 任何一个普通用户,在使用具有SUID权限的 命令 的时候,都会临时具有root的身份(比如 /usr/bin/passwd)。
- 能够让一个普通用户,临时具有root身份的能力。
- 比较危险,能不用就不用。
- SGID:
- 如果在xx目录,组权限里面包含了SGID权限,那么无论谁在xx目录下创建的文件,它的属组都是目录的权限组。
- Stickbit 粘滞位
- 如果一个目录拥有stickbit 权限,那么谁在这个目录下创建的权限,只能自己管理[删|改].
- 以上对root无用。
- SUID:
四、vim
- 关于内容检索 — 可以被箭头替代。
- 关于内容变化 — 可以被sed命令替代。
- 需要学习的内容。
- 编辑文件的模式变化
- 查看文件的快捷属性
- 全局的配置文件,让文件更好看一点。
- 常用编辑内容的快捷键。
- 在vim中,光标虽然是占了一个字符,但可以把它看成是一个插入在字符左侧的竖线。
- 进入编辑模式
- i 编辑的时候,在光标指的字符前面插入。
- a 编辑的时候,在光标所指的字符的后面插入,追加。
- o 编辑的时候,在光标所指的字符的下一行,插入,空行开头。
- O 编辑的时候,在光标所指的字符的上一行,插入,空行开头。
- I 编辑的时候,在光标所指的字符的行首插入
- A 编辑的时候,在光标所指的字符的行尾插入。
- w 编辑的时候,定位到下一个字符的首部。
- e 编辑的时候,定位到下一个字符的尾部。
- b 编辑的时候,定位到上一个字符的首部
- 定位内容,未编辑模式下
- 查找内容
- /关键字 向下查找
- ?关键字 向上查找
- n 与命令同方向 往下查找
- N 与命令反方向 往上查找
- 定位:
- 行首部 shit + 6 ^
- 行尾部 shift + 4 &
- 跳转到行首(不带空格) 0
- 指定行 :数字
- 首行 gg
- 尾行 G
- 查找内容
- 定位完毕后,整体编辑.未编辑状态
- dd 光标所在行
- 2dd 删除2行[包括光标所在行]
- u 撤销刚才的动作。
- uuuuuu… 连续撤销,直到未编辑状态。
- ctrl+r 撤销掉撤销,相当于windows中的ctrl + y
- yy 复制光标所在行
- 6yy 复制6行[包括光标所在行]
- p 如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至光标所在处的后面。
- P 大P,如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至光标所在处的前面。
- x 剪切当前字符
- X 剪切前一个字符
- 4pp 将复制的内容粘贴4次。
- dG 删除,光标所在行到尾行
- dgg 删除,光标所在行到首行
- d$ 删除, 光标到行尾[包括光标所在字符]
- d^ 删除,光标到行首[不包括光标所在字符]
- 整体编辑,命令行模式下。
- 6;+4 d 第6行 + 4行 删除
- 6,8 d 第6,7,8行删除
- ,9 d 光标所在行,到第9行删除
- ,$ d 光标所在行,到行尾删除
- w filename 写文件内容到当前文件中,可以配合范围的来搞。
- r filename 将文件内容读取到当前文件中。
- t行号 将前面指定的行复制到N行后
- m行号 将前面指定的行移动到N行后。
- 选择范围:
- % 代表全文
- 替换操作:
- 范围 s/源内容/替换后内容/g
- s是行,如果不写其他则认为是当前行。
- g表示:所有匹配到的源内容,g不写,代表的是每行的第一个匹配到的原内容
- / 可以替换成 # 或者@,免得有/在目标字符里。
- i 忽略大小写
- gc 全局替换,每次替换前询问。
- 范围 s/源内容/替换后内容/g
- 全文替换
- % s/源内容/替换后内容/g
- 行1, 行2 s/源内容/替换后内容/g
- 分块操作
- 选择范围:
- ctrl + v, 然后方向箭头 左右
- 操作:
- 删除 delete
- 插入:
- shift + i
- 输入内容
- Esc [部分OS,有可能需要两次ESC]
- 选择范围:
五、三剑客
- grep
-
命令 作用 参数以及作用 示例 grep 信息过滤 -n:显示行号,-i:不区分大小写,-r:逐层遍历目录查找,-v:查找不包含指定内容的行,反向选择,-E:使用拓展正则匹配 grep -n a.txt - grep -nir: 在当前目录或指定目录下,递归搜索所有文件,查找包含某个特定字符串的行,忽略大小写,并显示匹配行的行号和所在文件名。
- grep -E 也是 egrep
- grep -E '关键字a|关键字b;
-
- sed:
-
命令 作用 参数以及作用 示例 sed 内容编辑 -n:不输出模式空间内容到屏幕,即不自动打印所有内容,-e:基于命令对实现文件的多点编辑操作,-i:对文件进行边界 sed -i ‘操作’ a.txt 

-
- awk:
-
命令 作用 参数以及作用 示例 awk 内容格式输出 -F:指定列的分隔符,默认一行数据的列分割符是空格,-f 指定读取程序的文件名 awk -F:“:” ‘{print $1,$4} a.txt’ - awk 本质是一种编程语言,内部提供了很多环境变量,可以直接拿过来用。
- NF – 每一行有多少列,列的总数
- FS – 输入时候的列分隔符
- awk -v FS=“:” ‘{print $7}’ passwd
- OFS – 输出时候的列分隔符
- awk -F":" -v OFS=“--------” ‘{print $7,$1}’ passwd
- 0 为一整行, 0 为一整行, 0为一整行,(NF-1)倒数第二列。
- {print 打印动作进阶}
- 多内容打印,使用逗号隔开 $1,$4
- 如果输出的列分隔符不想用空格
- 方法1:OFS=“xxx” 全局更改
- 方法2:{$1"分隔符"$4} 临时使用拼接
- 行号打印
- NR – 代表当前行的行号
- awk -F":" -v OFS=“--------” ‘{print NR,$7,$1}’ passwd
- NR – 代表当前行的行号
- ‘范围条件{print}’
- /关键字/ 确定所在行
- awk ‘/awk5/{print NR,$1,$3}’ awk.txt
- 行号 确定所在行
- NR==2
- awk ‘NR==2{print NR,$1,$3}’ awk.txt
- /关键字/ 确定所在行
- 多内容打印,使用逗号隔开 $1,$4
- 格式显示:
- BEGIN{}:读入第一行文本之前执行的语句,一般用来初始化操作。
- {}:逐行处理的执行命令
- END{}:处理完最后以行文本后执行,一般用来处理输出的结果。
-
六、正则表达式

-
基本正则表达式(BRE)
- 与拓展正则表达式的主要区别在于元字符是否需要转义,以及支持的功能范围。
- 基本正则表达式元字符需要用 \转移才能作为元字符使用。还是使用拓展正则表达式吧,太麻烦了。
- grep(默认),sed(默认)
-
扩展正则表达式(ERE)
- grep -E, sed -r/-E、awk、egrep
-
字符匹配
-
- 匹配任意单个字符,包含中文
- [] 匹配指定范围内的单个字符
- [shuiji]、[0-9]、[a-z]、[a-zA-Z]
- [^] 匹配指定范围外的任意单个字符
- [^shuiji]
- | 匹配管道符左侧或者右侧的内容。
-
-
锚定匹配:
- 主要是在字符匹配的前提下,增加了字符位置的匹配。
- ^ 行首锚定,用于模式的最左侧
- $ 行尾锚定,用于模式的最右侧
- ^PATTERN$, 用于匹配整行
- ^$ 空行
- 1*$ 空白行
- \< 或 \b 词首锚定,用于单词模式的左侧
- \> 或 \b 词尾锚定,用于单词模式的右侧
- \<PATTERN\>, 匹配整个单词
- 单词是由字母,数字,下划线组成。
-
分组符号:
- 当我们使用正则模式匹配到的内容有很多项的时候,默认会全部输出。如果我们仅仅需要特定顺序的一个匹配内容的话,就用到我们这一节的知识点 – 分组。
- 所谓的分组,其实指的是将我们正则匹配到的内容放到一个()里面
- 每一个匹配的内容都会在一个独立的()范围中
- 按照匹配的先后顺序,为每个()划分编号
- 第一个()里的内容,用 \1代替,第二个()里的内容,用\2代替,依次类推
- \0 代表正则表达式匹配到的所有内容
- 注意:
- () 范围中支持|等字符匹配内容。从而匹配更多范围的信息
- 关于()信息的分组提取依赖于文件的编辑工具,我们可以借助于 sed、awk功能来实现
- 提示: sed -r ‘s/原内容/修改后内容/’
- 示例:
- (M|m)any 可以标识 Many 或者 many
-
通配符和正则
- 正则表达式用来在文件中匹配符合条件的字符串,主要的目的是包含匹配。
- grep、awk、sed等命令可以支持正则表达式
- 通配符用来匹配符合条件的文件名那,通配符是完全匹配。
- -ls、find、cp之类命令不支持正则表达式,可以借助shell通配符来进行匹配。
- .: 匹配任意一个字符
- *: 匹配任意内容
- ?: 匹配任意一个内容
- []: 匹配括号中的一个字符。
- -ls、find、cp之类命令不支持正则表达式,可以借助shell通配符来进行匹配。
- 正则表达式用来在文件中匹配符合条件的字符串,主要的目的是包含匹配。
七、文件管理
- 只要涉及文件数据信息的命令查看,用以下的样式
- 数据源 | 命令 cat 文件 | grep xxx
- 命令 数据源 grep xxx 文件
- cut命令
命令 作用 参数以及作用 示例 cut 提取文本文件或STDIN数据的指定列 -c:只选中指定的这些字符, -d: 使用指定分界符代替制表符作为区域分界, -f:提取文本中指定的列 cut -f1 test.txt - tr命令
命令 作用 参数以及作用 示例 tr 字符转换、替换、删 -d 删除指定字符 echo “this-2026-Job” | tr -d ‘0-9’ - sort 命令
-
命令 作用 参数以及作用 示例 sort 将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出 -u: 去除重复行, -r:降序排列,默认是升序,-n:以数字排序,默认是按字符排序。 sort -r at.xt - tip:只要是涉及xxx信息统计排序的场景,用下面的方法进行统计
- 信息来源 | sort | uniq -c | sort -r
-
- 文件查找命令 – 查找普通文件
- 查找很久以前的文件 – 离线查找 local
- local 就相当于一个图书馆,对文件的路径属性进行登记造册。
- 将新的文件更新上去 updatedb.
- 删掉的文件也是updateda 更新一下。
- local 就相当于一个图书馆,对文件的路径属性进行登记造册。
- 实时在线查找文件 – find
-
命令 作用 参数以及作用 示例 find 实时在线查找文件 -name:按文件名查找,-type:按文件类型查找,-size:按文件大小查找, -time:按天数查找文件最后修改时间 find -name a.txt -
如果不写路径,就默认在当前路径查找。如果写了路径,就按照路径来查找。
-
文件大小属性解读。
-
文件时间解读。
-
进阶动作解读 :
-
- 关于find常使用的命令样式
- find 路径 -name “文件名关键字”
- find -name “关键字” | xargs linux命令
- find -name “关键字” exec linux命令 ;
- 查找很久以前的文件 – 离线查找 local
[:space:] ↩︎
更多推荐



所有评论(0)