第一周 作业

1. 总结计算机发展相关,并且总结服务器硬件相关知识。

1.1.计算机的发展史。

    1. 第一代计算机(1946-1957) 电子管时代 。

    2. 第二代计算机(1958-1964) 晶体管时代 。

    3. 第三代计算机(1965-1970) 集成电路时代 。

    4. 第四代计算机(1971以后) 大规模集成电路时代。

1.2计算机分类

1.2.1按规模划分

超级计算机:Super Computer,又称巨型计算机,应用于国防尖端技术和现代科学计算中。巨型 机的运算速度可达每秒百万亿次以上, “天河一号”为我国首台千万亿次超级计算机 。

大型计算机:具有较高的运算速度,每秒可以执行几千万条指令,而且有较大的存储空间。往往用 于科学计算、数据处理或作为网络服务器使用,如:IBM z13 mainframe 。

小型计算机:指采用精简指令集处理器,性能和价格介于PC服务器和大型主机之间的一种高性能 64 位计算机。在中国,小型机习惯上用来指UNIX服务器 。

微型计算机:指采用 X86 CPU 架构的PC服务器,中央处理器(CPU)采用微处理器芯片,体积小 巧轻便,广泛用于商业、服务业、工厂的自动控制、办公自动化以及大众化的信息处理,互联网公司 发起去IOE运动,代替小型机。

1.2.2按功能和角色划分

服务器Server和客户机client 服务器:即 Server,计算机的一种,通常是网络中为客户端计算机提供各种服务的高性能的计算机,服务器在网络操作系统的控制下,将与其相连的硬盘、磁带、打印机及昂贵的专用通讯设备提供给网络上 的客户站点共享,也能为网络用户提供集中计算、信息发布及数据管理等服务 。

客户机:即 Client,向服务器提出请求,需要服务器为之提供相应的服务和支持的计算机 服务器按应用功能可分为: Web服务器、数据库服务器、文件服务器、中间件应用服务器、日志服务器、监控服务器、程序版本控 制服务器、虚拟机服务器、邮件服务器、打印服务器、域控制服务器、多媒体服务器、通讯服务器、 ERP服务器等

1.2.3服务器按外形分类

塔式服务器 。

刀片式服务器 。

机架式服务器。

1.2.服务器以及硬件相关知识。

1.2.1.硬件相关知识
1.2.1.1世界上第一台计算机

  1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算 机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只 电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算。

1.2.1.2冯诺依曼体系

  1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序处 理的数据用同样的方式储存。 冯·诺依曼体系的要点是: 数字计算机的数制采用二进制,bit 位, byte 字节 ,1 byte =8 bit, 计算机应该按照程序顺序执行 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成 计算机的硬件五个组件。

  控制器: 指挥系统。

  运算器: 数学和逻辑运算 。

  存储器: 存储信息 。

  输入设备: 接收外部信息。

  输出设备: 输出计算机内部信息到外部设备。

1.2.1.3服务器硬件组成

1.2.1.4服务器硬件---CPU

CPU:Central Processing Unit,即中央处理器。由控制器和运算器构成,是整个计算机系统中最重要 的部分 。

目前主流的CPU 指令集分类:

CISC:Complex Instruction Set Computer,复杂指令集。

  x86服务器:采用CISC(复杂指令集)架构服务器,即通常所讲的PC服务器,它是基于PC机体系结构, 使用Intel或其它兼容x86指令集的处理器芯片的服务器。目前主要为intel的Xeon E3,E5,E7系列,价 格相对便宜、兼容性好、稳定性较差、安全性不算太高。

RISC:Reduced Instruction Set Computer,精减指令集。

  非x86服务器:采用RISC(精简指令集)或EPIC(并行指令代码) 处理器,主要采用UNIX和其它专用操 作系统的服务器,CPU主要有IBM的Power PC、MIPS的MIPS、SUN的Sparc、Compaq的Alpha、HP的 PA-RISC、Intel研发的EPIC安腾处理器等。这种服务器价格昂贵,体系封闭,但是稳定性好,性能强, 主要用在金融、电信等大型企业的核心系统。

1.2.1.5服务器硬件---主板

  主板mainboard,安装在机箱内,是计算机最基本的也是最重要的部件之一 主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键 盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。

1.2.1.6服务器硬件---内存

  内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据 和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路 内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大 与之相对应的还有外存:硬盘,U盘,软盘,光盘 。

  内存和外存的区别: 内存速度快,价格高,断电后数据丢失。

                                   外存速度慢,价格相对低廉,断电后数据可以保存 。

  容量:即该内存的存储容量,单位一般为GB 。

  内存带宽: 内存带宽是指内存与北桥芯片之间的数据传输率,B byte 字节 b bit位 单通道内存控制器一般都是64-bit的,8个二进制位相当于1个字节,换算成字节是64/8=8B,再乘以内存 的运行频率,如果是双通道内存就要再乘以2。

  计算公式: 内存带宽=内存总线频率×数据总线位数/8。

范例:单通道DDR(Double Data Rate双倍速率)

内存带宽计算

  DDR4-4000:4000MHz*64bit/8=32000MB/S=32GB/S

  DDR4-3600:3600MHz*64bit/8=28800MB/S

双通道:

  DDR4-4000:4000MHz*64bit*2/8=64000MB/S

1.2.1.7服务器硬件---硬盘

  硬盘是一种计算机存储设备,用于永久性地存储数字数据。硬盘的主要功能是为计算机提供大容量的数据存储空间。硬盘通常由一个或多个铝制或玻璃制的碟片组成,这些碟片外覆有铁磁性材料。

  硬盘可以分为不同的类型,包括固态硬盘(SSD)、机械硬盘(HDD)和混合硬盘(HHD)。固态硬盘使用闪存颗粒来存储数据,而机械硬盘使用磁性碟片来存储数据。混合硬盘结合了磁性硬盘和闪存技术。硬盘中存储的数据不会轻易丢失,并且可以在没有外部干预的情况下长期保存。

常见的磁盘接口种类:

  IDE:Integrated Drive Electronics,电子集成[驱动器,早期家用电脑常用接口 。

  SCSI:Small Computer System Interface,小型计算机系统接口,早期的服务器常用接口。

  SATA:Serial ATA (Advanced Technology Attachment 高技术配置),家用电脑常用的接口。

  SAS:Serial Attached SCSI,是目前服务器上主流的接口 光纤通道:Fiber Channel,高性能服务器上采用的接口 M.2 :固态硬盘接口,性能更强 。

结构分类:

  机械硬盘HDD(Hard Disk Drive)

  存储介质(Media)——盘片 盘片的基板是金属或玻璃材质制成,为达到高密度高稳定的质量,基板要求表面光滑平整,不可有 任何暇疵 。

  读写磁头(Read Write Head)——磁头 磁头是硬盘读取数据的关键部件,它的主要作用就是将存储在硬盘盘片上的磁信息转化为电信号向 外传输 。

  马达( Spindle Motor & Voice Coil Motor ) 马达上装有一至多片盘片,以7200,10000,15000 RPM等定速旋转,为保持其平衡不可抖动, 所以其质量要求严谨,不产生高温躁音。

  固态硬盘SSD(Solid State Drives)

  SSD,即固态硬盘,泛指使用NAND Flash组成的固态硬盘。其特别之处在于没有机械结构,以区块写入 和抹除的方式作读写的功能,因此在读写的效率上,非常依赖读写技术上的设计SSD读写存取速度快, 性能稳定,防震性高,发热低,耐低温,电耗低,无噪音。因为没有机械部分,所以长时间使用也出现 故障几率也较小。缺点:价格高,容量小,相对普通机械硬盘性价比低。

1.2.1.8服务器硬件---网卡

  服务器一般都在主板上集成了网卡LOM (LAN on motherboard主板集成网卡) ,传输速率通常为 1Gbps,即千兆网卡。特殊应用需要高端网卡,如光纤网卡,Infiniband网卡等,传输速率能达到10Gbps、20Gbps,即万兆网卡。

1.2.2服务器硬件---相关其它硬件
1.2.2.1服务器硬件---远程管理卡

  远程管理卡就是基于IPMI实现的服务器特有的远程管理部件,在家用电脑及笔记本电脑上是不存在的。 远程管理卡是安装在服务器上的硬件设备,提供一个以太网接口,使它可以连接到独立于业务网络的专 用的管理网络中,提供远程访问,如查看服务器状态,调整BIOS,配置RAID,安装系统,重启系统等。这种远 程管理是基于服务器主板上集成的基板管理控制器BMC(Baseboard Manager Controller)实现,BMC 就是一个独立于服务器的微处理器系统, 可以完成负责监测和管理操作系统之外的服务器环境和状态。它 既不会占用服务器系统资源,也不会影响服务器系统的运行。所有远程管理卡都是向BMC发送指令来实 现服务器的管理和监控功能.只要服务器通电而无需启动操作系统,BMC即可正常工作。

  远程管理卡有服务器自带的和独立的两类。服务器自带的远程管理卡,可以关机、开机,但是看不到开 关服务器的过程。所以,建议给服务器配备独立的远程管理卡,当服务器出现问题,就不需要打车或者出差,也不用给机房人员打电话了,可以利用远程管理卡快速查 看服务器故障并恢复服务。

上图是浪潮的服务器IPMI卡,不过和DELL不同,浪潮的服务器是出厂默认带的IPMI接口。

上图为Dell的 iDRAC((integrated Dell Remote Access Controller))卡即是远程管理卡, 相当于是附加在 服务器上的一台独立运行的小型pc,通过与服务器主板上的管理芯片BMC进行通信,监控与管理服务器 的硬件状态信息。它拥有自己的系统和IP地址,与服务器上的OS无关,是服务器管理员进行远程访问和 管理的便利工具。

1.2.2.2服务器硬件---阵列卡

  Raid卡用来实现RAID的建立和重建,检测和修复多位错误,错误磁盘自动检测等功能。RAID芯片使CPU 的资源得以释放,阵列卡把若干硬盘驱动器按照一定要求组成一个整体、由阵列控制器管理的系统 阵列卡可以用来提高磁盘子系统的性能及可靠性 支持的多种RAID级别,RAID0,1,5,6等 阵列卡提供缓存及电池保护。

1.2.2.3服务器硬件---电源

  支持服务器的电力负载,支持冗余,防止电源故障 ,故障预警和防止 ,故障之前的预防性维护,保证服 务器持续运行,电源子系统包括:冗余电源和风扇。

1.2.2.4服务器硬件---显卡

  服务器都在主板上集成了显卡,但是显存容量不高,一般为16M或32M,GPU: Graphic Processing Unit,即“图形处理器”。

1.2.2.5服务器硬件---热插拔技术

  热插拔技术,称为热交换技术(Hot Swap),允许在不关机的状态下更换故障热插拔设备,常见的热插 拔设备:硬盘,电源,PCI设备,风扇等。热插拔硬盘技术与RAID技术配合起来,可以使服务器在不关 机的状态下恢复故障硬盘上的数据,同时并不影响网络用户对数据的使用。

1.2.2.6服务器硬件---机柜

    机架式服务器-服务器放置在机柜中 通常使用的机柜是42U(约2米高)机柜( 1U=44.45mm) 外观尺寸一般为:宽600*深1000*高2000(mm) 在一个机架上,累计设备U数一般不超过26U,全1U设备部署数量一般不超过16台,全2U设备一般不超 过12台,全4U设备一般4到7台。

2制作一个教程,说明vmware软件如何下载安装。安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。

2.1 vmware软件如何下载安装。

1、官网下载地址

下载 VMware Workstation Pro | CN

2、打开官网,选择合适的进行下载

3、安装

VMware安装,点击下一步

我接受许可协议中的条款,点击下一步

4、使用VMware新建虚拟机

2.2安装rocky 8.5, ubuntu 22.04(请确保电脑上虚拟化功能开启)

先在电脑中下载好以下linux版本的镜像文件。

    rockylinux安装包下载_开源镜像站-阿里云

    ubuntu-releases安装包下载_开源镜像站-阿里云

2.2.1 安装rocky 8.5
2.2.1.1针对 rocky 8.5 创建虚拟机环境

先ctrl+N新建虚拟机

找不到rocky版本的情况下可以用centos8。rocky8.5和centos8都是基于RHEL8的衍生版本,可以兼容

打开虚拟机设置,在光驱里面将之前在阿里云上下好的镜像文件选中。然后点确定保存。

2.2.1.2 安装 rocky 8.5

开机通电

第一个选项空格键然后等待安装。

设置完成后(网络设置里远程链接打开,时间设置为东八区,设置用户名和密码)点击开始安装。

2.2.2 安装Ubuntu
2.2.2.1针对Ubuntu创建虚拟机环境

步骤和上文针对rocky 8 .5创建虚拟机环境步骤一样。

2.2.2.2安装ubuntu

开机

下面这里要安装SSH,移动到该选项后按空格键。

installing system(系统开始安装),然后等待让他安装,当View full log和Cancel update and reboot变成reboot 说明已经安装完成,点击重启。

3结合xshell说明如何通过虚拟IP登入系统

虚拟机在创建好安装linux系统后会自动分配一个IP地址,通过命令来调出当前虚拟机的IP地址。

 

[eureka72@ubuntu002 ~]#hostname -I
10.0.0.154
[eureka72@ubuntu002 ~]#

打开远程连接接工具

打开SSH,将ip地址和用户名输入进去

以上就是远程连接登录linux系统了。

3. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法

3.1man命令

man 提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的“页面”
man 帮助

https://man7.org/linux/man-pages/index.html
https://man7.org/linux/man-pages/dir_all_alphabetic.html


中文man需安装包
  man-pages
  man-pages-zh-CN
man 页面分组
不同类型的帮助称为不同的“章节”,统称为Linux手册,man 1 man
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:配置文件格式
6:游戏
7:杂项
8:管理类的命令
9:Linux 内核API
man 命令的配置文件:

#CentOS 6 之前版 man 的配置文件
/etc/man.config
#CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
#ubuntu man 的配置文件
/etc/manpath.config

格式

MANPATH /PATH/TO/SOMEWHERE #指明man文件搜索位置

也可以指定位置下搜索COMMAND命令的手册页码并显示。

man -M /PATH/TO/SOMEWHERE COMMAND

 查看man手册页

 man [OPTION...] [SECTION] PAGE...

 man [章节] keyword

 man 帮助段落说明

NAME 名称及简要说明

SYNOPSIS 用法格式说明

[] 可选内容

<> 必选内容

a|b 二选一

{ } 分组

... 同一内容可出现多次

DESCRIPTION 详细说明

OPTIONS 选项说明

EXAMPLES 示例

FILES 相关文件

AUTHOR 作者

COPYRIGHT 版本信息

REPORTING BUGS bug信息

SEE ALSO 其它帮助参考 man命令的操作方法:

使用less命令实现 space, ^v, ^f, ^F: 向文件尾翻屏

b, ^b: 向文件首部翻屏

d, ^d: 向文件尾部翻半屏

u, ^u: 向文件首部翻半屏

RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行

y or ^Y or ^P or k or ^K:向文件首部翻一行

q: 退出

#:跳转至第#行

1G: 回到文件首部

G:翻至文件尾部

/KEYWORD

以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写n:下一个 N:上一个 。

?KEYWORD

以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写 n:跟搜索命令同方向,下一个 N:跟搜索命令反方向,上一个。

常用选项

列出所有帮助

man -a keyword

搜索man手册

#列出所有匹配的页面,使用 whatis 数据库 man -k keyword

相当于 whatis

man -f keyword 

3.2命令自身提供的官方使用指南

/usr/share/doc

  多数安装了的软件包的子目录,包括了这些软件的相关原理说明 常见文档:README INSTALL CHANGES 不适合其它地方的文档的位置 配置文件范例 HTML/PDF/PS 格式的文档 授权书详情 范例:

[17:12:05 root@rocky001[ ~]#ls /usr/share/doc/nano/
AUTHORS  ChangeLog  COPYING  faq.html  INSTALL  nano.html  NEWS  README  sample.nanorc  THANKS  TODO
[17:20:29 root@rocky001[ ~]#

[17:20:29 root@rocky001[ ~]#ls /usr/share/doc/nano/nano.html
/usr/share/doc/nano/nano.html
[17:21:05 root@rocky001[ ~]#

3.3系统及第三方应用官方文档

Linux官方在线文档和知识库

http://www.redhat.com/docs

http://kbase.redhat.com

http://access.redhat.com

https://help.ubuntu.com/lts/serverguide/index.html

http://tldp.org

通过在线文档获取帮助 

http://www.github.com

https://www.kernel.org/doc/html/latest/

http://httpd.apache.org

http://www.nginx.org

https://mariadb.com/kb/en

https://dev.mysql.com/doc/

http://tomcat.apache.org

https://jenkins.io/zh/doc/

https://kubernetes.io/docs/home/

https://docs.openstack.org/train/

http://www.python.org http://php.net 

 相关网站和搜索

http://bing.com

http://www.baidu.com

http://www.slideshare.net 

http://www.google.com

3.4常见命令

3.4.1查看硬件信息
3.4.1.1 查看 cpu

scpu 命令可以查看cpu信息
cat /proc/cpuinfo也可看查看到。

范例:

[17:21:05 root@rocky001[ ~]#lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           2
NUMA node(s):        1
Vendor ID:           AuthenticAMD
BIOS Vendor ID:      AuthenticAMD
CPU family:          25
Model:               80
Model name:          AMD Ryzen 7 5800H with Radeon Graphics
BIOS Model name:     AMD Ryzen 7 5800H with Radeon Graphics
Stepping:            0
CPU MHz:             3194.002
BogoMIPS:            6388.00
Hypervisor vendor:   VMware
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            512K
L3 cache:            16384K
NUMA node0 CPU(s):   0,1
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero wbnoinvd arat umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor fsrm

3.4.1.2查看内存信息

[17:28:34 root@rocky001[ ~]#free
              total        used        free      shared  buff/cache   available
Mem:        1828236      656496      529904       10004      641836     1001620
Swap:       2125820       30208     2095612
[17:31:08 root@rocky001[ ~]#cat /proc/meminfo
MemTotal:        1828236 kB
MemFree:          530272 kB
MemAvailable:    1001988 kB
Buffers:            3440 kB
Cached:           579616 kB
SwapCached:        17556 kB
Active:           385580 kB
Inactive:         591724 kB
Active(anon):      10636 kB
Inactive(anon):   393616 kB
Active(file):     374944 kB
Inactive(file):   198108 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2125820 kB
SwapFree:        2095612 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        378760 kB
Mapped:           217352 kB
Shmem:             10004 kB
KReclaimable:      58780 kB
Slab:             128460 kB
SReclaimable:      58780 kB
SUnreclaim:        69680 kB
KernelStack:        7776 kB
PageTables:        24472 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3039936 kB
Committed_AS:    1869148 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
Percpu:           105984 kB
HardwareCorrupted:     0 kB
AnonHugePages:    174080 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      223104 kB
DirectMap2M:     1873920 kB
DirectMap1G:           0 kB

3.4.1.3 查看硬盘和分区情况

[17:32:52 root@rocky001[ ~]#lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 10.5G  0 rom
nvme0n1     259:0    0  200G  0 disk
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0  199G  0 part
  ├─rl-root 253:0    0   70G  0 lvm  /
  ├─rl-swap 253:1    0    2G  0 lvm  [SWAP]
  └─rl-home 253:2    0  127G  0 lvm  /home
[17:33:00 root@rocky001[ ~]#cat /proc/partitions
major minor  #blocks  name

 259        0  209715200 nvme0n1
 259        1    1048576 nvme0n1p1
 259        2  208665600 nvme0n1p2
  11        0   10950656 sr0
 253        0   73400320 dm-0
 253        1    2125824 dm-1
 253        2  133136384 dm-2

3.4.1.4 查看内核版本

[17:33:25 root@rocky001[ ~]#uname -r
4.18.0-372.9.1.el8.x86_64

3.4.1.5 查看操作系统发行版本

[17:36:34 root@rocky001[ ~]#cat /etc/os-release
NAME="Rocky Linux"
VERSION="8.6 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.6 (Green Obsidian)"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:rocky:rocky:8:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky Linux"
ROCKY_SUPPORT_PRODUCT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

 3.4.2 输出信息 echo

   echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号
语法:

 echo [-neE][字符串]

 显示变量

echo "$VAR_NAME” #用变量值替换,弱引用
echo '$VAR_NAME’ #变量不会替换,强引用


启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

可以用man帮助查看echo用法:

NAME
       echo - display a line of text

SYNOPSIS
       echo [SHORT-OPTION]... [STRING]...
       echo LONG-OPTION

DESCRIPTION
       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline

       -e     enable interpretation of backslash escapes

       -E     disable interpretation of backslash escapes (default)

       --help display this help and exit

       --version
              output version information and exit

       If -e is in effect, the following sequences are recognized:

       \\     backslash

       \a     alert (BEL)

       \b     backspace

       \c     produce no further output

       \e     escape

       \f     form feed

       \n     new line

       \r     carriage return

 3.4.3日期和时间

Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令
date 显示和设置系统时间
范例:

[17:52:34 root@rocky001[ ~]#date
Fri Mar  8 17:52:37 CST 2024

用man date查看用法。

DATE(1)                                                                User Commands                                                               DATE(1)

NAME
       date - print or set the system date and time

SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

DESCRIPTION
       Display the current time in the given FORMAT, or set the system date.

       Mandatory arguments to long options are mandatory for short options too.

       -d, --date=STRING
              display time described by STRING, not 'now'

       --debug
              annotate the parsed date, and warn about questionable usage to stderr

       -f, --file=DATEFILE
              like --date; once for each line of DATEFILE

       -I[FMT], --iso-8601[=FMT]
              output  date/time  in  ISO 8601 format.  FMT='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to
              the indicated precision.  Example: 2006-08-14T02:34:56-06:00

       -R, --rfc-email
              output date and time in RFC 5322 format.  Example: Mon, 14 Aug 2006 02:34:56 -0600

       --rfc-3339=FMT
              output date/time in RFC 3339 format.  FMT='date', 'seconds', or 'ns' for date and time to  the  indicated  precision.   Example:  2006-08-14
              02:34:56-06:00

       -r, --reference=FILE
              display the last modification time of FILE

       -s, --set=STRING
              set time described by STRING

       -u, --utc, --universal

 修改时区

timedatectl set-timeznoe Asia/Shanghai     #时区更改为上海。

 查看时区

[17:58:52 root@rocky001[ ~]#date -R
Fri, 08 Mar 2024 17:59:43 +0800     #东八区

3.4.4 关机和重启

重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
ctrl+alt+delete 三个键
init 6
shutdown -r now

关机:
halt
poweroff
init 0
shutdown -h now

关机或重启:shutdown

shutdown [OPTION]... [TIME] [MESSAGE]


-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间

man shutdown

NAME
       shutdown - Halt, power-off or reboot the machine

SYNOPSIS
       shutdown [OPTIONS...] [TIME] [WALL...]

DESCRIPTION
       shutdown may be used to halt, power-off or reboot the machine.

       The first argument may be a time string (which is usually "now"). Optionally, this may be followed by a wall message to be sent to all logged-in
       users before going down.

       The time string may either be in the format "hh:mm" for hour/minutes specifying the time to execute the shutdown at, specified in 24h clock format.
       Alternatively it may be in the syntax "+m" referring to the specified number of minutes m from now.  "now" is an alias for "+0", i.e. for
       triggering an immediate shutdown. If no time argument is specified, "+1" is implied.

       Note that to specify a wall message you must specify a time argument, too.

       If the time argument is used, 5 minutes before the system goes down the /run/nologin file is created to ensure that further logins shall not be
       allowed.

OPTIONS
       The following options are understood:

       --help
           Print a short help text and exit.

       -H, --halt
           Halt the machine.

       -P, --poweroff
           Power-off the machine (the default).

       -r, --reboot
           Reboot the machine.

       -h
           Equivalent to --poweroff, unless --halt is specified.

 3.4.5 用户登录信息查看命令

whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w: 系统当前所有的登录会话及所做的操作

3.4.6文本编辑


nano 工具可以实现文本的编辑,上手容易,适合初学者
gedit 工具是图形工具

范例: 创建登录提示文件 /etc/motd

nano /etc/motd

 进入文本后自己随便写点东西保存退出。

重启后可以看到我刚刚写的东西。

3.4.7 命令行历史

  登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中(默认是  ~/.bash_history)。利用命令历史。可以用它来重复执行命令,提高输入效率
命令:history

history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]

man history

      history [n]
       history -c
       history -d offset
       history -anrw [filename]
       history -p arg [arg ...]
       history -s arg [arg ...]
              With no options, display the command history list with line numbers.  Lines listed with a * have been modified.  An argument of n lists only
              the  last  n  lines.  If the shell variable HISTTIMEFORMAT is set and not null, it is used as a format string for strftime(3) to display the
              time stamp associated with each displayed history entry.  No intervening blank is printed between the formatted time stamp and  the  history
              line.   If  filename  is supplied, it is used as the name of the history file; if not, the value of HISTFILE is used.  Options, if supplied,
              have the following meanings:
              -c     Clear the history list by deleting all the entries.
              -d offset
                     Delete the history entry at position offset.
              -a     Append the ``new'' history lines to the history file.  These are history lines entered since the beginning of the current  bash  ses‐
                     sion, but not already appended to the history file.
              -n     Read the history lines not already read from the history file into the current history list.  These are lines appended to the history
                     file since the beginning of the current bash session.
              -r     Read the contents of the history file and append them to the current history list.
              -w     Write the current history list to the history file, overwriting the history file's contents.
              -p     Perform history substitution on the following args and display the result on the standard output.  Does not store the results in  the
                     history list.  Each arg must be quoted to disable normal history expansion.
              -s     Store the args in the history list as a single entry.  The last command in the history list is removed before the args are added.

              If  the HISTTIMEFORMAT variable is set, the time stamp information associated with each history entry is written to the history file, marked
              with the history comment character.  When the history file is read, lines beginning with the history comment character followed  immediately
              by a digit are interpreted as timestamps for the following history entry.  The return value is 0 unless an invalid option is encountered, an
              error occurs while reading or writing the history file, an invalid offset is supplied as an argument to -d, or the  history  expansion  sup‐
              plied as an argument to -p fails.

4总结linux文件系统相关知识,并结合操作演示文件操作常见的命令

4.1文件系统目录结构

文件和目录被组织成一个单根倒置树结构

文件系统从根目录下开始,用“/”表示

根文件系统(rootfs):root filesystem

标准Linux文件系统(如:ext4),文件名称大小写敏感,例如:MAIL, Mail, mail, mAiL

以 . 开头的文件为隐藏文件

路径分隔的 /

文件名最长255个字节

包括路径在内文件名称最长4095个字节

蓝色-->目录 绿色-->可执行文件 红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件

除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引 号来引用

每个文件都有两类相关数据:元数据:metadata,即属性, 数据:data,即文件内容 Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard

参考文档:http://www.pathname.com/fhs/

4.1.1常见的文件系统目录功能

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录

/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序

/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序

/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)

/lib64:专用于x86_64系统上的辅助共享库文件存放位置

/etc:配置文件目录 /home/USERNAME:普通用户家目录

/root:管理员的家目录

/media:便携式移动设备挂载点

/mnt:临时文件系统挂载点

/dev:设备文件及特殊文件存储位置 b: block device,随机访问 c: character device,线性访问

/opt:第三方应用程序的安装位置

/srv:系统上运行的服务用到的数据

/tmp:临时文件存储位置

/usr: universal shared, read-only data

  bin: 保证系统拥有完整功能而提供的应用程序

  sbin: lib:32位使用

  lib64:只存在64位系统

  include: C程序的头文件(header files)

  share:结构化独立的数据,例如doc, man等      

           local:第三方应用程序的安装位置  

                 bin, sbin, lib, lib64, etc, share

/var: variable data files

  cache: 应用程序缓存数据目录

  lib: 应用程序状态信息数据

  local:专用于为/usr/local下的应用程序存储可变数据

  lock: 锁文件

  log: 日志目录及文件

  opt: 专用于为/opt下的应用程序存储可变数据

  run: 运行中的进程相关数据,通常用于存储进程pid文件

  spool: 应用程序数据池

  tmp: 保存系统两次重启之间产生的临时数据

/proc: 用于输出内核与进程信息相关的虚拟文件系统

/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统

/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

4.1.2应用程序的组成部分

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

4.1.3Linux下的文件类型

文件分为7大类型:

- 普通文件

d   目录文件directory

l    符号链接文件link

b   块设备block

c   字符设备character

p   管道文件pipe

s   套接字文件socket

范例:开头第一个字母。

[13:48:42 root@rocky001[ ~]#ls -l /etc
total 1364
drwxr-xr-x.  3 root root        28 Feb 21 23:38 accountsservice
-rw-r--r--.  1 root root        16 Feb 21 23:55 adjtime
-rw-r--r--.  1 root root      1529 Mar 15  2021 aliases
drwxr-xr-x.  3 root root        65 Feb 21 23:41 alsa
drwxr-xr-x.  2 root root      4096 Feb 24 00:16 alternatives
drwxr-xr-x.  4 root root        58 Feb 21 23:41 anaconda
-rw-r--r--.  1 root root       541 Apr 20  2022 anacrontab
-rw-r--r--.  1 root root        55 Apr 13  2022 asound.conf
-rw-r--r--.  1 root root         1 Apr 12  2021 at.deny
drwxr-x---.  4 root root       100 Feb 21 23:40 audit
drwxr-xr-x.  3 root root       228 Feb 21 23:43 authselect
drwxr-xr-x.  4 root root        71 Feb 21 23:40 avahi
drwxr-xr-x.  2 root root       150 Feb 21 23:41 bash_completion.d
-rw-r--r--.  1 root root      3019 Mar 15  2021 bashrc
-rw-r--r--.  1 root root       535 Apr 20  2022 bindresvport.blacklist
drwxr-xr-x.  2 root root         6 May  9  2022 binfmt.d
drwxr-xr-x.  2 root root        23 Feb 21 23:38 bluetooth
-rw-r-----.  1 root brlapi      33 Feb 21 23:40 brlapi.key
drwxr-xr-x.  7 root root        84 Feb 21 23:40 brltty
-rw-r--r--.  1 root root     25696 Jun  2  2021 brltty.conf
lrwxrwxrwx.  1 root root        13 Mar 30  2022 centos-release -> rocky-release
drwxr-xr-x.  2 root root         6 Oct 11  2021 chkconfig.d
drwxr-xr-x.  3 root root        36 Feb 21 23:41 chromium

4.2文件操作命令

4.2.1显示当前工作目录

  每个shell和系统进程都有一个当前的工作目录 CWD:current work directory 显示当前shell CWD的绝对路径

pwd命令: printing working directory

-P 显示真实物理路径

-L 显示链接路径(默认)

[13:48:56 root@rocky001[ ~]#
[13:51:27 root@rocky001[ ~]#pwd
/root
[13:51:29 root@rocky001[ ~]#cd /etc
[13:51:38 root@rocky001[ etc]#pwd
/etc

4.2.2绝对和相对路径

绝对路径:以正斜杠/ 即根目录开始

  完整的文件的位置路径

  可用于任何想指定一个文件名的时候

相对路径名:不以斜线开始

  一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置

  可以作为一个简短的形式指定一个文件名

基名:basename,只取文件名而不要路径

目录名:dirname,只取路径,不要文件名

4.2.3更改目录

命令 cd : change directory 改变目录

  选项:-P 切换至物理路径,而非软链接目录

  可以使用绝对或相对路径

  切换至父目录: cd ..

[13:52:19 root@rocky001[ etc]#pwd
/etc
[13:56:17 root@rocky001[ etc]#cd ..
[13:56:27 root@rocky001[ /]#pwd
/
[13:56:32 root@rocky001[ /]#

  切换至当前用户主目录: cd

[13:56:27 root@rocky001[ /]#pwd
/
[13:56:32 root@rocky001[ /]#cd
[13:57:02 root@rocky001[ ~]#pwd
/root
[13:57:05 root@rocky001[ ~]#

  切换至以前的工作目录: cd -

[13:56:27 root@rocky001[ /]#pwd
/
[13:56:32 root@rocky001[ /]#cd
[13:57:02 root@rocky001[ ~]#pwd
/root
[13:57:05 root@rocky001[ ~]#cd -
/
[13:57:22 root@rocky001[ /]#

4.2.4列出目录内容

ls 命令可以列出当前目录的内容或指定目录

用法:

ls [options] [files_or_dirs]

 常见选项:

-a 包含隐藏文件

-l 显示额外的信息

-R 目录递归

-ld 目录和符号链接信息

-1 文件分行显示

-S 按从大到小排序

-t 按mtime排序

-u 配合-t选项,显示并按atime从新到旧排序

-U 按目录存放顺序显示

-X 按文件后缀排序

-F 对不同类型文件显示时附加不同的符号:*/=>@| -C 文件多时,以多列的方式显示文件,默认是一列(标准输出)

[14:00:36 root@rocky001[ ~]#ll -a
total 56
dr-xr-x---. 16 root root 4096 Mar  8 18:09  .
dr-xr-xr-x. 18 root root  248 Feb 25 06:21  ..
-rw-------.  1 root root 1272 Feb 21 23:44  anaconda-ks.cfg
-rw-r--r--.  1 root root    0 Feb 25 06:08  app
-rw-------.  1 root root 4292 Mar  8 18:08  .bash_history
-rw-r--r--.  1 root root   18 Mar 15  2021  .bash_logout
-rw-r--r--.  1 root root  176 Mar 15  2021  .bash_profile
-rw-r--r--.  1 root root  176 Mar 15  2021  .bashrc
drwx------. 10 root root  236 Feb 21 23:56  .cache
drwx------. 11 root root  215 Feb 21 23:56  .config
-rw-r--r--.  1 root root  100 Mar 15  2021  .cshrc
drwx------.  3 root root   25 Feb 21 23:45  .dbus
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Desktop
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Documents
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Downloads
-rw-------.  1 root root   16 Feb 21 23:56  .esd_auth
-rw-------.  1 root root 1240 Feb 24 01:59  .ICEauthority
-rw-r--r--.  1 root root 1564 Feb 21 23:55  initial-setup-ks.cfg
drwx------.  3 root root   19 Feb 21 23:56  .local
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Music
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Pictures
drwxr-----.  3 root root   19 Feb 21 23:56  .pki
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Public
-rw-r--r--.  1 root root    0 Feb 24 01:14  rocky001-2024-02-2401:14:05.log
-rw-r--r--.  1 root root    0 Feb 24 01:12  rocky001.log
-rw-r--r--.  1 root root  129 Mar 15  2021  .tcshrc
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Templates
drwxr-xr-x.  2 root root    6 Feb 21 23:56  Videos
-rw-------.  1 root root  799 Feb 25 06:07  .viminfo
-rw-------.  1 root root  166 Mar  8 18:09  .Xauthority
 

 4.2.5查看文件状态 stat

文件相关信息:metadata, data

每个文件有三个时间戳:

  access time 访问时间,atime,读取文件内容

  modify time 修改时间,mtime,改变文件内容(数据)

  change time 改变时间,ctime,元数据发生改变

[14:04:13 root@rocky001[ ~]#stat /root/zhang
  File: /root/zhang
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 202020997   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2024-02-24 23:21:57.422938045 +0800
Modify: 2024-02-24 23:01:17.004037478 +0800
Change: 2024-02-24 23:01:17.004037478 +0800
 Birth: 2024-02-24 22:56:01.394062778 +0800

 4.2.6确定文件内容

  文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使用

  格式:

file [options] ...

常用选项:

  -b 列出文件辨识结果时,不显示文件名称

  -f filelist 列出文件filelist中文件名的文件类型

  -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符

  -L 查看对应软链接对应文件的文件类型

  --help 显示命令在线帮助

4.2.7文件通配符模式 wildcard pattern

  文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件 通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符 常见的通配符如下:

* 匹配零个或多个字符,但不匹配

"." 开头的文件,即隐藏文件

? 匹配任何单个字符,一个汉字也算一个字符

~ 当前用户家目录

~mage 用户mage家目录

[0-9] 匹配数字范围

[a-z] 一个字母

[A-Z] 一个字母

[wang] 匹配列表中的任何的一个字符

[^wang] 匹配列表中的所有字符以外的字符

[^a-z] 匹配列表中的所有字符以外的字符

. 和 ~+ 当前工作目录

~-   前一个工作目录

另外还有在Linux系统中预定义的字符类表示法如下:man 7 glob 

[:digit:]:任意数字,相当于0-9

[:lower:]:任意小写字母,表示 a-z

[:upper:]: 任意大写字母,表示 A-Z

[:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母

[:blank:]:水平空白字符

[:space:]:水平或垂直空白字符

[:punct:]:标点符号

[:print:]:可打印字符

[:cntrl:]:控制(非打印)字符

[:graph:]:图形字符

[:xdigit:]:十六进制字符

4.2.8 创建空文件和刷新时间

touch命令可以用来创建空文件或刷新文件的时间

  格式:

touch [OPTION]... FILE...

选项说明:

-a 仅改变 atime和ctime

-m 仅改变 mtime和ctime

-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳

-c 如果文件不存在,则不予创建 

4.2.9复制文件和目录

利用 cp(copy)命令可以实现文件或目录的复制

  格式:

cp [OPTION]... [-T] SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

 常用选项

-i 如果目标已存在,覆盖前提示是否覆盖

-n 不覆盖,注意两者顺序

-r, -R 递归复制目录及内部的所有内容

-a 归档,相当于-dR --preserv=all,常用于备份功能

-d --no-dereference --preserv=links 不复制原文件,只复制链接名

-p 等同--preserv=mode,ownership,timestamp

-v --verbose

-f --force

-u --update 只复制源比目标更新文件或目标不存在的文件

-b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份

--backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.~#~ ,可以保留多 个版本

--preserv[=ATTR_LIST

4.2.10移动和重命名文件

  mv 命令可以实现文件或目录的移动和改名 同一分区移动数据,速度很快:数据位置没有变化 不同分区移动数据,速度相对慢:数据位置发生了变化

格式:

mv [OPTION]... [-T] SOURCE DEST

mv [OPTION]... SOURCE... DIRECTORY

mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:

-i 交互式

-f 强制

-b 目标存在,覆盖前先备份 

利用 rename 可以批量修改文件名 格式:

rename [options] ...

范例:

#为所有的f开头和数字1-6开头包含.log的文件替换成.bak后缀:

[14:04:28 root@rocky001[ ~]#ls
 1.log   4.log        anaconda-ks.cfg   Documents   fb.log   fe.log   initial-setup-ks.cfg   Public                            Templates   zhang
 2.log   5.log        app               Downloads   fc.log   ff.log   Music                  rocky001-2024-02-2401:14:05.log   test
 3.log  '[6-9].log'   Desktop           fa.log      fd.log   fg.log   Pictures               rocky001.log                      Videos
[14:42:36 root@rocky001[ ~]#rename '.log' '.bak' f*
[14:44:27 root@rocky001[ ~]#ls
 1.log   4.log        anaconda-ks.cfg   Documents   fb.bak   fe.bak   initial-setup-ks.cfg   Public                            Templates   zhang
 2.log   5.log        app               Downloads   fc.bak   ff.bak   Music                  rocky001-2024-02-2401:14:05.log   test
 3.log  '[6-9].log'   Desktop           fa.bak      fd.bak   fg.bak   Pictures               rocky001.log                      Videos
[14:44:30 root@rocky001[ ~]#rename '.log' '.bak' {1..9}*
[14:45:23 root@rocky001[ ~]#ls
 1.bak   4.bak        anaconda-ks.cfg   Documents   fb.bak   fe.bak   initial-setup-ks.cfg   Public                            Templates   zhang
 2.bak   5.bak        app               Downloads   fc.bak   ff.bak   Music                  rocky001-2024-02-2401:14:05.log   test
 3.bak  '[6-9].log'   Desktop           fa.bak      fd.bak   fg.bak   Pictures               rocky001.log                      Videos

 4.2.11删除文件

使用 rm 命令可以删除文件和目录 注意:此命令非常危险,慎重使用,建议使用 mv 代替 rm

格式:

rm [OPTION]... FILE...

 常用选项: -i 交互式

-f 强制删除

-r 递归

--no-preserve-root 删除/

范例:

[14:49:55 root@rocky001[ ~]#ls
 1.bak   4.bak        anaconda-ks.cfg   Documents   fb.bak   fe.bak   initial-setup-ks.cfg   Public                            Templates   zhang
 2.bak   5.bak        app               Downloads   fc.bak   ff.bak   Music                  rocky001-2024-02-2401:14:05.log   test
 3.bak  '[6-9].log'   Desktop           fa.bak      fd.bak   fg.bak   Pictures               rocky001.log                      Videos
[14:49:58 root@rocky001[ ~]#rm -rf /root/'[6-9].log'
[14:50:04 root@rocky001[ ~]#ls
1.bak  4.bak            app        Downloads  fc.bak  ff.bak                Music     rocky001-2024-02-2401:14:05.log  test
2.bak  5.bak            Desktop    fa.bak     fd.bak  fg.bak                Pictures  rocky001.log                     Videos
3.bak  anaconda-ks.cfg  Documents  fb.bak     fe.bak  initial-setup-ks.cfg  Public    Templates                        zhang
[14:50:05 root@rocky001[ ~]#

rm 虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安 全删除文件。

4.3目录操作

4.3.1显示目录树 tree

        常见选项:

-d: 只显示目录

-L level:指定显示的层级数目

-P pattern: 只显示由指定wild-card pattern匹配到的路径

4.3.2创建目录 mkdir

常见选项:

-p: 存在于不报错,且可自动创建所需的各目录

-v: 显示详细信息

-m MODE: 创建目录时直接指定权限

4.3.3删除空目录 rmdir

常见选项:

-p 递归删除父空目录

-v 显示详细信息 注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

5总结linux安全模型

  资源分派:

Authentication:认证,验证用户身份

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

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

5.1用户

Linux中每个用户是通过 User Id (UID)来唯一标识的

管理员:root, 0

普通用户:1-60000 自动分配

系统用户:1-499 (CentOS 6以前), 1-999 (CentOS 7以后) 对守护进程获取资源进行权限分配

登录用户:500+ (CentOS6以前), 1000+(CentOS7以后) 给用户进行交互式登录使用

5.2用户组

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

管理员组:root, 0

普通组: 系统组:1-499(CentOS 6以前), 1-999(CentOS7以后), 对守护进程获取资源进行权限分配

普通组:500+(CentOS 6以前), 1000+(CentOS7以后), 给用户使用

5.3用户和组的关系

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

范例:

[14:50:05 root@rocky001[ ~]#id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)

5.4安全上下文

Linux安全上下文Context:运行中的程序,即进程 (process),以进程发起者的身份运行,进程所能够 访问资源的权限取决于进程的运行者的身份 比如:分别以root 和wang 的身份运行 /bin/cat /etc/shadow ,得到的结果是不同的,资源能否能 被访问,是由运行者的身份决定,非程序本身

  范例:

[15:08:54 root@rocky001[ ~]#cat /etc/shadow
root:$6$67SyZYVOQAIod91f$e2nd3100ggNA3WDxo.rTUxdQIDMcrIFVUDYW9neloqawUnzbUHhSRrSXwrxTEbkZcrOhQR9t3k6yaRsdMe.6y1::0:99999:7:::

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

6.1用户和组的配置文件

6.1.1用户和组的主要配置文件

/etc/passwd:用户及其属性信息(名称、UID、主组ID等)

/etc/shadow:用户密码及其相关属性

/etc/group:组及其属性信息

/etc/gshadow:组密码及其相关属性

6.1.2passwd文件格式

login name:登录用名(wang)

passwd:密码 (x)

UID:用户身份编号 (1000)

GID:登录默认所在组编号 (1000)

GECOS:用户全名或注释

home directory:用户主目录 (/home/wang)

shell:用户默认使用shell (/bin/bash)

6.1.3shadow文件格式

登录用名 用户密码:一般用sha512加密

从1970年1月1日起到密码最近一次被更改的时间

密码再过几天可以被变更(0表示随时可被变更)

密码再过几天必须被变更(99999表示永不过期)

密码过期前几天系统提醒用户(默认为一周)

密码过期几天后帐号会被锁定 从1970年1月1日算起,多少天后帐号失效

6.1.4group文件格式

群组名称:就是群组名称

群组密码:通常不需要设定,密码是被记录在 /etc/gshadow

GID:就是群组的 ID

以当前组为附加组的用户列表(分隔符为逗号)

6.1.5gshdow文件格式

群组名称:就是群的名称

群组密码:

组管理员列表:组管理员的列表,更改组密码和成员

以当前组为附加组的用户列表:多个用户间用逗号分隔

6.1.6文件操作

vipw和vigr

pwck和grpck

6.2用户和组管理命令

用户管理命令

useradd

usermod

userdel

组帐号维护命令

groupadd

groupmod

groupdel

6.2.1用户创建

useradd 命令可以创建新的Linux用户

格式:

useradd [options] LOGIN

常见选项:

-u UID -o 配合-u 选项,不检查UID的唯一性

-g GID 指明用户所属基本组,可为组名,也可以GID

-c "COMMENT“ 用户的注释信息

-d HOME_DIR 以指定的路径(不存在)为家目录

-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中

-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在

-N 不创建私用组做主组,使用users组做主组

-r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000

-m 创建家目录,用于系统用户

-M 不创建家目录,用于非系统用户

-p 指定加密的密码

 范例:

useradd -r -u 48 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache 

 useradd 命令默认值设定由/etc/default/useradd定义

范例

[15:11:01 root@rocky001[ ~]#cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1    #对应/etc/shadow文件第7列,即用户密码过期后的帐号锁定的宽限期,-1表示不锁定   
EXPIRE=           #对应/etc/shadow文件第8列,即用户帐号的有效期
SHELL=/bin/bash
SKEL=/etc/skel   #用于生成新建用户家目录的模版文件
CREATE_MAIL_SPOOL=yes

[19:18:20 root@rocky001[ ~]#

显示或更改默认设置 

useradd -D

useradd –D -s SHELL

useradd –D –b BASE_DIR

useradd –D –g GROUP 

 批量创建用户

newusers passwd 格式文件

批量修改用户口令 

echo username:passwd |changepasswd 

6.2.2用户属性修改

usermod 命令可以修改用户属性

格式:

usermod [OPTION] login

常见选项:

-u UID: 新UID

-g GID: 新主组

-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使 用-a选项

-s SHELL:新的默认SHELL -c 'COMMENT':新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

-l login_name: 新的名字

-L: lock指定用户,在/etc/shadow 密码栏的增加 !

-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期

-f INACTIVE: 设定非活动期限,即宽限期

6.2.3删除用户

userdel 可删除Linux 用户

格式:

userdel [OPTION]... Login

常见选项:

-f, --force   强制

-r, --remove 删除用户家目录和邮箱

 范例: 强制删除用户和数据

#第一个终端

[19:18:20 root@rocky001[ ~]#useradd zhang-test
[19:44:55 root@rocky001[ ~]#id zhang-test
uid=1001(zhang-test) gid=1001(zhang-test) groups=1001(zhang-test)
[19:45:03 root@rocky001[ ~]#^C
[19:46:31 root@rocky001[ ~]#

#先建立一个zhang-test的用户。

#然后再xshell上面再建立一个本机终端并用zhang登录。

#第二个终端
[19:45:58 root@rocky001[ ~]#
[19:45:58 root@rocky001[ ~]#su zhang-test
[19:46:16 zhang-test@rocky001[ root]$

#这里是root切换,并没有输入用户密码

#第一个终端

[19:46:31 root@rocky001[ ~]#pas  
passwd       paste        pasuspender
[19:46:31 root@rocky001[ ~]#passwd zhang-test
Changing password for user zhang-test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[19:51:15 root@rocky001[ ~]#

#这里给zhang户一个登录密码。

#第二个终端

[19:49:43 zhang-test@rocky001[ root]$su - zhang-test
Password:
[19:53:53 zhang-test@rocky001[ ~]$

#这样才是完全切换为zhang用户。然后我们回到第一个终端开始执行强制删除zhang用户的操作。

#第一个终端

[19:51:15 root@rocky001[ ~]#userdel -rf zhang-test
userdel: user zhang-test is currently used by process 28644
[19:56:24 root@rocky001[ ~]#id zhang-test
id: ‘zhang-test’: no such user
[19:56:47 root@rocky001[ ~]#

#为什么用rf删除,有其他终端正在用zhang用户登录本机,如果只用-f删除,会删除失败。

6.2.4查看用户相关的ID信息

id 命令可以查看用户的UID,GID等信息

id [OPTION]... [USER]

 常见选项:

-u: 显示UID

-g: 显示GID

-G: 显示用户所属的组的ID

-n: 显示名称,需配合ugG使用

 6.2.5切换用户或以其他用户身份执行命令

su: 即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

格式:

su [options...] [-] [user [args...]]

常见选项:

-l  --login   su -l UserName   相当于 su - UserName

-c, --command         pass a single command to the shell with -c

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完 全切换

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换 说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很 多的bash子进程,环境可能会混乱。

范例:

[20:09:39 root@rocky001[ ~]#su - zhang-test -c 'touch zhang.txt'
[20:10:03 root@rocky001[ ~]#su - zhang-test
[20:10:24 zhang-test@rocky001[ ~]$ll
total 0
-rw-rw-r--. 1 zhang-test zhang-test 0 Mar 10 20:10 zhang.txt
[20:10:28 zhang-test@rocky001[ ~]$ls
zhang.txt
[20:10:29 zhang-test@rocky001[ ~]$

#在6.2.3 删除用户时也演示过切换用户。

6.2.6设置密码

passwd 可以修改用户密码

格式: 

passwd [OPTIONS] UserName

常用选项:

-d:删除指定用户密码

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-f:强制操作

-n mindays:指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays:非活动期限 --stdin:从标准输入接收用户密码,Ubuntu无此选项 

在6.2.3中已经演示过设置zhang用户的密码。

6.2.7修改用户密码策略

修改用户密码策略

格式:

chage [OPTION]... LOGIN

常见选项: 

-d LAST_DAY               #更改密码的时间 -m --mindays MIN_DAYS -M --maxdays MAX_DAYS -W --warndays WARN_DAYS -I --inactive INACTIVE #密码过期后的宽限期 -E --expiredate EXPIRE_DATE #用户的有效期 -l 显示密码策略 

 6.2.8创建组

groupadd实现创建组

格式:

groupadd [OPTION]... group_name

常见选项:

-g GID 指明GID号;[GID_MIN, GID_MAX]

-r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000

 范例:

groupadd -g 48 -r apache

6.2.9修改组

groupmod 组属性修改

格式:

groupmod [OPTION]... group

 常见选项:

-n group_name: 新名字

-g GID: 新的GID

6.2.10组删除

groupdel 可以删除组

格式:

groupdel [options] GROUP

 常见选项:

-f, --force 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录

6.2.11更改组成员和密码

gpasswd命令,可以更改组密码,也可以修改附加组的成员关系

格式:

gpasswd [OPTION] GROUP

常见选项:

-a user 将user添加至指定组中

-d user 从指定附加组中移除用户user

-A user1,user2,... 设置有管理权限的用户列表 

 范例:

[20:28:49 root@rocky001[ ~]#groupadd magedu
[20:29:11 root@rocky001[ ~]#id zhang-test
uid=1001(zhang-test) gid=1001(zhang-test) groups=1001(zhang-test)
[20:29:19 root@rocky001[ ~]#gpasswd -a zhang-test magedu
Adding user zhang-test to group magedu
[20:30:27 root@rocky001[ ~]#id zhang-test
uid=1001(zhang-test) gid=1001(zhang-test) groups=1001(zhang-test),1002(magedu)
[20:30:35 root@rocky001[ ~]#

6.2.12更改和查看组成员

groupmems 可以管理附加组的成员关系

格式:

groupmems [options] [action]

 常见选项:

-g, --group groupname   #更改为指定组 (只有root)

-a, --add username     #指定用户加入组

-d, --delete username #从组中删除用户

-p, --purge               #从组中清除所有成员

-l,  --list                 #显示组成员列表

范例:

[20:37:04 root@rocky001[ ~]#useradd wangge
[20:37:12 root@rocky001[ ~]#id wangge
uid=1002(wangge) gid=1004(wangge) groups=1004(wangge)
[20:37:19 root@rocky001[ ~]#groupmems -l -g magedu
zhang-test

[20:38:09 root@rocky001[ ~]#groupmems -a wangge -g magedu
[20:38:24 root@rocky001[ ~]#groupmems -l -g magedu
zhang-test  wangge
[20:38:32 root@rocky001[ ~]#

6.3文件权限管理

  程序访问文件时的权限,取决于此程序的发起者

进程的发起者,同文件的属主:则应用文件属主权限

进程的发起者,属于文件属组;则应用文件属组权限

应用文件“其它”权限

6.3.1设置文件的所有者chown

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

格式:

chown [OPTION]... [OWNER][:[GROUP]] FILE...

chown [OPTION]... --reference=RFILE FILE...

用法说明:

OWNER   #只修改所有者

OWNER:GROUP #同时修改所有者和属组

:GROUP   #只修改属组,冒号也可用 . 替换

--reference=RFILE  #参考指定的的属性,来修改

  -R #递归,此选项慎用,非常危险!

范例:

[20:46:22 root@rocky001[ /]#cd /Date
[20:46:40 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root    0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root   19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root root 1664 Feb 28 04:47  abc.txt
[20:46:41 root@rocky001[ Date]#chown wangge abc.txt
[20:47:28 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root   root    0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root   root   19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 wangge root 1664 Feb 28 04:47  abc.txt
[20:47:31 root@rocky001[ Date]#chown :magedu abc.txt
[20:48:00 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root   root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root   root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 wangge magedu 1664 Feb 28 04:47  abc.txt
[20:48:02 root@rocky001[ Date]#chown root.root abc.txt
[20:49:00 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root    0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root   19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root root 1664 Feb 28 04:47  abc.txt
[20:49:02 root@rocky001[ Date]#

6.3.2设置文件的属组信息chgrp

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

格式:

chgrp [OPTION]... GROUP FILE...

chgrp [OPTION]... --reference=RFILE FILE...

-R 递归

范例:

[20:52:09 root@rocky001[ Date]#chgrp magedu abc.txt
[20:52:29 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
[20:52:30 root@rocky001[ Date]#

6.3.3文件权限

文件权限说明

文件的权限主要针对三类对象进行定义

owner 属主, u

group 属组, g

other 其他, o

注意:

用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不再向 右查看其权限 r和w权限对root 用户无效 只要所有者,所属组或other三者之一有x权限,root就可以执行

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

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 可读也可写目录

6.3.4修改文件权限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: 递归修改权限

范例: 设置 X 权限

[21:05:46 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
drwxr-xr-x. 2 root root      6 Mar 10 21:00  test1
[21:06:21 root@rocky001[ Date]#chmod -R a-X test1
[21:06:49 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
drw-r--r--. 2 root root      6 Mar 10 21:00  test1
[21:06:51 root@rocky001[ Date]#

#因为test1有X权限,这里我们可以反向去除这个权限。

范例:

chmod u+wx,g-r,o=rx file

chmod  -R g+rwX /testdir    

chmod  600 file    #6是4+2,即读和写的权限,第一位是代表user。

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

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

实现方式:

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

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

非特权用户umask默认是 002

root的umask 默认是 022

查看umask

umask #模式方式显示

umask –S #输出可被调用

umask –p

修改umask

umask #

范例:

umask 002

umask u=rw,g=r,o=

6.3.6Linux文件系统上的特殊权限

  前面介绍了三种常见的权限:r, w, x 还有三种特殊权限:SUID, SGID, Sticky 特殊权限

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

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

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

6.3.6.1特殊权限SUID

前提:进程有属主和属组;文件有属主和属组

任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

进程访问文件时的权限,取决于进程的发起者

二进制的可执行文件上SUID权限功能:

   任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

   启动为进程之后,其进程的属主为原程序文件的属主

   SUID只对二进制可执行程序有效

   SUID设置在目录上无意义

SUID权限设定:

chmod u+s FILE...

chmod 4xxx FILE

chmod u-s FILE...

 6.3.6.2特殊权限SGID

二进制的可执行文件上SGID权限功能:

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属组为原程序文件的属组

SGID权限设定:

chmod g+s FILE...

chmod 2xxx FILE

chmod g-s FILE...

目录上的SGID权限功能:

  默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有 写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录

SGID权限设定:

chmod g+s DIR...

chmod 2xxx DIR

chmod g-s DIR...

6.3.6.3特殊权限 Sticky 位

  具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

  在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

  sticky 设置在文件上无意义

Sticky权限设定:

chmod o+t DIR...

chmod 1xxx DIR

chmod o-t DIR...

6.3.6.4特殊权限数字法

SUID SGID STICKY

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

6.3.6.5设定文件特殊属性

设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件

不能删除,改名,更改

chattr +i file

只能追加内容,不能删除,改名

chattr +a file

 显示特定属性

lsattr

 范例:

[21:22:48 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
drwxr-xr-x. 2 root root      6 Mar 10 21:00  test1
[21:22:49 root@rocky001[ Date]#lsattr
-------------------- ./abc.txt
-------------------- ./[1-9]
-------------------- ./[1-9].save
-------------------- ./test1
[21:23:25 root@rocky001[ Date]#chattr +i abc.txt
[21:24:54 root@rocky001[ Date]#chattr +i test1
[21:25:02 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
drwxr-xr-x. 2 root root      6 Mar 10 21:00  test1
[21:25:04 root@rocky001[ Date]#last
last      lastb     lastcomm  lastlog
[21:25:04 root@rocky001[ Date]#lsattr
----i--------------- ./abc.txt
-------------------- ./[1-9]
-------------------- ./[1-9].save
----i--------------- ./test1
[21:25:27 root@rocky001[ Date]#rm -rf test1
rm: cannot remove 'test1': Operation not permitted
[21:25:48 root@rocky001[ Date]#chattr -i test1
[21:26:06 root@rocky001[ Date]#lsattr
----i--------------- ./abc.txt
-------------------- ./[1-9]
-------------------- ./[1-9].save
-------------------- ./test1
[21:26:09 root@rocky001[ Date]#rm -rf test1
[21:26:14 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root      0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root     19 Feb 28 04:47 '[1-9].save'
-rw-r--r--. 1 root magedu 1664 Feb 28 04:47  abc.txt
[21:26:16 root@rocky001[ Date]#

 6.3.6.6访问控制列表 ACL
6.3.6.6.1  ACL权限功能

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

 ACL生效顺序:

所有者,自定义用户,所属组|自定义组,其他人

6.3.6.6.2ACL相关命令

setfacl 可设置ACL权限

getfacl 可查看设置的ACL权限

 setfacl 参数
  -m:设置后续acl参数 
  -x:删除后续acl参数  
  -b:删除全部的acl参数
  -k:删除默认的acl参数
  -R:递归设置acl,包括子目录
  -d:设置默认acl

范例:

#之前我创建的一个zhang-test的用户现在就可以用root进行一个操作,用setfacl关掉zhang-test用户的RWX权限

[21:45:24 root@rocky001[ Date]#getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::rw-
user:zhang-test:r--
group::r--
mask::r--
other::r--

[21:45:37 root@rocky001[ Date]#

[21:37:51 root@rocky001[ Date]#setfacl -m u:zhang-test:- abc.txt
[21:39:41 root@rocky001[ Date]#ll
total 8
-rw-r--r--. 1 root root    0 Feb 28 04:45 '[1-9]'
-rw-r--r--. 1 root root   19 Feb 28 04:47 '[1-9].save'
-rw-r--r--+ 1 root root 1664 Feb 28 04:47  abc.txt

#然后用getfacl命令查询。前面setfacl可以关掉用户权限,当然也可以打开权限。
[21:39:43 root@rocky001[ Date]#getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::rw-
user:zhang-test:---
group::r--
mask::r--
other::r--

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

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

#命令模式按i进行输入。

#然后esc回到命令模式输入:wq 保存退出。然后cat 查看文本内容 I love eureka!。

#

7.2 vim编辑器里怎么写中文

在VIM中输入中文,通常需要先安装支持中文输入的系统环境,并配置Vim以适应中文环境。以下是具体步骤:

  1. 安装支持中文的系统环境。在linux系统中,通常需要安装支持中文的输入法,如fcitx或ibus。可以使用以下命令进行安装:`sudo apt-get install fcitx` 或 `sudo apt-get install ibus`。
  1. 配置Vim。在~/.vimrc文件中添加以下配置:`set encoding=utf-8`,`set fileencodings=utf-8, gbk, gb2312, cp936`,`set termencoding=utf-8`,`set fileformat=unix`。在~/.bashrc文件中添加:`export LANG=zh_CN.UTF-8`,`export LC_ALL=zh_CN.UTF-8`。
  2. 配置输入法。在终端中输入 `ibus-setup` 打开ibus配置窗口,选择输入法选项,添加中文输入法。
  3. 开始使用中文输入。在Vim编辑器中,输入`i`或`a`进入插入模式,按下`Ctrl+Space`切换到中文输入法,然后输入中文。

通过以上步骤,就可以在Vim编辑器中愉快地输入中文了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值