第二周作业

目录

1. 总结linux安全模型

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

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

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

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

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

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

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

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

1)文本处理工具:nl、tac、paste

2)文件查找工具:head、tail、cut

3)文本处理三剑客:grep、sed、awk

4)文本格式化命令(printf)的相关命令及选项

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

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

1)变量命名规则

2)不同类型变量如何使用

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

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

1)for遍历1..1002)先id判断是否存在3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

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

head:磁头

track:磁道

sector:扇区

sylinder:柱面

10. 总结MBR,GPT结构。

MBR:

GPT:

11. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例

fdisk:

parted:

mkfs:

tune2fs:

xfs_info:用来查看xfs文件系统的具体信息。

fsck:

mount:

umount:

swapon:

swapoff:

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

13. 完成不影响业务对LVM磁盘扩容及缩容示例。


1. 总结linux安全模型

  • linux使用用户和组来控制使用者对文件的存储权限
  • 用户用账号和口令登录Linux
  • 每个文件都有拥有者,并让拥有者属于某个组
  • 每个程序都有拥有着和组

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

per(权限):r (读)、w(写)、 x(执行)

数字法

r--

100 :4

-w-

010 :2

--x

001 :1

root@test01:/data/a# chmod 760 e.txt
root@test01:/data/a# ll
total 12
drwxr-xr-x 2 root root 4096 Dec  3 14:59 ./
drwxr-xr-x 3 root root 4096 Dec  6 11:34 ../
-rw-r--rw- 1 root root    9 Dec  6 11:55 d.txt
-rwxrw---- 1 root root    0 Dec  3 14:50 e.txt*

s权限数字是独立的4

root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r--  1 root root    0 Dec  6 14:15 f.txt
root@test01:/data# chmod 4644 f.txt
root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rwSr--r--  1 root root    0 Dec  6 14:15 f.txt

粘滞位权限:作用在目录上,此目录中的文件只能由所有者自己来删除(root以外)

root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r--  1 root root    0 Dec  6 14:15 f.txt
root@test01:/data# chmod 1644 f.txt
root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r-T  1 root root    0 Dec  6 14:15 f.txt

设置权限,不能删除不能修改,只能读取(对所有用户,包括root)

root@test01:/data# chattr +i c.txt
root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 15:10 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
-rw-rw-rw-  1 root root    0 Dec  6 15:10 c.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r-T  1 root root    0 Dec  6 14:15 f.txt
root@test01:/data# rm c.txt
rm: cannot remove 'c.txt': Operation not permitted
root@test01:/data# mv c.txt cc.txt
mv: cannot move 'c.txt' to 'cc.txt': Operation not permitted
root@test01:/data# echo dsadj >> c.txt
bash: c.txt: Operation not permitted
root@test01:/data# cat c.txt
root@test01:/data# lsattr c.txt
----i---------e------- c.txt

#删除
root@test01:/data# chattr -i c.txt
root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 15:10 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
-rw-rw-rw-  1 root root    0 Dec  6 15:10 c.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r-T  1 root root    0 Dec  6 14:15 f.txt
root@test01:/data# rm c.txt
root@test01:/data# ll
total 12
drwxr-xr-x  3 root root 4096 Dec  6 15:18 ./
drwxr-xr-x 20 root root 4096 Dec  3 14:40 ../
lrwxrwxrwx  1 root root    5 Dec  6 13:54 aa.txt -> a.txt
----------  1 root root    0 Dec  6 13:54 a.txt
drw-r-xr--  2 root root 4096 Dec  6 14:15 f/
-rw-r--r-T  1 root root    0 Dec  6 14:15 f.txt

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

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

打开文件:vi +文件名

打开文件(命令模式)退出:

  1. 退出:q
  2. 保存退出:wq
  3. 强制退出:q!

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

打开文件:vi +文件名

进入插入模式:

  • i:在光标所在处插入
  • I:在当前光标所在的首行插入

  • a:append,在光标所在处后面插入

    A:在当前光标所在行的行尾插入

    o:在当前光标所在行的下方打开一个新行

    O:在当前光标所在行的上方打开一个新行

插入模式模式返回命令行模式:esc键加上冒号

命令模式之后退出文件:

  1. 退出:q
  2. 保存退出:wq
  3. 强制退出:q!

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

打开文件
[root@localhost ~]# vim /data/test.txt
冒号进入插入模式
输入:马哥出品,必属精品

插入模式模式返回命令行模式:esc键加上冒号

命令模式之后退出文件:wq

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

[root@localhost ~]# cat /data/test.txt
马哥出品,必属精品

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

^ :跳至行首的第一个非空白字符

0 :调制行首

$ : 跳至行尾

2G :跳至第二行

G :跳至最后一行

gg :跳至第一行

x:剪切光标所在的字符、

p:粘贴在光标的后面

r 3 :将光标所在的位置替换成三

R +要替换的内容 ;持续替换

/ +要查询的字符 :查询

u:撤回

ctrl + r :翻撤销

U:将所有修改全部撤销

y:复制

yy:复制整行

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

1)文本处理工具:nl、tac、paste

nl给文件表行号,相当于cat -b的作用

[root@localhost ~]# cat /data/test.txt
a
b
c
d
[root@localhost ~]# cat -b /data/test.txt
     1  a
     2  b
     3  c
     4  d
[root@localhost ~]# nl /data/test.txt
     1  a
     2  b
     3  c
     4  d

tac倒着显示文件内容

[root@localhost ~]# cat /data/test.txt
a
b
c
d
[root@localhost ~]# tac /data/test.txt
d
c
b
a

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

[root@localhost ~]# cat test.txt
a
b
c
[root@localhost ~]# cat test2.txt
xie:x:1000:1000:xie:/home/xie:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
[root@localhost ~]# paste test.txt test2.txt
a       xie:x:1000:1000:xie:/home/xie:/bin/bash
b       mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
c       postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

2)文件查找工具:head、tail、cut

 head显示文件前几行的内容

[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail显示文件后几行的内容

[root@localhost ~]# tail -n 2 /etc/passwd
xie:x:1000:1000:xie:/home/xie:/bin/bash
postgres:x:1001:1001::/home/postgres:/bin/bash

cut提取文本中的指定列

[root@localhost ~]# tail -n 2 /etc/passwd
xie:x:1000:1000:xie:/home/xie:/bin/bash
postgres:x:1001:1001::/home/postgres:/bin/bash
[root@localhost ~]# tail -n 2 /etc/passwd | cut -d ":" -f6
/home/xie
/home/postgres

3)文本处理三剑客:grep、sed、awk

4)文本格式化命令(printf)的相关命令及选项

可以实现格式化输出

FORMAT=格式

格式:printf "FORMAT", item1,item2...

  • 必须指定FORMAT
  • 不会自动换行,需要格式换行控制符\n
  • FORMAT中需要分别为后面每一个item指定格式符

格式符:与item对应

  1. %s:显示字符串
  2. %d,%i:显示十进制整数
  3. %f:显示为浮点数
  4. %e,%E:显示科学计数法数值
  5. %c:显示字符的ASCII码
  6. %g,%G:以科学计数法或浮点型形式显示数值
  7. %u:无符号整数
  8. %%:显示%自身
root@Ubuntu:~# awk -F":" '{printf "%s\n",$1}' /etc/passwd
root
daemon
bin

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


            字符匹配:
                . 匹配任意单个字符
                [] 匹配指定范围内的任意单个字符
                [^] 匹配范围之外的任意单个字符
                [:digit:] [:alpha:]
            匹配次数:用在要指定次数的字符后面,用于指定前面字符出现的次数
                * 匹配前面的字符任意次
                .* 任意长度的任意字符
                \? 匹配其前面的字符0或1次
                \+ 匹配其前面的字符至少一次
                \{m\} 匹配前面字符m次
                \{m,n\} 匹配前面的字符至少m次,至多n次
            位置锚定:
                ^ 行首锚定 用于模式的最左侧
                $ 行尾锚定 用于模式的最右侧
                ^模式$ 整行匹配模式
                ^$  空行
                \<  词首锚定 用于单词模式的左侧
                \>  词尾锚定 用于单词右侧
                \<模式\>  匹配整个单词

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

1)变量命名规则

  • 区分大小写
  • 不能使用程序中的保留字和内置变量:if,while
  • 只能用数字字母下划线组成,不能以数字开头
  • 用英文单词命名,并体现出实际作用,不要用简写
  • 变量名大写
  • 局部变量小写
  • 函数名小写

2)不同类型变量如何使用

环境变量:系统配置文件中使用

位置变量:在脚本代码中调用命令行递给脚本参数

只读变量:只能用来读,不能其值

局部变量:在某个特定范围内使用,超出范围则无效

状态变量:能够完全描述动态系统时域行为的所含变量个数最少的变量组

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

[root@localhost ~]# cat rabbit_chicken.sh
#!/bin/bash
read -p "请输入头的总数量:" HEDA
read -p "请输入脚的总数量:" FOOT

RABBIT=$[FOOT/2-HEAD]
CHICKEN=$[HEAD-RABBIT]

echo "兔子有:"$RABBIT
echo "鸡有:"$CHICKEN


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


1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。

#!/bin/bash
for i in {1..100}; do
        grep "user$i" /etc/passwd &> /dev/null
        if[ $? -ne 0 ];then
                useradd user$i &> /dev/null
                echo "用户创建成功:user"$i
        else
                echo "用户创建失败,用户已存在:user"$i
done


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

head:磁头

track:磁道

sector:扇区

sylinder:柱面


10. 总结MBR,GPT结构。

MBR:

使用MBR分区表时,分区分为主分区、扩展分区、逻辑分区,三种类型。

1、主分区的总数,不能超过4个。就是说,一个硬盘,最多可以被划分为4个主分区。

  2、如果划分扩展分区,那么,一个硬盘只能有一个扩展分区,且主分区与扩展分区的分区数目之和不能超过4个,就是说,一个硬盘,最多可以被划分为3个主分区与1个扩展分区。

  3、在扩展分区中创建逻辑分区的数目没有限制,只要需要,可以创建任意多个逻辑分区。事实上,是微软公司在MBR分区表中引入扩展分区与逻辑分区的概念,目的就是要突破MBR最多只能划分四个主分区的限制。

4、任何分区,包括主分区、扩展分区、逻辑分区,分区的大小,都不能超过2TB,这是一条使得MBR分区表不能很好的处理大容量硬盘的限制。

  5、任何分区,其起始地址,不能位于硬盘物理地址2TB之后,实际情况是,不仅是起始地址,结束地址在硬盘物理地址2TB之后的分区,也会导致很多严重的问题。这条限制直接宣告MBR不适合于管理超过2TB的大容量硬盘。

  6、UEFI对MBR分区表支持不好,UEFI是新一代的BIOS,现在的新电脑,不论是台式机还是笔记本,都开始支持UEFI了。UEFI的内容可以点击:BIOS终结者,UEFI是什么?UEFI详解!

GPT:

1、GPT分区表,没有扩展分区与逻辑分区的概念,所有分区都是主分区。

  2、GPT分区表,一个物理硬盘,在Windows下最多可以划分出128个分区,应该是足够用了。

  3、GPT分区表,每个分区的最大容量是18EB(1EB = 1024PB = 1,048,576TB),这么大,不用考虑硬盘容量太大的问题了。

  4、GPT分区表,与使用UEFI的新计算机配合的非常好,但使用BIOS的老机器,会出一些问题,不建议使用。

  5、GPT分区表对新的Windows操作系统,比如Windows 7、8、10,都支持的非常好,但只支持64位的Windows XP。


11. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例


fdisk:

root@Ubuntu:~# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

parted:

root@Ubuntu:~# parted /dev/sdb mkpart primary 1 300
Information: You may need to update /etc/fstab.

root@Ubuntu:~# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  300MB  299MB  primary
root@Ubuntu:~# parted /dev/sdb mkpart primary 301 500
Information: You may need to update /etc/fstab.

root@Ubuntu:~# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  300MB  299MB  primary
 2      301MB   500MB  199MB  primary

mkfs:

root@Ubuntu:~# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 76800 4k blocks and 76800 inodes
Filesystem UUID: ed687ce3-956e-4283-8479-884a3b75206d
Superblock backups stored on blocks:
        32768

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

tune2fs:

#查看块的属性信息
root@Ubuntu:~# tune2fs -l /dev/sdb1

xfs_info:用来查看xfs文件系统的具体信息。

fs_info [挂载点] | [设备文件名]

fsck:

#修复文件系统
fsck /dev/sdb1 -y

mount:

#挂载
root@Ubuntu:~# mount /dev/sdb1 /data/mysql

umount:

#取消挂载
umount /data/mysql

swapon:

#查看设备名
[root@Rocky ~]# swapon -s
Filename                                Type            Size            Used            Priority
/dev/dm-1                               partition       2113532         512             -2

swapoff:

#禁用
[root@Rocky ~]# swapoff /dev/dm-1


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

RAID级别区别 :0,1,5,6

  1. 磁盘能利用率
  2. 最少几块硬盘实现
  3. 容错性,防止几块硬盘损坏
  4. 性能好坏

13. 完成不影响业务对LVM磁盘扩容及缩容示例。

扩容

root@Ubuntu:~# lvextend -r -l +100%free /dev/testvg0/lv-mysql
  Size of logical volume testvg0/lv-mysql changed from 6.00 GiB (384 extents) to <14.97 GiB (958 extents).
  Logical volume testvg0/lv-mysql successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/testvg0-lv--mysql is mounted on /data/mysql; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/testvg0-lv--mysql is now 3923968 (4k) blocks long.

root@Ubuntu:~# df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              389M  1.6M  388M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   97G  8.0G   85G   9% /
tmpfs                              1.9G     0  1.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  247M  1.6G  14% /boot
tmpfs                              389M  4.0K  389M   1% /run/user/0
/dev/mapper/testvg0-lv--mysql       15G   24K   14G   1% /data/mysql

缩容

root@Ubuntu:~# umount /data/mysql
root@Ubuntu:~# lvreduce -L 8G -r /dev/testvg0/lv-mysql
fsck from util-linux 2.37.2
/dev/mapper/testvg0-lv--mysql: 11/983040 files (0.0% non-contiguous), 85760/3923968 blocks
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/mapper/testvg0-lv--mysql to 2097152 (4k) blocks.
The filesystem on /dev/mapper/testvg0-lv--mysql is now 2097152 (4k) blocks long.

  Size of logical volume testvg0/lv-mysql changed from <14.97 GiB (958 extents) to 8.00 GiB (512 extents).
  Logical volume testvg0/lv-mysql successfully resized.

root@Ubuntu:~# mount /dev/testvg0/lv-mysql /data/mysql
root@Ubuntu:~# df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              389M  1.6M  388M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   97G  8.0G   85G   9% /
tmpfs                              1.9G     0  1.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  247M  1.6G  14% /boot
tmpfs                              389M  4.0K  389M   1% /run/user/0
/dev/mapper/testvg0-lv--mysql      7.8G   24K  7.5G   1% /data/mysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值