第二周作业:权限管理及文本编辑工具&正则表达式和相关工具及文件查找压缩&shell编程基础第&磁盘和存储管理

1. 总结linux安全模型

资源分派:

Authentication:认证,验证用户身份

Authorization:授权,不同的用户设置不同权限

Accouting|Audition:审计

当用户登录成功时,系统会自动分配令牌 token,包括:用户标识和组成员等信息

2. 总结学过的权限,属性及ACL相关命令及选项,示例。

每个文件针对每类访问者都定义了三种常用权限:

  • r Readable 4

  • w Writable 2

  • x eXcutable 1

对文件的权限:

  • r 可使用文件查看类工具,比如:cat,可以获取其内容

  • w 可修改其内容,文件的是否被删除和文件的权限无关

  • x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

文件权限常见组合:

  • --- 0

  • r 4

  • r-x 5

  • rw 6

  • rwx 7

对目录的权限:

  • r 可以使用ls查看此目录中文件名列表,但无法看到文件的属性meta信息,包括inode号,不能查看文件的内容

  • w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关

  • x 可以cd进入此目录,可以使用ls -l file或stat file 查看此目录中指定文件的元数据,当预先知道文件名称时,也可以查看文件的内容,属于目录的可访问的最小权限

  • X 分配给目录或有部分x权限的文件的x权限,对无任意x权限的文件则不会分配x权限

目录权限常见组合:

  • - 不能访问目录

  • r-x 只读目录

  • rwx 可读也可写目录

新建文件和目录的默认权限:

umask 的值可以用来保留在创建文件权限

实现方式:

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

##执行权限对文件是一个安全风险;基于安全考虑新建文件默认是没有执行权限的。(这是为什么奇数要加1的原因)

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

root的umask 默认是 022

Linux文件系统上的特殊权限

  • SUID 作用于二进制可执行文件上,用户将继承此程序所有者的权限

  • SGID 作用于二进制可执行文件上,用户将继承此程序所有组的权限; 作于于目录上, 此目录中新建的文件的所属组将自动从此目录继承

  • STICKY 作用于目录上,此目录中的文件只能由所有者自已来删除

修改文件权限chmod:

格式
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
#参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION]... --reference=RFILE FILE...
说明: 模式法格式
MODE:who opt permission
who:u,g,o,a 
opt:+,-,=
permission:r,w,x
修改指定一类用户的所有权限
u=  g= o= ug=  a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R: 递归修改权限

文件所有者和属组属性操作:

chown 命令可以修改文件的属主,也可以修改文件属组

格式
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
用法说明:
OWNER   #只修改所有者
OWNER:GROUP #同时修改所有者和属组
:GROUP   #只修改属组,冒号也可用 . 替换
--reference=RFILE  #参考指定的的属性,来修改   
-R #递归,此选项慎用,非常危险!

chgrp 命令可以只修改文件的属组:

格式 
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE... 
-R 递归

ACL访问控制列表:

setfacl 可设置ACL权限

getfacl 可查看设置的ACL权限

4. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。

  • cat 可以查看文本内容

格式:
cat [OPTION]... [FILE]...
常见选项
-E:显示行结束符$
-A:显示所有控制符
-n:对显示出的每一行进行编号
-b:非空行编号
-s:压缩连续的空行成一行
  • nl 显示行号,相当于cat -b

  • tac 逆向显示文本内容

  • rev 将同一行的内容逆向显示

  • hexdump 查看非文本文件内容

  • 分页查看文件内容 less & more

more可以实现分页查看文件,可以配合管道实现输出信息的分页

格式:more [OPTIONS...] FILE... 选项:-d: 显示翻页及退出提示

less 也可以实现分页查看文件或STDIN输出,less 命令是man命令使用的分页器

查看时有用的命令包括:/文本 搜索 文本 或 n/N 跳到下一个 或 上一个匹配

显示文本前面或后面的行内容

  • head 可以显示文件或标准输入的前面行

格式:head [OPTION]... [FILE]...

选项:

-c # 指定获取前#字节

-n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前

-# 同上

  • tail 查看文件或标准输入的倒数行

格式:tail [OPTION]... [FILE]...
常用选项:
-c # 指定获取后#字节
-n # 指定获取后#行,如果#是负数,表示从第#行开始到文件结束
-# 同上
-f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新建同名文件,将无法继续跟踪文件
-F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件
tailf 类似 tail –f,当文件不增长时并不访问文件,节约资源,CentOS8已经无此工具
  • cut 命令可以提取文本文件或STDIN数据的指定列

  • paste 合并多个文件同行号的列到一行

  • 文本处理三剑客

grep 命令主要对文本的(正则表达式)行基于模式进行过滤
sed:stream editor,文本编辑工具
awk:Linux上的实现gawk,文本报告生成器
  • printf 可以实现格式化输出

格式:
printf “FORMAT”, item1, item2, ...
修饰符:
#[.#] 第一个数字控制显示的宽度;第二个#表示小数点后精度,如:%3.1f
- 左对齐(默认右对齐) 如:%-15s
+   显示数值的正负符号   如:%+d

5. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的

模式:由正则表达式字符及文本字符所编写的过滤条件

格式:grep [OPTIONS] PATTERN [FILE...]

常见选项:
--color=auto 对匹配到的文本着色显示
-m  # 匹配#次后停止
-v 显示不被pattern匹配到的行,即取反
-i 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # after, 后#行
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
-w 匹配整个单词
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-P 支持Perl格式的正则表达式
-f file 根据模式文件处理
-r   递归目录,但不处理软链接
-R   递归目录,但处理软链接

扩展正则表达式 grep -e

字符匹配

. 任意单个字符
[wang] 指定范围的字符
[^wang] 不在指定范围的字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
[:digit:] 十进制数字
[:xdigit:]十六进制数字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 标点符号

次数匹配

*   匹配前面字符任意次
? 0或1次
+ 1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次

位置锚定

^ 行首
$ 行尾
\<, \b 语首
\>, \b 语尾

分组其它

() 分组
后向引用:\1, \2, ... 注意: \0 表示正则表达式匹配的所有字符
| 或者
a|b #a或b
C|cat #C或cat
(C|c)at #Cat或cat

6. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。

  1. 环境变量

可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

一旦子进程修改从父进程继承的变量,将会新的值传递给孙子进程

一般只在系统配置文件中使用,在脚本中较少使用

变量声明和赋值:

#声明并赋值
export name=VALUE
declare -x name=VALUE
#或者分两步实现
name=VALUE
export name

变量引用:$name 或 ${name} 建议使用后者,避免引用产生歧义二出错。

删除变量:unset name

  1. 只读变量:只能声明定义,但后续不能修改和删除,即常量

声明只读变量:

  • readonly name

  • declare -r name

查看只读变量:

  • readonly [-p]

  • declare -r

  1. 位置变量:在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数

$1, $2, ... 对应第1个、第2个等参数,shift [n]换位置
$0 命令本身,包括路径
$* 传递给脚本的所有参数,全部参数合为一个字符串
$@ 传递给脚本的所有参数,每个参数为独立字符串
$# 传递给脚本的参数的个数
注意:$@ $* 只在被双引号包起来的时候才会有差异

清空所有位置变量:set --

  1. 局部变量

局部变量是指函数内部定义并使用的变量,它只在函数内部有效。每个函数在执行时,系统都会为该函数分配一块“临时内存空间”,所有的局部变量都被保存在其中。当函数执行完成之后,该空间被释放,局部变量也就失效了,因此离开函数之后就不能再访问局部变量了

  1. 状态变量

进程执行后,将使用变量 $? 保存状态码的相关数字,不同的值反应成功或失败,$?取值范例 0-255

$?的值为0 #代表成功

$?的值是1到255 #代表失败

7. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

[root@localhost ~]# cat rc.sh 
#!/bin/bash
#
#********************************************************************
#Author:            godot
#QQ:                 1026077133
#Date:                 2023-03-09
#FileName:            rc.sh
#URL:                 www.neteagles.cn
#Description:        The test script
#Copyright (C):     2023 All rights reserved
#********************************************************************
HEAD=$1
FOOT=$2

RABBIT=$(((FOOT-HEAD-HEAD)/2))
CHOOK=$[HEAD-CHOOK]
echo RABBIT:$RABBIT
echo CHOOK:$CHOOK

[root@localhost ~]# . rc.sh 30 80
#$1, $2, ... 对应第1个、第2个等参数,shift [n]换位置
RABBIT:10
CHOOK:30

8. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,

  • 1) for遍历1..100

  • 2)先id判断是否存在

  • 3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

9. 磁盘存储术语总结: head, track, sector, Cylinder.

head:磁头 磁头数=盘面数

track:磁道 磁道=柱面数

sector:扇区,512bytes

cylinder:柱面 1柱面=512 * sector数/track*head数=512*63*255=7.84M

12. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值