Linux安全模型、常见的权限属性及ACL、VIM、文本处理查找等工具、简单shell编程、RAID0、1、5、10、10

一、Linux安全模型

通过3A(认证、授权、审计)实现资源分配,登陆成功后系统会自动分配一个令牌token,包含用户标识和组成员等信息。

1、用户:linux中每个用户是通过UID来唯一标识的

1、管理员:root,0
2、普通用户:1-60000自动分配
	系统用户:(centos6之前)1-499,(centos7)1-999
	登录用户:(centos6之前)500+,(centos7)1000+

2、用户组:linux中可以将一个或多个用户加入用户组中,用户组是通过GID来唯一标识的

1、管理员组:root,0
2、普通组:
	系统组:(centos6之前)1-499,(centos7)1-999
	普通组:(centos6之前)500+,(centos7)1000+

3、用户和组之间的关系

1、用户和主要组:用户必须属于一个组且只有一个主组,默认创建用户时会自动创建一个与创建用户同名的组,作为用户的主要组,由于此组只有一个用户,即又称为私有组。
2、用户的附加组:一个用户可以属于零个或多个附属组。

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

二、Linux常见的权限,属性及ACL

1、常用权限
权限

r--(4)读		--x	(2)执行		-w- (1)写
*r、w权限对root账户无效
*只要所有者、所属组、其他用户三者之一有x权限,root就可以执行

2、属性包括:所有者(u)、所属组(g)、其他(o)

 修改文件权限:
 	chmod [OPTION]... MODE[,MODE]... FILE...
 	chmod [OPTION]... OCTAL-MODE FILE...

1、给A.txt文件添加满权限

[root@Rocky8 ~]# touch A.txt
[root@Rocky8 ~]# ll A.txt
-rw-r--r--. 1 root root 0 Apr 20 15:01 A.txt
[root@Rocky8 ~]# chmod 777 A.txt
[root@Rocky8 ~]# ll A.txt
-rwxrwxrwx. 1 root root 0 Apr 20 15:01 A.txt

2、A.txt添加所有者执行权限

[root@Rocky8 ~]# ll A.txt
-rw-r--r--. 1 root root 0 Apr 20 15:01 A.txt
[root@Rocky8 ~]# chmod u+x A.txt
[root@Rocky8 ~]# ll A.txt
-rwxr--r--. 1 root root 0 Apr 20 15:01 A.txt

3、访问控制列表ACL
ACL除了文件的所有者、所属组和其他用户,可以设置更多的用户权限。

setfacl 可设置ACL权限
getfacl 可查看设置的ACL权限

[root@Rocky8 ~]# ll A.txt
-rw-r--r--. 1 root root 0 Apr 20 15:01 A.txt
[root@Rocky8 ~]# setfacl -m u:mysqls:- A.txt
[root@Rocky8 ~]# ll A.txt
-rwxr--r--+ 1 root root 0 Apr 20 15:01 A.txt
[root@Rocky8 ~]# getfacl A.txt
# file: A.txt
# owner: root
# group: root
user::rwx
user:mysqls:---
group::r--
mask::r--
other::r--

#清除ACL权限

[root@Rocky8 ~]# setfacl -b  A.txt
[root@Rocky8 ~]# getfacl A.txt
# file: A.txt
# owner: root
# group: root
user::rwx
group::r--
other::r--
#复制file1的acl权限给file2
getfacl file1 |setfacl --set-file=- file2

三、vim的几种模式及常见的操作

1、三种常见模式: 命令模式、扩展模式、插入模式

#进入命令模式
[root@Rocky8 ~]# vim a.txt //开启文件,进入命令模式
#	输入:进入扩展命令模式
#	ESC退出插入模式
#	:q! //强制退出

2、命令模式切换插入模式,然后回到命令模式并退出文件

vim a.txt开启文件,进入命令模式,命令模式下输入i切换至插入模式,esc退出插入模式,:wq退出文件

3、打开文件,输入内容并保存退出

vim a.txt打开文件进入命令模式,输入i进入插入模式,输入内容“马哥出品,必属精品”,按ESC键退出插入模式,命令模式下输入 :wq 保存并退出文件。

4、使用cat命令验证

[root@Rocky8 ~]# cat a.txt
马哥出品,必属精品

5、命令模式下常见操作

#光标在单词、行间上下左右移动
 k#向上移动
 h#向左移动   
 l#向右移动
 j#向下移动
#复制命令
yy	复制行
Y	复制整行
#粘贴命令
p	如果缓冲区村的为整行则粘贴光标所在行的下方;否则粘贴至光标的后后面;
P 	如果缓冲区存的为整行则粘贴光标所在行的上方;否则粘贴至光标的后前面;
#改变命令
cc  删除当前行并输入新内容
C	删除当前行光标至行尾,并切换至插入模式,相当于c$

四、文本处理工具、文件查找工具、文本处理三剑客,文本格式化命令(printf)常用命令及选项

1、文本处理工具

1、使用cat查看文件内容
[root@Rocky8 ~]# cat a.txt
马哥出品,必属精品
马哥出品,必属精品

2、more可以实现分页查看文件内容
 more [options] <file>
 -d	#显示翻页和退出提示

3、head显示文件或标准输入的前面行
 [root@Rocky8 ~]# head -n 5 /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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


4、tail和head相反,查看文件内容的倒数行
[root@Rocky8 ~]# seq 10 |head -n 3
1
2
3
[root@Rocky8 ~]# seq 10 |head -n +3
1
2
3
[root@Rocky8 ~]# seq 10 |head -n -3
1
2
3
4
5
6
7
[root@Rocky8 ~]# seq 10 |tail -n 3
8
9
10
[root@Rocky8 ~]# seq 10 |tail -n +3
3
4
5
6
7
8
9
10
[root@Rocky8 ~]# seq 10 |tail -n -3
8
9
10

5、cut取出指定文本
[root@Rocky8 ~]# ifconfig | head -n 2 | tail -n 1 |tr -s " " |cut -d " " -f3
192.168.188.7

6、wc收集文本统计数据
[root@Rocky8 ~]# wc /etc/passwd
  28   55 1404 /etc/passwd #从左到右依次表示行数、单词数、字节数


7、sort对文本内容进行排序
[root@Rocky8 ~]# df |tr -s " "% |cut -d " " -f5 |sort -n|tail -n 1
17%


8、paste合并文件
	-d #指定分隔符隔开	
	-s #将所有行合成一行显示
[root@Rocky8 ~]# cat xuhao.txt
1
2
3
4
5
6
7
8
9
10
[root@Rocky8 ~]# cat nn.txt
a
b
c
d
e
f
g
h
i
[root@Rocky8 ~]# paste -d ":" xuhao.txt nn.txt
1:a
2:b
3:c
4:d
5:e
6:f
7:g
8:h
9:i
10:

8、uniq去除前后相接的重复项和行(和sort一起使用)
	-c #显示每行重复的的次数
	-d #仅显示重复过的行
	-u #仅显示不曾重复的行
[root@Rocky8 ~]# cat xuhao2.txt
1
1
6
2
3
5
4
4

[root@Rocky8 ~]# sort -n xuhao2.txt |uniq -c
      1
      2 1
      1 2
      1 3
      2 4
      1 5
      1 6
[root@Rocky8 ~]# sort -n xuhao2.txt |uniq -d
1
4
[root@Rocky8 ~]# sort -n xuhao2.txt |uniq -u

2
3
5
6

9、diff比较两个文件
[root@Rocky8 ~]# cat name.txt
ding
root
mysql
[root@Rocky8 ~]# cat name1.txt
ding
hang
mysql
[root@Rocky8 ~]# diff -u name.txt name1.txt
--- name.txt    2023-04-20 18:47:26.246441239 +0800
+++ name1.txt   2023-04-20 18:47:50.731439900 +0800
@@ -1,3 +1,6 @@
 ding
-root
+hang
 mysql
10、patch复制备份改变了的文件
	-b #自动备份改变了的文件
 [root@Rocky8 ~]# diff -u 1.txt 2.txt > 3.patch
 [root@Rocky8 ~]# patch -b 1.txt 3.patch
	

2、文本查找工具

  1. 非实时查找locate,适合查找变化性弱的文件,需更新updatedb
#模糊查找、查找文件的全路径、查找速度最快
# -i 不区分大小写搜索

[root@Rocky8 ~]# locate nginx
/usr/lib/python3.6/site-packages/sos/report/plugins/nginx.py
/usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/nginx.cpython-36.opt-1.pyc
/usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/nginx.cpython-36.pyc

  1. 实时查找find
#先处理文件,在处理文件夹
[root@Rocky8 ~]# find -depth
./.bash_logout
./.bash_profile
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.bash_history
./dir.txt
./passwd.txt
./.config/procps
./.config

#支持通配符
[root@Rocky8 ~]# find  -name "*.txt"
./dir.txt
./passwd.txt
./f1.txt
./nn.txt
./name2.txt
./name.txt
./name1.txt

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

  1. grep(文本内容过滤)

-b 在搜索到的行的前面打印该行所在的块号码。

-c 只显示匹配的行数 ,而不具体显示匹配的内容

-v 反向检索,显示不匹配的行

-i 在与字符串比较的时候忽略大小写

-l 只显示包含匹配模板的行的文件名清单,不同项目之间用换行符分隔

-L 打印不匹配模板的文件名清单

-n 在每一行前面打印该行在文件中的行数

-s 静默工作,除非出现错误信息否则不打印任何信息,这个功能在检测退出状态的时候有用

[root@Rocky8 ~]# getent 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
~~~#部分内容...

[root@Rocky8 ~]# cat /etc/passwd |grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

#统计root出现的次数
[root@Rocky8 ~]# grep -c root /etc/passwd
2
  1. sed(实现批量文本编辑)

    -r 追加文本。
    -w 保存模式匹配的行到指定文件。
    -n 禁止sed编辑器输出,但可以与p命令一起使用完成输出。
    -i 直接修改目标文本文件。

#关闭selinux功能 /etc/selinux/config 默认为SELINUX=enforcing

[root@Rocky8 ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
[root@Rocky8 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

#取出ifconfig中特定IP字段
[root@Rocky8 ~]# ifconfig | sed -rn '2s#^.*inet +([0-9.]+) +netmask.*$#\1#p'
192.168.188.7

  1. awk(报告生成器,格式化文本输出)
#取出df中的占用率
[root@Rocky8 ~]# df |awk '{print $5}'
Use%
0%
0%
1%
0%
3%
17%
1%
0%

  1. 格式化输出printf

printf命令模仿了C语言中的printf()函数。主要作用是输出文本,按照我们指定的格式输出文本。还有一个输出文本的命令echo,在输出文本时,echo会换行。printf命令不会对输出文本进行换行。可以使用 \n 。但是printf命令的优势是格式化文本

#格式
printf [-v var] format [arguments]

格式替代符

%s 字符串

%f 浮点型

%b 相对应参数中包含转义字符时,可以使用此替换符进行替换,对应的转义字符被转义。

%c ASCII字符,显示想对应参数的第一个字符。

%d, %i 十进制整数

%o 不带正负号的八进制值

%u 不带正负号的十进制值

%x 不带正负号的十六进制值,使用a至f表示10到15

%X 不带正负号的十六进制值,使用A至F表示10到15

%% 表示 % 本身

五、shell编程计算,已知头和脚的数量,计算鸡兔几何?

[root@Rocky8 script]# cat chook_foot.sh
#!/bin/bash
# **********************************************************
# * Author        : DingBaoHang
# * Email         : m15269032515@163.com
# * Create time   : 2023-04-21 11:08
# * Filename      : head_foot.sh
# * Description   :
# **********************************************************
HEAD=$1
FOOT=$2

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

输入变量head:36 foot:80

[root@Rocky8 script]# bash chook_foot.sh 36 80
RABBIT:4
CHOOK:32

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

[root@Rocky8 script]# bash useradd.sh
#!/bin/bash
# **********************************************************
# * Author        : DingBaoHang
# * Email         : m15269032515@163.com
# * Create time   : 2023-04-21 11:27
# * Filename      : useradd.sh
# * Description   :
# **********************************************************
for USER in {1..100};do
    useradd user$USER
        PASS=`cat /dev/urandom |tr -dc '[:alnum:]' |head -c12`
        echo $PASS | passwd $PASS --stdin user$USER &> /dev/null
        echo user$USER:$PASS >> /root/script/user.log
        echo "user$USER is created!"
done

七、磁盘存储术语总结: head, track, sector, sylinder

1、head: 磁头 磁头数=盘面数

2、track:磁道 磁道=柱面数

3、sector: 扇区,512bytes

4、cylinder:柱面 1柱面=512sector数/trackhead数=51263255=7.84M

[root@Rocky8 ~]# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 200 GiB, 214748364800 bytes, 419430400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x39e5ba5d

Device         Boot   Start       End   Sectors  Size Id Type
/dev/nvme0n1p1 *       2048   2099199   2097152    1G 83 Linux
/dev/nvme0n1p2      2099200 419430399 417331200  199G 8e Linux LVM

八、总结MBR,GPT两种分区方式

1、MBR

1982年,使用32位表示扇区面,最大分区不超过2T.
划分单位:
	centos 5之前按整柱面划分
	centos 6 版本后可以按照sector划分
0磁道0扇区:512bytes
	446字节:boot loader 启动相关
	64字节:分区表,每16个字节表示一个分区
	2字节:55 aa,标识位
MBR分区中一块硬盘中最多有四个分区,也可以三个主分区+一个扩展(N个逻辑分区)
主和扩展分区对应的1--4/dev/sda3,逻辑分区从5开始,/dev/sda5

2、GPT

GPT:全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体磁盘的分区表的结构布局
的标准。它是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代
BIOS系统中的一32bits来存储逻辑块地址和大小信息的主引导记录(MBR)分区表。

九、raid 0, 1, 5, 10, 01的工作原理以及各自的利用率,冗余性,性能,至少需要几块硬盘实现。

1、raid 0 :条带卷,至少需要一块磁盘,速度快,无容错能力,利用率100%

以 chunk 单位 , 读写数据 , 因为读写时都可以并行处理,所以在所有的级别中, RAID 0的速度是最块
的。但是 RAID 0 既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。

2、raid 1:也称为镜像,有冗余能力,至少需要磁盘数2块,利用率50%

 两组以上的 N 个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于
 硬盘数量的倍数,与 RAID 0 相同。另外写入速度有微小的降低。

3、raid 5:每块磁盘都放有校验位,至少需要3块磁盘,允许最多一块磁盘损坏,利用率n-1/n
4、raid 10:raid 1 +0 至少需要4块磁盘,可以允许一块磁盘损坏,磁盘利用率50%
5、raid 01:多块磁盘先实现raid0,再实现raid1,磁盘利用率50%

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大海绵啤酒肚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值