第二周作业

1. 总结linux安全模型

        通过认证、授权、审计实现资源分配;

        用户:linux 中每个用户是通过UserID来唯一标识的;

        用户组:Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID) 来唯一标识的。

        用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组

         用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组

         Linux安全上下文:运行中的程序,即进程,以进程发起者的身份运行,进程所能访问资源的权限取决于进程的运行者身份

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

        权限:r读 w写 x执行,针对控制普通用户

        修改文件所有者:chown 修改为 文件

        修改文件所有组:chgrp

        ll命令文件权限顺序:用户 组 其他

        修改文件权限(分配权限:u\g\o\a;操作:+-=;权限:r w x):

        chmod o+w a.txt(模式法)

        r=4 w=2 x=1

        chmod 760 a.txt(数字法,wrx rw- ---)

        注意:创建删除文件权限为目录写执行权限控制

        对目录下文件夹给予执行权限,文件不给予:chmod -R a+X /data

        新建默认权限(root的umask默认022,其他默认002)修改:通过umask的值

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

        目录:777-umask=默认

        持久保存umask

        全局设置(所有用户):/etc/bashrc

        用户设置(当前用户):-/.bashrc

        特殊权限

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

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

        Sticky (粘滞位):作用于目录,此目录中的文件只能由所有者自己来删除,1

        ACL:实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

        设置ACL规则(针对单一用户或组设置):setfacl -m修改 u:用户名:权限 文件,常用选项如下:

                -m:设置后续的ACL参数给文件使用,不可与-x一起使用;

                -x:删除后续的ACL参数,不可与-m一起使用;

                -b:删除所有的ACL设置参数;

                -k:删除默认的ACL参数;

                -R:递归设置ACL,就是包括子目录都会被应用;

                -d:设置默认ACL参数,只对目录有效,在该目录新建的数据会引用此默认值;

        查看设置的ACL规则:getfacl 文件名 ;

3. 结合vim几种模式,学会使用vim几个常见操作。

1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。

        打开文件:vim /文件路径/文件名

        退出文件:命令模式下,ZZ为保存退出,ZQ为不保存退出。或使用命令行模式退出,冒号为进入命令行模式,如下:
                :wq         -保存文件,退出 vim
                :wq!        -强制保存文件,退出 vim
                :q            -不保存文件,退出 vim
                :q!           -不保存文件,强制退出 vim
                :x            -保存文件,退出 vim

2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

        打开文件后,输入i进入插入模式,在插入模式esc回到命令模式,退出文件方式参照上一问题。
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

        步骤同上述两个问题,在插入模式时输入"马哥出品,必属精品",esc回到命令模式,:wq!强制保存退出。

        
4)使用cat命令验证文件内容,是刚刚自己写的内容。


5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。

        字符间:h左l右j下k上(前可以输数字,代表移动几个字符)

        单词间:w下一个单词词首e当前或下一单词词尾b当前或上一单词词首(前可以输数字,代表移动几个单词)

         句间移动:)下一句(上一句

         复制整行:Y或者yy

        删除光标所在行:dd

         粘贴命令:P 缓冲区存的如果是整行,则粘贴当前光标所在行的上方,否则,则粘贴到当前光标所在处的前面;p 缓冲区存的如果是整行,则粘贴当前光标所在行的下方,否则,则粘贴到当前光标所在处的后面

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

        1.文件内容查看命令

查看文本文件内容:cat

        -A 显示不显示字符

        -n 带行号,空行也有行号

        -b 带行号,空行不加行号

        -s 压缩连续的空行成一行

        -E 显示行结束符

显示行号:nl(相当于cat -b)

行逆向显示文本内容:tac

逆向显示文本内容(同一行):rev

查看非文本文件内容:hexdump

        2.分页查看文件内容(可通过管道配合)

more(退出时ctrl+b;到底退出)

less(到底不退出)ls 文件(目录) |less

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

显示文件或标准输入的前面行(默认前十行):head -n # 文件

显示文件或标准输入的后面行(默认后十行):tail - n # 文件

        4.按列抽取文本

截取部分列显示:cut 例:cut -d: -f1,3 文件路径,其中:为分隔符,取文件中第一列,第三列

        5.合并多个文件(横向合并)

paste -d: a.txt b.txt(:作为分隔符将a\b分开)

paste -s(将纵向输出改为横向输出)

纵向合并:cat a.txt b.txt

        6.分析文本工具

文本数据统计:wc(行 列 词数)

整理文本:sort(默认首字母排序,-t 指定分隔符,-n认为是数字,-k#第几列,-r倒序,-R随机排序,-u合并重复项)

文件内部去重(相邻):uniq(-c 重复了几次,-d仅显示重复的行,-u仅显示不重复的)

比较文件:diff(显示不一样的部分,-u更为详细)

patch -b(复制在其他文件中进行的改变)

vimdiff(相当于vim -d)

cmp(比较二进制文件的不同)

        7.文件查找工具

find 路径 -选项 [ -显示 ]   (目录结构中)

grep  (过滤,查找文件里符合条件的字符串)

        -a : 不要忽略二进制的数据。
        -A<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
        -b : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
        -B<显示行数>: 除了显示符合样式的那一行之外,并显示该行之前的内容。
        -c 或 : 计算符合样式的列数。
        -C<显示行数> =<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
        -d <动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
        -e<范本样式>  : 指定字符串做为查找文件内容的样式。
        -E 或: 将样式为延伸的正则表达式来使用。
        -f<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
        -F : 将样式视为固定字符串的列表。
        -G : 将样式视为普通的表示法来使用。
        -h  : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
        -H  : 在显示符合样式的那一行之前,表示该行所属的文件名称。
        -i  : 忽略字符大小写的差别。
        -l : 列出文件内容符合指定的样式的文件名称。
        -L  : 列出文件内容不符合指定的样式的文件名称。
        -n  : 在显示符合样式的那一行之前,标示出该行的列数编号。
        -o  : 只显示匹配PATTERN 部分。
        -q : 不显示任何信息。
        -r  : 此参数的效果和指定"-d recurse"参数相同。
        -s  : 不显示错误信息。
        -v  : 显示不包含匹配文本的所有行。
        -V  : 显示版本信息。
        -w  : 只显示全字符合的列。
        -x : 只显示全列符合的列。
        -y : 此参数的效果和指定"-i"参数相同。

        8.文件处理命令

sed [选项] ‘处理动作’ 文件 (利用脚本来处理文本文件)

        -e<script>:以选项中指定的script来处理输入的文本文件。
        -f<script文件> :以选项中指定的script文件来处理输入的文本文件。
        -i:直接修改文件内容(危险操作)
        -h:显示帮助。
        -n:仅显示script处理后的结果。
        -V: 显示版本信息。

        8.文本分析工具

awk

-F :指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v :赋值一个用户定义变量。
-f :从脚本文件中读取awk命令。
-mf:对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

        9.文本格式化

printf [选项] 输出格式 [参数]

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

基本正则表达式的元字符

         字符匹配:

            .: 匹配任意单个字符

            []: 匹配指定范围内的任意单个字符

            [0-9], [[:digit:]]:指包含数字字符

            [a-z], [[:lower:]]:指包含小写字符

            [A-Z], [[:upper:]]:指包含大写字符

            [[:space:]]:指空白字符

            [[:punct:]]:指特殊字符 标点符号等 

            [[:alpha:]]:指包含所有的大小写字符

            [[:alnum:]]:指包含所有的大小写字符和数字字符

            [^]:匹配一个不在指定范围内的字符

       次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

                *: 任意长度,它前面的字符可以出现任意次

                \?:  0次或1次,它前面的字符是可有可无的

                \{m\}: m次,它前的字符要出现m次

                \{m,n\}: 至少m次,至多n次

                \{m,\}: 至少m次

        位置锚定:

                ^:行首锚定:指写在模式最左侧

                $:行尾锚定:指写在模式最右侧

                ^$:指空白行

不包含特殊字符的连续字符组成的串叫单词:

                \<:词首,出现于单词左侧,\b

                \>:词尾,出现于单词右侧, \b

        分组引用: 

               :分组

               \#:  引用第n个 括号所匹配到的内容,而非模式本身

扩展正则表达式的元字符

         字符匹配:

            .: 匹配任意单个字符

            []: 匹配指定范围内的任意单个字符

            [0-9], [[:digit:]]:指包含数字字符

            [a-z], [[:lower:]]:指包含小写字符

            [A-Z], [[:upper:]]:指包含大写字符

            [[:space:]]:指空白字符

            [[:punct:]]:指特殊字符 标点符号等 

            [[:alpha:]]:指包含所有的大小写字符

            [[:alnum:]]:指包含所有的大小写字符和数字字符

            [^]:匹配一个不在指定范围内的字符

      次数匹配元字符:用于实现指定其前面的字符所能够出现的次数

 *: 任意长度,它前面的字符可以出现任意次

             \?:  0次或1次,它前面的字符是可有可无的

              \{m\}: m次,它前的字符要出现m次

             \{m,n\}: 至少m次,至多n次

             \{m,\}: 至少m次

     位置锚定:

            ^:行首锚定:指写在模式最左侧

            $:行尾锚定:指写在模式最右侧

            ^$:^$,^[[:space:]]*$ 指空白行

不包含特殊字符的连续字符组成的串叫单词:

            \<:词首,出现于单词左侧\b

            \>:词尾,出现于单词右侧\b

        分组引用: 

               :分组

               \#:  引用第n个 括号所匹配到的内容,而非模式本身

       或者:

                |:表示或者


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

#!/bin/bash
read -p "请输入头的数量:" head
read -p "请输入脚的数量:" foot
rabbit=$[(foot-head-head)/2]
chicken=$[head-rabbit]
echo "笼中有鸡$chicken只,有兔子$rabbit只。"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值