CSA

第一天

内核层

操作系统层

1.什么是操作系统

操作系统是什么?操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。

操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用的接口(应用编程接口API,由操作系统实现提供的所有系统调用所构成的集合,是应用程序和系统之间的接口)呈现给用户。系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给应用程序。

硬件:框架

冯诺依曼体系结构:

1946年美籍凶牙利科学家冯诺依曼提出存储程序原理,把程序本身当做数据来对待,程序和该程序处理数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。

特点:

(1)计算机处理数据和指令一律用二进制数表示

(2)顺序执行程序

计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序
从主存储器中取出指令一条一条的执行,这一概念称为顺序执行程序。

(3)计算机硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。

memory:编址存储设备

假设我们的存储器为一个长条,其中每八位(bit)作为一个单元,我们把它称为字节byte,字节又称为cell。

机器语言:二进制指令 (但是对于编程 人员来说二进制语言太难懂(太简陋,太底层),但是程序员想用简单点的语言去描述计算机又不懂所以两者之间不能耦合可以加一个中间层–编译器)

汇编语言: 仅是将二进制转为人类语言想接近的语言或者是与人类语言符号相同的类型(+ and/plus)

所以任何一款芯片制造商他们都把机器的代码也就是机器语言提供一个较为简单的稍微向上一点的但任然很简陋的编程接口叫做汇编语言(微码编程语言)

软件:

----汇编语言: (低级语言)

应用:驱动程序

汇编语言(assembly
language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

eg:操作:寄存器BX的内容送到AX中

1000100111011000              机器指令

mov ax,bx                    汇编指令

(注意:最终识别的还是01二进制数所以还需要将汇编语言转换为二进语言所以需要用到汇编器)

----(高级语言):比较接近人类的思维逻辑    ----(编译器)

系统级:  c    c++

适用场合大型的对性能要求比较高的服务类程序  
如:oracle 
mysql linux windows /

应用级:java  python 
ruby

2.系统调用的层级关系(系统组成结构)

操作系统内核的功能:

系统调用接口

程序管理

内存管理,虚拟内存—内存交换

文件系统管理

设备驱动

3.Linux简史

Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU计划、POSIX 标准和Internet 网络。

linux来源于哪里?为什么linux是免费的?

linux的发展历史

1969年 ken.Thompson

使用BCPL(基本组合编程语言)开发出了Unics

1972年 Dennis Ritchie

用c语言改写Unix

1984年 Richard M.Stallman

创办GNU计划和自由软件基金会,旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU 系统,bash工作环境,gcc编译程序等自由软件GPL

1987年 Andrew S. Tanenbaum

Minix

1991年 Linus Benedict
Torvalds

Linux

1994年 Bob Young Marc Ewing

RedHat(Linux的发行版之一),是世界上最大的开放源代码的公司之一。

4.    linux主要特性

1.基本思想(一切皆文件)

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

2.完全免费

Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

3.完全兼容POSIX1.0标准

这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

4.多用户、多任务

Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。

5.良好的界面

Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

6.支持多种平台

Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。常见的操作系统:UNIX、Linux类、MacOS、Windows类、iOS、Android、WP、ChromeOS

linux严格来说只是linux内核,我们通常说的linux其实都是基于linux内核的一个发行版本的操作系统。linux这些发行版都是免费使用和自由传播的操作系统并且Linux发行版在服务器上已成为主流的操作系统。

红帽认证:

RHCSA   redhat certified system administrator

RHCE    redhat certified engineer

RHCA    redhat certified Architect

5.操作系统分类:

桌面操作系统(个人操作系统)

window 
dos  95 98 2000 2003 Vista xp 7 8
10   架构上 16 32 64位

Mac OS 
(狮子  雪豹–版本)

手机: Android(谷歌) IOS(苹果) window
phone(微软)–诺基亚 Sysbian(诺基亚)
BlackBerry OS (黑莓)linux

服务器企业操作系统  (塔式、刀片式、机架式、小型机、大型机)

大型机:通常用于政府、银行、交通、保险公司和大型制造企业。特点是处理数据能力强大、稳定性和安全性又非常高。

windows server (2003  2008)

linux 
redhat linux、 centos linux、 fedora
linux 、suse  linux、  Debian 
linux 、 Ubuntu linux kali

unix   
IBM-AIX  HP-UX  sun-Solaris  
小型机–迷你裙   (约翰-哥伦将)

Ken Tompson   —unics

Dennis Ritchie   ----c/unix   
minx

林纳斯·本纳第克特·托瓦兹  —linux

Richard Stallman史托曼 —GNU计划   gcc

为什么我们要学习红帽的linux操作系统?红帽主要是做什么的?

redhat 全球最大的开源技术厂家;云、虚拟化、存储、Linux 和中间件技术。redhat
linux是全球应用最广泛的linux;

1)UNIX是商业软件,而Linux是开放源代码,免费的,自由软件。

2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

6.linux的安装准备工作:

windows是64位操作系统

确认电脑开启虚拟化功能

内存最少2G

1、退出或者卸载360等等一系列软件

2、需要的环境:Vmare虚拟化软件(虚拟工具)

3、安装远程连接工具Xshell

4、新建虚拟机:

>>终端

物理终端 
/dev/console

直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,

一般是多台服务器共享一套终端,

简称KVM(Keyboard键盘,video显示器,mouse鼠标)

虚拟终端  
/dev/tty

默认有6个

ctrl + alt
+f1/2/3/4/5/6

同一台终端(物理设备)上虚拟出多个终端,它们之间互相不影响,至少看起来互相不影响。这些终端就是虚拟终端

附加在物理终端之上,用软件方式虚拟实现,Redhat默认启用6个虚拟终端,

可以通过快捷键来切换,切换方式:Ctrl-Alt-F[1–6], 对应的文件是/dev/tty#。

可以同过tty命令来查看当前的虚拟终端号。tty是teletypewriter的简称。

伪终端(远程终端)pty   /dev/pts   ssh  
telenet

模拟终端

是一个程序,这些程序用来模拟物理终端

两种应用场景,第一在图形界面下打开的命令行接口,第二基于ssh协议或telnet协议等远程打开的命令行界面,

是运维工程师用的最多的一种连接服务器的方式。pts(pseudo-terminal slave)是pty的实现方法。

GUI (Graphical
User Interface) 图形用户界面    对于一些初学者

Gnome: C

KDE :  C++

XFace: 轻量级的

CLI (command line
interface) 命令行界面     liunx主打命令行操作

bash 
shell

csh  
shell

zsh  
shell

ksh  
shell

tcsh 
shell

sh   
shell

快照

xshell进行远程登录

Linux的基本原则

1、由目的单一的小程序组成

2、一切皆文件,设备的访问入口也是文件

3、避免捕获用户接口,尽量不和用户交互

4、配置文件保存在纯文本格式,只要有一个文本编辑器,足以搞定所有的配置。

命令格式

命令

命令  参数

命令   -选项

命令   -选项    参数

修改命令的执行特性

短选项        -l

多个选项可以组合

长格式        --long

参数        指定命令的作用对象

=============

基础命令

#ip
a /ifconfig  查看IP地址

#dhclient     开启网络连接

#kill-9  ID   结束指定进程
 只能是管理员操作普通用户没有权限

Xmanager中的Xshell软件连接到模拟器用户主机:ssh 192.168.220.128

:ssh [email protected]

[root@localhost
~]#

用户名 @主机名
打开目录位 置       #管理用户/$普通用户

[root@localhost
~]#pwd 打印目录信息

家目录 :创建一个用户时就会产生一个和用户名相同的目录叫做家目录——一个普通的文件夹

su licong  切换用户但是工作目录没有切换

su -l licong 切换用户 工作目录也随之切换(l可以省略)

[root@localhost 公共]#  echo $PATH查看工作环境

ip a   查看ip地址

dhclient  地址请求

kill -9 ID  结束相应的进程

pwd  指出当前工作环境   
print workdoing directory

su       切换到root用户并不切换环境(工作目录) switch user

su root 切换用户身份但不切换目录

su - root    切换到root用户并切换环境(切换了工作目录)

cat /etc/redhat -release 查看版本信息

cd 切换目录  change
directroy

绝对路径     从根开始到目标的路径叫绝对路径

相对路径     相对当前目录开始到目标路径

/   根

~   家目录 /root /home/redhat

~ USERNAME(root用户有权限)  直接切换到指定用户的家目录

-     在上一个目录和当前目录来回切换

.   当前目录

…  上一级目录

passwd

修改密码:passwd 用户名    直接输入passwd修改当前用户的密码

删除密码:passwd -d 用户名

root用户:不需要输入原密码,可以不符合密码复杂性规则,可以给任何人修改密码

普通用户:需要输入原密码,必须符合密码复杂性规则,passwd修改密码无法指定用户

[student@localhost
~]$ su -c passwd普通用户给root用户修改密码

破解密码

1.Reboot the system.

2.Interrupt the boot
loader count down by pressing anykey.

3.Move the cursor to
the entry that needs to be booted.

4.Press “e” to edit
the select edentry.

5.Move the cursor to
the kernel command line(the line that start swith linux16.

6.Append rd.break

7.Press Ctrl+x to
start.

8.Remount /sysroot as
read-write.

switch_root:/# mount
-o remount,rw /sysroot

9.Switch into a
chroot jail, where /sysroot is treated as the root of the filesystem tree

switch_root:/# chroot
/sysroot

10.Set a new root
password:

sh-4.2# passwd
[root]        (change the root
password)

or

sh-4.2# passwd -d
root        (delete the root password)

11.Make sure that all
unlabeled files (including/etc/shadow at this point)get relabeled during boot.

sh-4.2# touch
/.autorelabel

  1. sh-4.2# exit

  2. switch_root:/#
    exit

eg:破解root密码:

1、重启虚拟机

2、在linux16末尾加上 rd.break,ctrl+x执行

3、mount -o remount,rw /sysroot

4、chroot /sysroot

5、passwd root

6、输入新密码:

7、确认密码

8、touch /.autorelabel

9、exit

10、exit

重启:reboot

关机:shutdown -h now,poweroff

查看当前Linux发行版本信息:cat /etc/redhat-release

Red Hat Enterprise Linux Server release 7.2
(Maipo)

[root@localhost 桌面]# uname -r   内核版本号

3.10.0-327.el7.x86_64   主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]

3主版本号

10次版本号,一般偶数表示较稳定版本

0修订版本号

327.el7 表示修改了327次

1.项目初版本时,版本号可以为 0.1 或 0.1.0,也可以为 1.0 或 1.0.0

2.当项目在进行了重大修改或局部修正累积较多,而导致项目整体发生全局变化时,主版本号加 1;

3.当项目在原有的基础上增加了部分功能时,主版本号不变,子版本号加 1,修正版本号复位为 0,因而可以被忽略掉 ;

4.当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变,修正版本号加 1;

5.另外,编译版本号一般是编译器在编译过程中自动生成的,我们只定义其格式,并不进行人为控制 .

作业:

1.查看linux发展历史,了解什么是开源为什么linux是开源软件,

去了解unix和linux之间到底有什么不同或者有什么相同。

2.学会如何装linux操作系统

3.如何破解密码。

4.ip a

dhclient

kill -9

passwd

-d

第二天

基础命令

命令格式:主命令 选项  参数(操作对象)

列出目录下的内容(list):ls

ls
-l        以长列表方式列出   =ll

ls
-r        逆序列出

ls -d
      查看当前目录.

ls
-ld      长列表列出当前目录的详细信息

ls -lh 显示目录或文件大小

ls
-a        列出隐藏文件,包括.和…

ls
-A        列出隐藏文件,不包括.(当前目录)和…(上一级目录)

ls -i 显示文件索引节点号(inode)。一个索引节点代表一个文件,在linux中保存在磁盘分区中的文件都给它分配一个编号,称为索引节点号inode。

man
ls        查看ls的使用手册

enter键可以一行一行的翻,空格键可以一页一页的翻

按q键退出

linux的文件类型:

-        普通文件,类似于Windows的记事本

d       目录文件,类似于文件夹

c       
字符设备文件,串行端口设备,顺序读写,键盘

b       块设备文件,可供存储的接口设备,随机读写,硬盘

p        管道文件,用于进程间的通信

l        link,链接文件

s        套接字文件,通常用于网络上的通信。可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行数据通信

-rw-------. 1 root root    1789(文件所对应大小信息) 1月 
13 13:47 anaconda-ks.cfg

drwxr-xr-x. 2 root
root       6 1月  13 11:46 公共

rwx rwx rwx .

权限标识符 rwx

所属用户标识位

所属组标识位

其他用户:

. 扩展权限标识位(没有)          + 添加了扩展权限

硬链接次数

所属用户 所属组

大小 byte

创建时间(最后一次修改文件时间)

2-10 文件权限 rwx

. acl 扩展权限

硬链接次数  (备份文件   内容是同步变化的)

所属用户  所属组

大小

时间

文件、目录名

在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode。

(1)符号链接又叫软链接,和原文件不是一个文件。例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。符号链接记录的是目标的path。符号链接可以跨越文件系统,也可以为目录建立。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。(相当于备份)

创建链接文件:ln -s 原文件 链接文件

(2)硬链接,只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接记录的是目标的inode

创建硬链接: ln  原文件   新文件

创建软硬连接、查看、删除编辑

eg:在root家目录创建文件file, 在/目录下创建file文件的软链接文件haha

~]#touch file  创建文件

/]#ln -s /root/file haha

~]#ln -s file /haha

touch  文件名           创建文件

ln 原文件  目标文件     创建硬链接   ps:硬链接至少为1

ln -s  原文件   目标文件  创建软链接

nano 文件名             编辑文件

cat 文件名  查看文件  [root@localhost
~]# cat /etc/redhat-release//uname-r

版本信息        内核信息

rm 文件                 删除文件

which查找命令路径

which 只想查看命令路径但是不想查看别名路径

#\which ls

#which --skip-alias ls

who
查看谁登陆到当前系统相关用户信息

root     :0           2019-03-17 09:58 (:0)

root     pts/0        2019-03-17 10:01 (:0)  伪终端0

-b 最近一次系统是什么时间启动的       tty本地虚拟终端

-d 显示死亡进程

-r 显示运行级别

w就是who是增强版的who(可以显示登录用户,以及在做什么)

14:50:45 up  4:54,         2
users,  load average: 0.00, 0.03, 0.05

USER     TTY     
FROM       LOGIN@       IDLE           JCPU           PCPU             WHAT

root     :0      
   :0               09:58           ?xdm?  
       1:56            0.23s gdm-session-worker [pam/

root     pts/0   
:0               10:01            5.00s 
        0.59s            0.05s                 w

用户   终端   从哪天主机登录 连接多长时间 空闲多长时间   cpu累计时间 pcpu    现在运行什么命令

文件查找: find

-name  按名字查找

Ps;[root@localhost
/]# find /root/ -name ‘f*’//找出root用户下以find开头的文件

-inum   按id查找

-iname 按名字查找忽略大小写

-type    按文件类型查找

type:查看命令类型。

eg:查找一个文件下有哪些硬连接:

#find / -inum id

[root@localhost ~]# find
/ -inum 69243921

/root/file1

/file1

[root@localhost ~]#

[root@localhost ~]#

[root@localhost ~]# find
/ -name bbb

/bbb

FHS:filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。

可执行文件:指的是可以由操作系统进行加载执行的文件

FHS采用树形结构组织文件。FHS文件系统层级图

文件系统:操作系统用于明确存储设备或分区上的文件的方法和数据结构;

(磁盘上组织文件的方法   在操作系统中负责管理和存储文件信息的软件机构)

linux里面有哪些目录:

/                根目录,通常不在这里存储文件

/bin        可执行文件,ls,cd

/sbin     可执行文件

/boot   开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等

/dev   设备文件,任何设备与接口设备都是以文件形式存在于这个目录的

/root   root用户的主目录

/home   普通用户的主目录

/mnt   挂载点目录

光盘必须和/下的某个目录节点建立联系才能使用。

把光盘和指定的挂载点目录建立联系的过程叫做挂载。

mount /dev/sr0 /mnt

/media  媒体目录,也是挂载点目录

/opt   可选目录。存放第三方软件包和数据文件

/var    可变目录,用以存放经常变化的文件,如日志文件

/etc   配置文件

/lib      系统的函数库

/proc     该目录是一个虚拟文件系统,它放置的数据都在内存当中

/run      系统运行时所需文件

/usr      放置的数据为可分享的与不可变动的,unix操作系统软件资源所放置的目录,而不是用户数据

/srv    service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录

/tmp       让一般用户或者是正在执行的程序暂时放置文件的地方

/sys       这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要是记录与内核相关的信息

一定要熟悉熟悉再熟悉

Shell:命令解释器

命令分为两类:

由shell程序的自带的命令:内置命令(builtin)

由独立的可执行程序文件,文件名即命令名:外部命令

选项:指定命令的运行特性,指明要运行命令中的哪一个功能代码

选项有两种表现形式 :

短选项:例如:-l,-d

如果同一命令同时使用多个短选项,多数可合并

注意:有些命令的选项没有-

长选项:例如–help,–human-readable

注意:有些选项可以带参数,此称为选项参数

参数:命令的作用对象:命令对什么生效

注意:不同的命令的参数,有些命令可同时带多个参数,多个之间以空白字符分隔。

??那命令怎么知道是那个路径下的命令呢?系统为了让用户在命令行快速方便地执行命令,用一种机制来实现,

这种机制就叫做环境变量,

变量是什么?变量是命名的内存空间。

变量赋值

NAME=haha                                   int a=123

变量声明的过程就是申请内存使用的过程

环境变量

定义当前用户工作环境属性的变量

PATH

hash 实现缓存管理
   哈希

缓存,命中率相当高,在hash表中保存了执行过的所有的路径,

当缓存很大时,一定比PATH查找速度快吗?

hash   命令哈希

-p /bin/ls haha   添加哈希表

-t ls   查看指定命令的哈希表

-d ls  删除指定命令的哈希表

-r      清空所有的hash表

alias   添加指定命令别名

alias 目标命令名称=‘需要执行的命令串本身’

/etc/bashrc    对所有用户全部生效的别名信息

nano ~/.bashrc      别名信息仅对当前用户生效

source ~/.bashrc   生效

!!!写出一个永久生效的命令别名为cha,该命令别名可以显示/root/a文件的详细属性和inode号

对当前系统所有用户生效(永久生效):

nano /etc/bashrc

alias cha=‘ls -li /home/file1 /file1.bak
/root/file1.bak.bak /root/f1’//查看多个文件

#bash

仅对指定用户生效redhat:nano /home/redhat/.bashrc

Alias cha=’li -j’

Source /etc/bashrc

unalias  别名  删除指定的命令别名

与时间有关的命令:

date 输出和更改日期时间:(软件、系统时间)

更改日期的格式   月日时分年.秒

Date:系统时间

Hwclock:硬件时间

date -s “” ‘’

date -s            只有root才能设置,其它只能查看

date -s 20160813   日期为20160813,时间为00:00:00

date -s 01:01:01   设置具体时间,不会对日期做更改

date -s “01:01:01
2016-08-13″  设置全部时间

date -s “01:01:01
20160813″    设置全部时间

date -s “2016-08-13
01:01:01″  设置全部时间

date -s “20160813
01:01:01″    设置全部时间

查看硬件时间:clock

查看硬件时间:hwclock

-w       硬件时间给系统时间

-s       
系统时间给硬件时间

查看日历:cal

cal查看当年当月的日历

cal 年份                查看一年日历

cal 月份 年份        查看当年当月的日历

cal -1
     查看该月的日历

cal
-3      查看前一个月,本月,下月的日历

将输入接到标准输出(从键盘输入,从显示器输出):echo

命令使用帮助

内部命令

help COMMAND

COMMAND
–help/-h

外部命令

COMMAND
–help

命令手册   manual

man COMMAND

man手册分段

NAME           命令名称及功能简要说明

SYNOPSIS       格式说明,用法说明,包括可用的选项

DESCRIPTION    命令功能的详尽说明,可能包括每一个选项的意义

OPTIONs        选项,说明每一个选项的意义

EXAMPLE        示例,举例说明

FILES          此命令相关的配置文件

AUTHOR         作者

REPORTING BUGS bug反馈

COPYRIGHT      版权

SEE ALSO       参见

0 成功

1-255  错误状态

man手册章节

从1到8哪个章节先出现就显示哪个,如man mount就显示第8章节,那如何知道命令有哪些章节呢?

用whatis
read

举例man read,man 2 read,export LANG=en修改字符集

1   用户命令,/bin,/usr/bin,/usr/local/bin

2   系统调用,系统调用和命令有可能重名,但是不是一回事

3   库调用,只有库才有库调用

4   特殊文件,如设备文件,系统上的设备文件只是设备的访问入口,文件中不存储任何内容

5   文件格式,配置文件的格式说明,举例passwd

6   games,游戏,休闲益智类的游戏

7   杂项,不便归类的杂项,Miscellaneous

8   管理命令,/sbin,/usr/sbin,/usr/local/sbin

手册符号说明

[]  可省略

<>  必选

… 多选多

{}  分组

翻屏

下翻一页       空格

上翻一页       b

下翻一行   回车

上翻一行   k

查找

/KEYWORD   向后

n   下一个

N   前一个

?KEYWORD

N   下一个

n   上一个

退出

q

touch创建普通文本文件

文件命名规则:

(1)不能使用/来当文件名,/是用来做根的,也是用来做路径分隔符的

(2)文件名不能超过255个字符

(3)区分大小写file
File FILE fIle

(4)目录也是文件,在同一路径下,两个文件不能同名

创建多个普通文件:

方法1:touch
文件名1 文件名2 文件名3

方法2:touch
{文件名1,文件名2,文件名3}

touch {1,2}{3,4}

touch abc{1…100}

stat查看文件的详细信息

touch不仅可以创建空文件,还可以改变文件的修改时间

atime
        access time        看了一下内容     
cat

mtime 
        modify time     文件内容被改变了,ctime也会发生改变

ctime        change
time         元数据被改变,重命名

mkdir 目录名     创建目录文件

-p        parents        父目录

-v        verbose        详细信息

rm 删除文件,

命令别名默认带-i,该选项用来提示用户进行交互。

-f  force,强行删除,不提示

-r  recursive,递归删除来删除目录

rm:跳过安全模式

-rf     删除文件夹

rm 
8*  以8开始的都删除

cp复制文件:

  • r 复制目录

-p  复制的时候保留文件原有的属性,时间戳等信息

-a  归档复制,常用于备份

单源复制: cp [OPTIoN]… [-T] SOURCE
DEST

多源复制: cp [OPTIon]… SOURCE… DIRECTORY

cp [OPTION]… -t
DIRECTORY SOURCE…

-i: 交互式复制,即覆盖之前提醒用户确认

f:强制覆盖目标文件:

r:递归复制目录:

d:复制符号链接文件本身,而非其指向的源文件

a:dR --preserve-all,
archive, 用于实现归档

– preserv=

mode:权限

ownership:  属主和属组timestamps

时间戳context

安全标签xattr

扩展属性links

符号链接all

上述所有属性

如果DEST不存在:错误;如果DEST存在:

如果DEST是非目录文件:错误;

如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名:

mv移动文件:等同Windows里面的剪切,移动之后原文件消失

-i  提示

-f  强制覆盖

-t  先写目标 后写源

练习题

1、创建目录

在/mnt下创建boot和sysroot目录

在/mnt/boot下创建grub目录

在/mnt/sysroot下创建proc,sys,bin,sbin,lib,usr,var,etc,dev,home,root,tmp

在/mnt/sysroot/usr下创建bin,sbin,lib

在/mnt/sysroot/lib下创建modules

在/mnt/sysroot/var下创建run,log,lock

在/mnt/sysroot/etc下创建init.d

2.如何一次性在/test目录创建以abc表示的100个文件,例如{abc1,abc2,abc3,…abc100}

查看文件命令

cat连接并显示文件到标准输出

-n  显示行号,行号只是行号,不是文件内容

不带任何选项时,从标准输入接收输出到标准输出

tac    按行逆序显示文件,同cat

more   支持向后翻,在没有翻到最后一屏时支持向前翻,空格/k/回车

less   前后翻,用法同man,man手册就是用less命令打开的

head   查看文件前n行,默认是10行

-n  指定多少行

-LINE NUMBER   直接用行数作为选项

tail  查看文件后n行,默认是10行

-n  指定多少行

-f  follow,查看文件后并不退出,滚动显示追加内容

/var/log/messages

作业题:

1.在root用户的主目录下创建两个目录分别为haha和hehe,复制hehe目录到haha目录并重命名为apple。

2.将hehe目录移动到apple目录下,在haha目录下创建一个普通文件为heihei.txt。

3.写一个命令别名为aoe,他实现的功能为:列出上一题haha目录下的详细内容。

4.在/usr/local/etc下创建一个目录为mulu1,创建一个普通文件为wenjian1。在/usr/local/bin创建一个目录为mulu2,创建一个普通文件为wenjian2。创建成功后使用ls命令以及它的选项来检查该题的正确性

5.创建目录/test/sysroot在该目录下创建三个文件a,b,c 之后再将sysroot目录移动到/tmp目录下改名为sys保证目录下三个文件也存在。

6.删除 /tmp/sys/a 文件。

7.创建目录/tmp下创建4个目录,并在这四个目录下分别创建一个test目录

8.创建一个test目录,在该目录下创建一个文件,内容写

9.在/dir下创建目录dir2和文件file1,移动文件file1到上面创建的test目录中,将目录dir2复制到test目录中

文本处理

cut   文本切割显示:

cut -d 指定分隔符 -f
指定第几列 被切割文件

-f 1,3第一列和第三列

-f 1-3第一列到第三列

-c 1-4 指定第一到第四个字符

指定分隔符的时候空格需要用单引号或双引号引起来

cut -d : -f 1-3
–output-delimiter=@ /etc/passwd

echo 回声
标准输入输出指令

$   
引用变量

重定向

例如:[root@localhost /]# echo my name is licong >a

将echo之后的内容输入到文件a中,如果a不存在就会默认创建a文件。

>>   追加重定向

例如:[root@localhost /]# echo hahahahhahahhaha >>a

在文件中再重新一行输入echo后面的内容

| 管道就是将前面命令输出作为管道后面命令的输入

例如:[root@localhost /]# date | cut -d
" " -f 1-3

反引号,命令替换

例如:[root@localhost /]# echo this time is
date | cut -d " " -f 1-3

this time is 2019年 06月 26日  //(反引号)里面是要执行的内容

" " 双引号,可以实现变量替换  不加引号的方式  echo $PATH

‘  ’   强引用,不完成变量替换      echo ‘$PATH’

文本排序显示:sort

排序显示(默认根据字符在ASCII码中的升序排序):

sort 文件名(默认对第一个字符排序)

按照数值大小排序:sort -n 文件名(从小到大)

排序并去掉重复的:sort -u 文件名

逆序排序:sort -r 文件名(默认对第一个字符逆序)

sort -rn 文件名(对整个数字逆序,不再是只第一个字符)

按照用户uid数字大小排序显示:

sort -t 指定分隔符 -k
指定第几列 -n /etc/passwd

-f        排序时忽略字符大小写

去掉重复的行,重复的行必须相邻:uniq 文件名

-d        只显示重复的行

-D        显示所有重复的行

-c        显示重复行重复的次数

文本统计:wc—word count

显示文件行数、单词数、字节数和文件名:wc 文件名

###在UTF-8编码格式里面,显示时一个字符占一个字节,一个中文字占用3个字节

只显示单词数:wc -w 文件名

只显示字节数:wc -c 文件名

只显示行数:wc -l 文件名

只显示字符数:wc -m 文件名

显示最长的一行的字符数:wc -L 文件名

模式匹配器

grep 过滤关键字显示所匹配到的行[root@localhost ~]# grep root /etc/passwd

–color  匹配项着色

-o  显示匹配到的字符串   [root@localhost ~]# grep -o
root /etc/passwd

-i   忽略大小写

-v   只显示没有匹配到的行 [root@localhost ~]# grep -i o /etc/passwd

^#  以#号开头     # ;  // 
----注释行

^$  空白行

-A 
2   指定数字显示说匹配到的下几行

-B 
2  指定数字显示所匹配到的上几行

-C 
2  显示所匹配到的上下几行

查找文件里的字符和字符串:

/etc/login.defs文件中以#开头的是注释

匹配整个单词:grep -w 单词 文件名

匹配以q开始的行:grep 1 文件名     ^行首 $行尾

grep 2匹配到以数字0-9开始的过滤

匹配以q结束的行:grep q$ 文件名

匹配以数字开头的行:grep 3 文件名

匹配以q或者f开头的行:grep 4 文件名

如果要明确搜索子目录:grep -r h ./*

忽略子目录:grep -d skip h ./*

diff :比较字节信息

paste 文件名 文件名 同时查看多个文件

练习题:

1.创建目录/test/sysroot在该目录下创建三个文件a,b,c 之后再将sysroot目录移

动到/tmp目录下改名为sys保证目录下三个文件也存在。

2.删除/tmp/sys/a
文件。

3、创建目录/tmp下创建4个目录,并在这四个目录下分别创建一个test目录

4、创建一个test目录,在该目录下创建一个文件,内容写
‘我很瞌睡’

5、在/dir下创建目录dir2和文件file1,移动文件file1到上面创建的test目录中,

将目录dir2复制到test目录中

6.将/etc/passwd
中第一个字段(用户名)截取到user文件中

cut -d : -f 1 /etc/passwd

user

7.将3,4 字段分别截取出来写入文件UID和文件GIU但是要使这两个文件中的信息

是以数值由大到小的形式显示;

cut -d : -f 3 /etc/passwd
| sort -nr > UID

截取当前日期的年月日显示在文件A.txt 中?

date |cut -d "
" -f 1-3

统计/etc/passwd 一共有多少行但不显示后面的文件名?

文本统计

作业题:

1.将/etc/passwd
中第一个字段(用户名)截取到user文件中

2.将3,4 字段分别截取出来写入文件UID和文件GIU但是要使这两个文件中的信息

是以数值由大到小的形式显示;

4.通过查看时间命令将分别将年月日时分写入A文件,将当前显示为星期几追加写

入A文件。或者在屏幕上输出“the  day is  (星期几)”

5.并将文件通过合并命令将UID与GID文件中的信息写入USERID文件

6.告诉用户当前系统有多少用户?

7.通过过滤指令将/etc/login.defs
文件中关键的配置信息显示在file文件中。

1.在/home下创建普通文件file1,在/下给它创建一个硬链接文件为file1.bak,在root用户的家目录下给file1.bak文件创建一个硬链接为file1.bak.bak,给file1.bak.bak创建一个软链接为f1。

2.找出root用户的家目录下以f开头的文件。

3.写出一个永久生效的命令别名为cha,该命令别名可以显示出以上四个文件的详细属性和inode号

4.将/etc/passwd的内容添加到file1.bak文件中,保留file1.bak文件中前9行的内容,删除其他行的内容。

5.查找出file1.bak的路径。

6.将file1.bak文件的第一列和最后一列输入到文件/root/zuoye。

7.将file1.bak.bak文件的第一行和最后一行输入到文件/test。

8.有一个文件叫lianxi.txt,文件内容为排序过的file1.bak内容的第三列和第三列的行数。

第三天

文本编辑vim:

命令模式:按esc键可回到命令模式

dd                删除当前行

dw                按单词删除

u                撤销当前操作

ctrl+r        重做

yy                复制光标所在行

2
yy        复制光标所在行和光标下一行

p                粘贴到光标下一行

cc         剪切

行数cc 剪切当前行开始的几行

x                删除光标所在位置的内容

w,b                按单词进行移动光标

gg                跳转到文档首部行首

dgg       删除光标至文档首部

G                跳转到文档尾部行首

/字符串1        查找字符串1

$        行尾

^        行首

h        往左按字符移动光标

j        往下(后)按行移动光标

k   往上(前)按行移动光标

l   往右按字符移动光标

H   跳转到当前屏幕输出的最上面一行

L        跳转到当前屏幕输出的最下面一行

M        跳转到当前屏幕输出的中间那一行

插入模式:

i 在光标前插入

I在光标所在行行首插入

a 在光标后插入

A 在光标所在行末尾插入

s 删除光标所在位置字符并插入

S 删除光标所在行并插入

o 在光标所在行下一行插入

O 在光标所在行上一行插入

末行模式:

:wq        保存退出

:q                退出(未修改文件内容才可以退出)

:wq!        强制保存退出

:q!        强制退出,不保存

:set
nu        显示行号

:set
nonu        不显示行号

:行号 跳转到指定行号

:3,5
d                删除3-5行

:r 文件名1        读出文件1的内容到当前文件里

:%s/字符串2/字符串3                字符串3替换字符串2

:%s/1/2/g        将1替换为2,全局修改

:w 文件名1        另存为文件名1

练习题:

1.去掉DNS域名解析:vim /etc/ssh/sshd_config

修改:                UseDNS
no

重启服务:        systemctl
restart sshd

2.当前用户永久生效的命令别名

[root@server ~]# vim
~/.bashrc  别名的配置文件里面设置

(1)写一个命令别名为hello,实现的功能为每输入一次hello命令,就有hello,everyone写入到文件/file.txt文件中。

(2)写一个命令别名为shuaxin,实现的功能为每输入一次该命令,file.txt文件的所有时间就更新为当前时间。

[root@server ~]# source .bashrc  使其生效

3.所有用户生效的命令别名

[root@server ~]# vim /etc/bashrc

(1)     
写一个所有用户都生效的命令别名为hh,输入这个命令之后可以在当前用户家目录下面创建一个file1文件。

添加用户:/etc/passwd 
/etc/group /home /var/spool/mail 
/var/mail /etc/shadow /etc/gshadow

4、配置postfix服务

cp  /etc/postfix/main.cf
/etc/postfix/main.cf.bak

vim /etc/postfix/main.cf

#配置邮件服务器主机名

76 myhostname = mail.openlab.com

#配置域名

83 mydomain = openlab.com

#指定邮件发送时的域名

99 myorigin = $mydomain

#指定网络接口

113 inet_interfaces = all

116 加注释

#指定服务器的目标区域

164 mydestination =
m y h o s t n a m e , l o c a l h o s t . myhostname,localhost. myhostname,localhost.mydomain,localhost,$mydomain

#指定允许网络网段地址

264 mynetworks = 192.168.221.0/24

#转发域

296 relay_domains = $mydestination

:wq

systemctl stop firewalld

setenforce 0

[root@localhost~] #systemctl restart postfix

测试:#mail to [email protected]

#su - redhat

[redhat@localhost ~]$ mail

Heirloom Mail version 12.5 7/5/10. 
Type ? for help.

“/var/spool/mail/redhat”: 2 messages

1 root                  Sun Dec 16 14:46  19/658   “tianhaoleng”

2 root                  Sun Dec 16 15:01  19/583  
“haihaohei”

bash 
基础特性

用户接口shell:壳,命令解释器,负责解析用户输入的命令

shell是离用户最近的程序,也是计算机和用户进行交互的程序

广义上的shell包含两类:

GUI          Gnome,KDE,Xfce

CLI       bash shell

系统启动后,shell程序只有一个 ,但是shell进程却可以有很多,linux允许一个用户登录多次,在每个登陆进程看来,

当前主机只存在当前进程,以进程号识别进程,进程是程序的副本,进程是程序执行的实例,进程是有生命周期的。

shell自己是外部程序,但是shell有自己的内置命令

shell有子shell,对于父shell来说,子shell只是一个程序

pstree命令看系统的进程树型结构,pstree可以用来以树状的方式变现进程的父子关系

特性:

1、命令行编辑

Ctrl+a      跳到命令行行首

Ctrl+e      跳到命令行行尾

Ctrl+d      向后删除,类似delete

Ctrl+u      删除光标至行首的内容

Ctrl+k      删除光标至行尾的内容

Ctrl+左右箭头       在模拟终端中支持按单词跳转

Ctrl+l       清屏,等同于clear

Ctrl+c  取消执行当前命令

2、命令历史 (shell进程在其会话中保存此前用户提交执行过的命令)

history             命令历史管理(命令历史列表)

命令历史文件为~/.bash_history

命令历史大小由环境变量HISTSIZE来指定,默认为1000

变量配置文件为/etc/profile

-c     清空整个命令历史

-d     删除指定命令历史

-w    将缓冲区中的命令历史保存到命令历史文件

使用技巧

!n     执行命令历史中第n条命令

!-n   执行命令历史中倒数第n个命令

!!      执行上一条命令

!KEY 执行最近一次以指定KEY开头的命令

!$     引用上一个命令中最后一个参数

ESC+.       同上,多次按还可以切换

ALT+.       同上,在远程终端无效?

3、自动补全

命令补全

在PATH环境变量下搜索补全要输入的命令

路径补全

在输入的字符开始的路径下补全

4、shell的变量功能:

变量简单说就是让某一个代特定字符串表不固定的内容。

设置变量(变量名的规则:用“=”连接;等号两边不能有空格符;只能使用数字和字母,且不能用数字开头;):

myname=redhat(变量声明的过程就是申请内存使用的过程)

环境变量

定义当前用户工作环境属性的变量

echo $PATH

取消变量:unset 变量名称

5、命令替换

把命令中某个子命令替换为其执行结果

$()

echo “The
current directory is $(pwd).”

touch
./file$(date +%H-%M-%S).txt

``

echo "The
current directory is pwd"

echo 'The
current directory is pwd

bash支持的引号

``      反引号,命令替换

“”     双引号,可以实现变量替换

‘’        强引用,不完成变量替换

####        5.控制命令历史的记录方式

环境变量:HISCONTROL

ignoredups:忽略重复的命令

ignorespace:忽略以空白字符开头的命令

ignoreboth:以上两者同时生效  --(这种修改只对当前shell有效)

6.bash 配置文件

》》 登录式shell和非登录式shell

登录shell:是需要用户名、密码登录后才能进入的shell(或者通过–login”选项生成的shell)。

非登录shell:当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。执行exit命令,退出一个shell(登录或非登录shell);执行logout命令,退出登录shell(不能退出非登录shell)。

》》 交互式登录shell和非交互式登录shell的区别

交互式登录:(清除掉所有变量,通过文件重新读入)

(1)直接通过终端输入账号密码登录

(2)使用“su -
UserName”切换的用户   #passwd root

执行顺序:(影响该shell的配置文件)

/etc/profile -->
/etc/profile.d/*.sh --> ~/.bash_profile–> ~/.bashrc–> /etc/bashrc

非交互式登录:(会继承上一个shell的全部变量)

(1)su UserName             #echo redhat | passwd --stdin  root

(2)图形界面下打开的终端

(3)执行脚本(当我们执行脚本的时候.我们就已经进入到了一个子shell)

(4)任何其它的bash实例

执行顺序:(影响该shell的配置文件)

~/.bashrc–> /etc/bashrc–>
/etc/profile.d/*.sh

使用./test.sh或者 bash
./test.sh执行脚本的时候,是开启一个子shell,这个子shell能继承上一个父shell的变量,而这个子shell的变量,随着子shell的退出而消失。当我们用. test.sh 或者source
test.sh时,不开启子shell,在当前shell运行,子shell中的所有值都影响当前。

一般我们对shell进行一些配置的时候,通常都是对~/.bashrc 和/etc/bashrc这两个文件进行一些配置

7. bash特性之多命令执行:

~]#COMMAND1; COMMAND2; COMMAND3;

逻辑运算:

运算数:真(true,  yes, on, 1)

假(false, no, off, 0)

与:

1 &&1=1

1 &&θ=θ

θ&&1=θ

θ&&θ=θ

或:

1 || 1 =1

1 || 0 = 1

0 || 1 =1

0 || 0 = 0

非:

!1=0

! 0=1

短路法则:

查看帮助

/bin/bash优点:

命令与文件补全功能

命令别名设置功能

命令记忆功能

通配符等等

多用户管理

3A认证

Authentication:
认证机制,通过某种方案来确认用户是其声称的用户,如密码、生物识别等

Authorization:  授权机制,资源使用级别(Linux只有管理员和普通用户两级分配机制,权限)

Audition:       审计机制,监督权限的使用 ,log审计凭据—额外审计功能SElinux

用户,组,权限

重点:/etc/passwd      用户相关信息

/etc/login.defs      设置用户创建时默认相关信息

/etc/defualt/useradd    用户添加时会创建的相关信息设置

/etc/skel               用户家目录下相关隐藏文件

/etc/group       组相关信息

/etc/gshadow     组密码

/etc/shadow      用户密码

/var/spool/mail  用户邮箱记录

用户类别
/etc/passwd

管理员               
0    root

普通用户                1-65535,2^16个

|             1-200  系统中的管理用户

|-系统用户        201-999,专门用来运行后台进程和服务的用户,不允许登陆系统(服务用户)

|-一般用户        1000-60000,后面的很少使用

用户组类别

按照用户类别的分法

管理员组    root  
root

普通组

|-常用分法

|-(主)基本组,用户的默认组      redhat 
redhat

|- 附加组      额外组,默认组以外的其他组         redhat grp1

用户管理

licong❌1000:1000:licong:/home/licong:/bin/bash   /home/licong 为用户工作的主目录

用户名:密码占位符:UID:GID:描述字段:shell字段

/bin/bash:表示该用户可以交互

/sbin/nologin:表示该用户不可交互

查看用户信息  useradd usermod userdel -r

/etc/passwd  (用户配置文件)

冒号隔开的七个字段

account           用户名

password       密码,x为密码占位符,目标为/etc/shadow第二个字段

UID                  用户ID

GID                  基本组ID,额外组信息在/etc/group文件中

CECOS             用户基本信息

HOME DIR      用户家目录,系统用户不允许登陆

shell        用户的默认shell,/etc/shells保存了所有的合法shell

useradd    
/etc/passwd   /etc/group   /home  
/var/spool/mail

/etc/login.defs   /etc/default/useradd

adduser

useradd USERNAME/adduser

-l

-u UID     指定UID

-g GID      指定基本组

-G GID1,GID2,…     指定附加组

-c     “注释信息” 指定用户注释信息    chfn (修改信息) chfn+用户名

-d     /path/to/dir   指定某个目录为用户家目录

-s     /shell                       指定用户使用的shell    chsh -s

chsh -s修改用户shell

usermod   修改用户相关信息,选项同useradd

-u     修改UID

-g     修改基本组,基本组必须事先存在

-G    这个选项会覆盖之前的附加组,和-a选项配合使用

usermod -a -G 追加附加组

-c     修改用户注释信息

-s     修改用户shell

-l      修改登陆名

-L,
–lock  锁定用户帐号

-d   更改目录

userdel

userdel USERNAME

-r     删除用户时删除用户家目录和用户的邮箱

id             查看用户的ID信息,选项同useradd

-u     显示UID

-G    显示附加GID

-g     显示GID

用户名:密码占位符:UID :GID:注释信息:用户家目录

组管理

/etc/group

组名:

组密码占位符:

GID:

以该组为附加组的用户名

groupadd       添加一个组

-n

-g     GID

-r     添加系统组

groupdel 删除一个组   (不能删除基本组)

groupmod      修改一个组

-g     GID

-n     GRPNAME      修改组名

相关文件

/etc/login.defs 查看一些配置信息

用户的相关默认属性

添加用户就是在/etc/passwd、/etc/shadow、/etc/group中添加用户相关信息

默认属性都来自什么地方呢?来自
/etc/default/useradd  /etc/skel

/etc/default/useradd 查看创建用户时的模板信息

文件格式

GROUP=100                    组(在linux当中用户默认组有两种模式公有模式,私有模式当前我们学习的linux是一种私有模式)

HOME=/home                        家目录

INACTIVE=-1                   密码宽限期限

EXPIRE=                           账户过期期限不启用

SHELL=/bin/bash           指定shell

SKEL=/etc/skel                默认文件

CREATE_MAIL_SPOOL=yes  邮件配置

修改家目录会出现的一些问题!!!

1.当正确添加用户后,然后更改用户的家目录,切换用户时发现状态不对。------------将用户家目录再次修改为创建默认家目录就好

2.当创建用户时从新指定了家目录,在用户切换时状态不正确-----解决方法将/etc/skel 下的隐藏文件拷贝到当前用户默认的家目录下

/etc/shadow          冒号隔开的九个字段

account           用户名

password       加密后的密码,格式为 6 6 6???$*

!!或者*   账户锁定   salt

最后一次修改时间       从1970年1月1日到最后一次密码改变的时间所经过的天数

密码最短使用期限       为0表示不限制

密码最长使用期限       密码使用多长时间之后必须要改密码,99999表示可不更改

密码过期警告时间       密码过期前多少天进行警告,提示用户改密码,但是不锁定用户

密码过期宽限期限       密码过期后必须改密码的时间,如果还没改,锁定用户,就只能找网管了

账号过期精确时间       如果为99999,意味着永不过期

保留字段

haha:!!:17432:0:99999:7:::

12/10                      12/20         12/19                     12/12

最后一次修改                     最长        过期警告时间            过期精确时间

用户名-----密码---------|------------|--------------|----------|-----------------|------------|

最短使用期限                              过期宽限时间             保留字段

12/17                                          3

12/23

passwd   修改用户密码   //pass --help

–stdin

echo “redhat”
| passwd --stdin USERNAME

-l      锁定用户账号密码

-u     解锁用户账号

-d     删除用户密码,在redhat中,空密码用户禁止登陆

-n     指定密码最短使用期限

-x     指定密码最长使用期限

-w    指定警告时间 过期前几天修改密码

-i      指定宽限动时间

chage      change age

-d    指定最后一次修改密码日期

-E    过期日期

-I     宽限时间

-m   最短使用期限

-M   最长使用期限

-w   警告时间

gpasswd  +用户名设置组密码

-a 添加用户到组             usermod/useradd -G GID username

-d 将指定用户移出本组

-M 设置组成员列表

-A 指定管理员(组长)

-r 删除组密码

-R 限制用户登录组,只有组中成员才能加入该组     newgrp

newgrp   登陆一个新组

使用exit退出新组

[root@localhost ~]# useradd xiaoai

[root@localhost ~]# echo redhat |passwd --stdin
xiaoai  设置密码

[root@localhost ~]# passwd -l xiaoai

锁定用户 xiaoai 的密码 。

passwd: 操作成功

[root@localhost ~]# passwd -u xiaoai

解锁用户 xiaoai 的密码。

passwd: 操作成功

练习题:创建用户和用户组

请按照以下要求创建用户、用户组:

1.新建一个名为adminuser的组,组id为40000

2.新建一个名为natasha的用户,并将adminuser作为其附属组

3.新建一个名为harry的用户,并将adminuser作为其附属组

4.新建一个名为sarah的用户,其不属于adminuser组,并将其shell设置为

不可登陆shell

5.添加用户maomao,修改它的家目录为/maomao,要求切换maomao时命令提示

显示正常。

6.创建std1 ,std2两个组,要求std1组中有三个用户,{1 2
3}

7.natasha、harry和sarah三个用户的密码均设置为glegunge创建用户

8.请创建一个名为alex的用户,并满足以下要求:

用户id为3456,描述名为alian密码为glegunge

9.创建g1组,要求创建一个属于redhat用户g1组的文件redhat.txt

###################用户管理作业题#########################

1.创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo
Distribution"

2.创建下面的用户/组.用户natasha,使用admins 作为附属,用户harry也使用admins 作为附属组,用户sarah不可交互登录系统,且不是admins
的成员,natasha,harry,sarah密码都是centos

5.查看UID、GID范围的配置文件,修改为501-60000。并查看密码加密算法

6.查看创建用户时的模板配置文件

7.修改创建用户时的默认设置,家目录/www,默认shell 为/sbin/nologin。

8.修改aubin2用户UID672、主组root、添加新的附加组admins且保留旧的附加组。

然后锁定用户

9.用标准输入给aubin1设置密码hello。

10.显示curry用户UID、GID、显示用户名、显示用户所属组ID

11.锁定curry用两种方法

12.指定aubin3的密码最短使用日期为10天,最常使用日期为20天, 提前7天提示修改密码

13.从标准输入设置aubin3的密码

14.创建系统组liuliansha 指定GID为66

15.修改liuliansha组名为six 修改GID为67

16.将用户aubin1添加进组six,将aubin从six组中删除。

17.设置curry用户的详细描述,然后查看

18.删除用户aubin1、aubin2并删除家目录

综合练习:

1.新建用户组,shengchan,caiwu,jishu

2.新建用户要求如下:

* wjx 是shengchan组的附加用户

  • liuy 是caiwu组的附加用户

  • zxx 是jishu组的附加用户

  • 新建admin用户,此用户不属于以上提到的三个部门

3.解释以下配置文件所有信息

/etc/passwd

/etc/login.defs

/etc/defaults/useradd

/etc/shadow

/etc/group

/etc/gshadow

实验

创建学习组1,学习组2 ;他们的组gid分别为1111,2222,添加成员并将uid为1088,

和uid为1066的成员为两组的组长,其中一组组长有一个‘外号’laoda。

不同学习组进入需要密码才能进入(设置密码);

作为学习组长可以将指定成员拉进本组,和移出本组其他成员没有权利干涉。

(只能一个一个拉和删);即使密码泄露也不希望组之外的成员进入。

第四天

文件详细信息:

dr-xr-x—.  16 root root 4096 Aug 26 09:47 root

文件类型        权限        硬链接次数        属主        属组        文件大小     文件的最后一次修改时间        文件名

权限:属主的权限u            属组的权限g                其他人的权限o      //所属用户 所属组 其他用户

读:r    4

写:w         2

执行:x    1

000 0  —

001 1  --x

010 2  -w-

011 3  -wx

100 4  r–

101 5  r-x

110 6  rw-

111 7  rwx

rwxr-xr-x:755

查看权限掩码:umask  0022

当前面第一位为2和4权限就叫强制位,1的权限就是冒险位,2代表GID,4代表的是uid,1代表的是sticky

权限掩码:控制创建文件的权限

查看权限掩码:umask

修改权限掩码:umask 022

普通文件的权限属性:666

默认目录权限:777-022=755
 
默认普通文本文件:666-022=644
              特殊666-033=644
特殊:055 033

目录文件的权限属性:777

666    666

033    055

644    622

对于普通文件:

r----可读取此文件的实际内容(cat查看文件 tac more less tail head nano);

w—可编辑该文件的内容(vim,echo >  >> 
nano),但并不具备删除该文件本身的权限(删除文件由文件的上层目录控制,跟文件本身的权限无关。)

x— 该文件具有可以被系统执行的权限。( ./a bash.a)

更改所属用户所属组:chown

./a 
或 /test/a执行当前目录下的a文件

#chown  licong 文件名  更改用户信息,将文件的所属用户更改为licong

#chown licong
1 -R 将1目录下的所有资源信息的所属用户与1目录的保持一致

#chown
haha:xixi test 将文件test所属用户改为haha,所属组改为xixi

#chown
.xixi test   点xixi就是只将所属组改为xixi 所属用户没有指定

#chown haha:xixi 1 将haha所属组改为xixi

对于目录文件:

r—具有读目录结构列表的权限,可以查询该目录下的文件名数据(ls将该目录的内容列表显示出来) ls -l -h -d -a -A

w—空 写权限  创建文件
// >  >>   touch 
mkdir  cp  mv 
nano  vim

x—用户能否进入该目录(cd)

同时有w和x权限才可以创建文件和目录

修改权限:chmod
777 文件名 //只能在root用户下使用

chmod u/g/o/a =/+/-   r/w/x 文件名

chmod a-x 文件名 之后 root用户仍然可以访问

chmod 200 file

#chmod 777 文件名 权限为:rwx(u:用户权限) rwx(g:所属组权限) rwx(o:其他用户权限)

#chmod 7 文件名 相当于 #chmod
007 文件名 — --- rwx

#chmod u=r,g+r,o+r 文件名

chmod a+x a 将文件的u,g,o,的权限都加上x

chgrp 修改所属组

#chgrp licong a.txt 将文件的所属组更改为licong

安全上下文(一类定义某个进程允许做什么的许可和权限的集合)

权限 特权 完整性等级、访问令牌

进程的权限取决于用户的发起者的权限,而并非执行文件本身。

进程访问文件时,先查看用户权限,如果不是,再查看进程的发起用户是不是目标文件所属组成员 系统任何进程开始都保存为一个文件,由用户执行可执行文件后成为进程,而能否执行,取决于用户对可执行文件有没有权限,而程序一旦执行后转为进程,那么进程就与之前的可执行文件无关,进程的权限为进程发起者的权限,而进程能否访问某个文件,则取决于发起者是否有权限访问目标文件,而这一切就叫做安全上下文

安全上下文(进程的权限取决于用户的发起者的权限,而并非执行文件本身。)

SUID --仅对可执行文件设置(目标文件的所属用户是可执行文件自身的所属用户)

SGID --可执行文件设置    (目标文件的所属组是可执行文件自身的所属组)

–目录设置(对当前目录设置GID强制位,则当前目录下所有文件(-/d)的所属组都是当前目录的所属组

o+t  --仅对目录设置(在一个公共目录,每个用户都可以创建文件,删除自己的文件,但不能删除别人的文件)

特殊权限:u+s

Chmod u[+ | -]s

suid:让进程不再属于它的发起者,而是属于程序文件本身。(suid只对二进制文件有效;调用者对该文件有执行权;在执行过程中,调用者会暂时获得该文件的所有者权限;该权限只在程序执行的过程中有效)

查找passwd的程序文件位置:which passwd

chmod u+s
/usr/bin/passwd

查看进程信息:ps -ef

练习题:使用suid来实现普通用户可以查看密码文件

先找到查看命令的程序文件位置,which cat

仅对普通文件(可执行文件)生效

sgid:g+s,chmod
g[+ | -]s

(对u+s不生效)对于普通文件,以组的权限执行修改/usr/bin/touch的g+s,touch文件后文件所属组为root(作用于普通文件时,和suid类似);对于目录文件,目录的属组是谁,在目录下创建的文件的属组是目录的属组。

对可执行文件生效 ,对目录生效:(当前目录下创建的所有文件所属组都是当前目录的所属组)

练习题:创建共享目录/test,share组的用户对/test目录里的文件可读可写。

1、创建/test,修改属组为share

2、g+s 共享目录里面新创建的文件属组是share

3、umask 002修改权限掩码,使新创建文件权限为664

sticky,o+t:

chmod o[+ | -]t对目录进行操作

不能够删除其他用户在同目录里创建的文件,也无法修改其他用户创建的文件的内容,可删除修改自己创建的文件        设置公共目录为o+t

(仅对目录生效只能删除该目录下自己创建的文件,不能删除自己的文件)

ACL

可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。

获取文件的访问控制信息:getfacl 文件名

sefacl 设置文件的acl

修改文件的acl:setfacl -m u:用户名:权限 文件名/目录名

设置:setfacl -m g:组名:权限 文件名

删除:setfacl -b 文件名

setfacl -x g:组名 文件名

root用户不一定是管理员  可以用vim usermod
修改root用户名

UID 为0的用户一定是管理员

磁盘管理:

linux里面硬盘根据硬盘接口的不同来命名:

IDE                        hd(a-d)

SATA/SCSI                       sd(a-z)

一块磁盘默认可被分为四个分区,这四个分区分别为主分区或者扩展分区,在扩展分区上可创建逻辑分区。

boot loader 开机管理程序:初始化硬件程序

df -h 查看磁盘分区情况

fdisk -l 查看分区列表

fdisk /dev/sda

(l 查看分区类型  扩展分区: 85  Linux 扩展 )

(n 新建分区 d 删除分区)

**partprobe 将分区信息加载到内核

mkfs.ext4 /dev/sda5 添加文件系统,即格式化磁盘(ext4
fat ext3 ext2)

p  primary 主分区、

e extended 扩展分区

l   logical
(numbered from 5) 逻辑分区

Last 扇区, +扇区 or +size{K,M,G} (45486080-83886079,默认为 83886079):+5G加5G

临时挂载:mount /dev/sda5 挂载点目录

Mount /dev/sda5
/mnt

挂载   挂载设备 挂载点

mount 查看所有挂载的信息

mount -a 更新挂载信息

卸载:umount
/dev/sda5        或        umount
挂载点目录

练习题:

1、新建两个分区,它们的大小分别为1G,分别将它们挂载在/apple和/orange目录下。

2、添加一块10G的硬盘,如果我想将该硬盘暂时分为4个分区,同时还有其他的剩余容量可以让我在未来的时候进行规划,我应该如何分区?

3、我要将大小为5G的/dev/sdc划分为6个分区,我应该如何分区?

永久挂载:通过blkid命令查看分区的uuid

vim /etc/fstab

uuid 挂载点目录 文件系统格式 default 备份(0表示不备份) 检查(0表示不检查)

reboot重启虚拟机

[root@localhost mnt]# vim /etc/fstab   开机自动挂载

[root@localhost mnt]# mount -a  使信息生效

df -h 查看主机内存信息

free -m 查看内存信息

fdisk 操作磁盘分区 表

-l查看分区信息

Fdisk /dev/sda

M

P

N

p/e

起始扇区 enter 结束扇区

#blkid 查看设备UID

案例:
磁盘配额实验(磁盘使用限制)用户 组

1.关闭selinux

setenforce 0

systemctl stop firewalld

2.创建测试用户  hehe

3.创建逻辑分区,ext4并实现开机自动挂载

4.该分区支持quota操作

vim /etc/fstab

UUID=“23675f12-e603-4f9d-99f6-c31fa9f1f5e7” /mnt         ext4      defaults,usrquota,grpquota 0 0

mount -a

或者: mount /dev/sda5 /mnt

mount -o
remount,usrquota,grpquota /mnt

5.生成配置磁盘配置的数据库文件quotacheck -vug /mnt

6.指定用户添加磁盘限额:edquota -u UNAME

Linux磁盘限额的特点

作用范围:针对指定 文件系统(分区)

限制对象:普通用户帐号、组帐号

限制类型:磁盘容量(默认单位为KB)、文件数量

限制方法:软限制、硬限制

quota对文件系统的限制主要分为:容量限制或文件数量限制

限制inode用量:就是用户可以新建的文件数量

限制block用量:就是用户可以使用的磁盘容量,比较常见的限制方式

Disk quotas for user hehe (uid 1002):

Filesystem                   blocks       soft       hard    
inodes     soft     hard

/dev/sda5                        0        300 KB         500          0       4       
6

7.开启所有磁盘限额:quotaon -a

创建指定大小的文件:

dd if=/dev/zero of=/mnt/aa bs=1K count=400

8.关闭磁盘配额

#关闭单个磁盘的磁盘配额

quotaoff /mnt

#关闭所有已经开启的磁盘配额

quotaoff -a

#反之,开启所有磁盘配额

quotaon -a

#如果不再使用磁盘配额,可以将配置文件也删除

rm -rf /mnt/aquota.*

#最后删除/etc/fstab中的自动挂载即可

umount /dev/sda5

作业题:

1.添加一块10G大小的磁盘,将该磁盘分为两个主分区,大小为1G、2G。将剩余的空间全部划分为扩展分区。划分一个逻辑分区,大小为3G。(主分区文件系统类型为ext4,逻辑分区文件系统类型为xfs)

2.将三个分区分别挂载到/donggua、/xigua、/nangua。

3.在第一个主分区中创建一个文件为file1,内容为this is partition1。在第二个分区中创建一个文件为file2,内容为this is partition2。在第三个分区中创建一个文件为file3,内容为this is partition3。

4.实现一个功能,当使用任何用户创建目录的时候,它的所属者为root。

5.创建一个目录为/exercise,在该目录下创建一个目录为red,实现一个功能:任何用户在red目录下创建文件的时候的所属组为redhat。

6.在exercise目录下创建一个目录为nochange,任何普通用户都只能删除自己在该目录下创建的文件,无法删除其他用户创建的文件。

第五天

软件安装:

软件安装

(.rpm)

[root@localhost ~]# mount

[root@localhost ~]# cd
/run/media/root/RHEL-7.2\ Server.x86_64

Packages中就为软件包

1.mount
/dev/sr0 /mnt   (本地获取/)

2.cd
/mnt/Packages

rpm -ivh /mnt/Packages/tree-1.7…    注意使用tab键

3.安装–软件包名

4.卸载—软件名

5.手动解决依赖关系

rpm     redhat package manager

-ivh  安装  v打印相关进度信息install–verbose–hash

-evh 删除

-qa 查询所有安装的软件包
,一般在后面跟上管道符使用grep来过滤关键字

-ql                查看软件包释放的文件列表[Query list]

-qf                查看某个文件是哪个软件包释放的[Query File];

-Uvh   
升级软件包–Update;

-qpi    列出软件包的详细信息

-Va    校验所有的RPM软件,查找丢失的文件[View Lost];

-e:删除包

-v verfiy  核对证实

-h hash   进度条

[root@localhost Packages]# rpm -ivh
tree-1.6.0-10.el7.x86_64.rpm  //安装软件

GPLv2+:开源认证

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat

以及CentOS中的Shell前端软件包管理器。基于RPM包管理,

能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,

并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

1.mount
/dev/sr0 /mnt   (获取软件包)

2.vim
/etc/yum.repos.d/base.repo   (定义yum仓库文件)

[base]        源标识            (表示仓库存在)

name=haha     源名称            (仓库命名)

baseurl=file:///mnt                    (定义包的资源定位符/定义安装软件包的绝对路径)

gpgcheck=0                      (关闭软件包公钥检查)

enable=1

仓库:

[root@localhost yum.repos.d]# vim
base.repo

[base]

name=packages

baseurl=file:///mnt

gpgcheck=0

enable=1

vsftpd 服务器

安装vsftpd

Systemctl start vsftpd

Systemctl stop firewalld

setenforce

手动解决依赖关系

安装软件:软件包名  卸载软件:软件名

3.yum
repolist     查看仓库状态      本地4620  / 0  7.2

4.yum install 软件名 -y

5.yum remove 软件名  -y

yum clean
all  清除yum缓存

yum grouplist

yum
groupinstall

本地源    内网源   互联网源

http://mirrors.163.com/

http://mirrors.163.com/centos/7/os/x86_64/Packages/ 网易开源

yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all全部清除

[root@localhost
~]# cd /var/cache/yum/x86_64/7Server/base/

查看源标识、源名称、状态:yum
repolist

安装软件:yum
install

删除软件:yum
remove

本地rpm软件包:localinstall

开启两台虚拟机本地  获取ip地址

=========内网源

服务端

yum install vsftpd -y

systemctl stop firewalld

setenforce 0

systemctl restart vsftpd

mount /dev/sr0 /var/ftp/pub

客户端

vim /etc/yum.repos.d/base.repo

内容为:

[base]

name=base

baseurl=ftp://ip/pub

enable=1

gpgcheck=0 是否进行数字签名检查,已防安装别篡改软件包

实现软件安装

第六天

tar文件的压缩与解压缩:

常见的压缩文件扩展名:

*.gz

gzip程序压缩的文件

*.bz2

bzip2程序压缩的文件

*.tar

tar程序打包的数据,并没有经过压缩

*.tar.gz

tar程序打包的文件,其中经过gzip的压缩

*.tar.bz2

tar程序打包的文件,其中经过bzip2的压缩

linux上常见的压缩命令就是gzip与bzip2

压缩文件gzip:        gzip 文件名(原文件不存在)

gzip -c 文件名1 >文件名1.gz (保留原文件)

解压文件:    gzip -d 文件名.gz(不保留)

gunzip 文件名.gz

gzip -cd 文件名2.gz >文件名2(保留原文件)

查看压缩过的文本文件内容:zcat
文件名.gz

压缩文件bzip2(用法同gzip):bzip2 文件名

bzip2 -c 文件名1 >文件名1.bz2(保留原文件)

解压文件: bzip2 -d 文件名.bz2(不保留原文件)

bunzip2 文件名.bz2

bzip -cd 文件名2.bz2 > 文件名2(保留原文件)

查看压缩过的文件内容:bzcat
文件名.bz2

文件的归档即打包文件:tar
[主选项+辅选项]  文件或目录

主选项:只能出现一个主选项

c— 
create 创建一个新归档文件

x—  从归档文件中提取文件出来

t—  列出归档文件的内容,查看已经打包了哪些文件,重点在查看文件名

辅选项

z—通过gzip的支持进行压缩/解压缩,一般格式为*.tar.gz

j—  通过bzip2的支持进行压缩/解压缩,一般格式为*.tar.bz2

v—  归档或解包过程中显示被打包的文件

C—这个参数用在解压缩时,若要在特定目录解压缩,可以使用这个参数

f—  输出结果到文件,必须写该选项

–exclude FILE:在打包的过程中,不要将 FILE 打包!  
–排除某个文件打包

两种压缩方式:jcvf                zcvf

打包、压缩文件1和2并重命名:tar zcvf 新文件名 文件名1 文件名2 文件名3 文件名4

解压:

tar xvf 文件名    该命令会自动判断归档文件的压缩格式,自动调用相关程序进行解压缩

解压到指定路径:tar xvf 文件名 -C 目标路径

tar -xjv -f
filename.tar.bz2 -C 欲解压缩的目录

查看已压缩文件:tar tf
文件名

练习题:

1. 
将/etc/passwd文件中ntp用户的信息写入root用户家目录下的file1文件中,将sshd用户的信息写入root用户家目录下的file2文件中。

[root@localhost
test]# cat /etc/passwd | grep ntp

ntp❌38:38::/etc/ntp:/sbin/nologin

[root@localhost
test]# cat /etc/passwd | grep ntp >/file1

2.将file1和file2文件打包并以bzip2的方式压缩为ff.tar.bz2。

3.保留ff.tar.bz2文件并将其解压到redhat用户的家目录下。

》》源码安装

源码安装: tar  
tree

gcc

配置configure(预编译过程)    编译make安装make install

#yum  install gcc*在配置之前要保证我们的编译器完整才可以进行配置,配置完成后进行编译,编译好进行安装

#mkdir /test

源码安装(配置(configure),编译(make(GNU compiler Collection 编译器集合)),安装(make install))

[root@haha test] #tar -zxvf tree-1.7.0.gz

[root@haha test] #cd  tree-1.7.0

[root@haha test] #make install

[root@haha test] #tree /    -----测试

[root@haha
test]#tar zxvf tar-1.29.tar.gz

tar备份

[root@haha
test]#mv /usr/bin/tar   /usr/bin/tar.bak

[root@haha test]#cd
tar-1.29

[root@haha
test]$su redhat

[root@haha
test]$./configure       配置  预编译根据当前环境生成编译配置

[root@haha
test]$exit    //退出redhat用户保证用户是root

[root@haha
test]#pwd  /test/tar-1.29

[root@haha
test]#make install

[root@haha
test]#hash -r

[root@haha
test]#rm -f tree-1.7.0

[root@haha
test]#tar -zxvf  tree-1.7.0.gz

tar工具可以再次执行

在root用户下进行。./configure配置时的错误

configure:
error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in
environment to bypass this check)

See
`config.log’ for more details

配置:错误:您不应该以root身份运行配置(在环境中设置强制不安全配置=1,以绕过此检查)

》》网络管理:

第一种:

alias
vimnet="vim /etc/sysconfig/network-script/ifcfg-eno

更改配置文件

vim
/etc/sysconfig/network-script/ifcfg-eno

TYPE=Ethernet

BOOTPROTO=none/static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPADDR=172.16.50.200

PREFIX=24

GATEWAY=172.16.50.254

DNS=114.114.114.114

ONBOOT=yes

“/etc/sysconfig/network-scripts/ifcfg-eno16777736”
16L, 287C

不成功的话,执行下面:

[root@localhost ~]# systemctl
restart NetworkManager

[root@localhost ~]# nmcli
connection up eno16777736

第二种:nmcli

1.如何添加一个网络设置

#nmcli con edit eno16777736

>goto ipv4

>set addresses 172.16.40.3/24

>set gateway 172.16.40.2

>save

>quit

启用网卡

[root@haha rhel7.2]# nmcli connection
modify eno16777736 connection.autoconnect yes

启用某个会话

#nmcli con up work

-------------------------连接

activate eno16777736

2.如何更改网络配置

nmcli con mod eno16777736
ipv4.addresses "192.168.0.200/24 "

nmcli con mod eno16777736
ipv4.gateway 192.168.0.1

Nmcli con mod eno16777736 ipv4.dns
8.8.8.8

3.设置多会话的网络

添加会话

[root@localhost ~]# nmcli connection
add type ethernet con-name home ifname eno16777736

[root@localhost ~]# nmcli connection
add type ethernet con-name work ifname eno16777736

设置 ip 地址信息

nmcli connection modify home
ipv4.addresses "172.16.40.1/24 "

更改 ip 地址获取方式(静态)

nmcli connection modify home
ipv4.method manual

Dhcp 方式设置

nmcli connection modify work
ipv4.method auto

启用某个会话

#nmcli con up work

重启

#systemctl restart network

[root@localhost
~]# nmcli connection modify eno16777736 ipv4.addresses 192.168.200.150/24

[root@localhost
~]# nmcli connection modify eno16777736 +ipv4.addresses 192.168.200.100/24

[root@localhost
~]# nmcli connection modify eno16777736 ipv4.method manual

[root@localhost
~]# nmcli connection up eno16777736

4.图形工具 nmtui

5.图形工具nm-connection-editor源码安装:

综合练习:搭建论坛

#停止防火墙

systemctl stop
firewalld

#关闭SELINUX

setenforce 0

#挂载光盘镜像

mount /dev/sr0
/mnt

#安装php

yum install
php* -y

#安装httpd服务

yum install
httpd -y

重启httpd

#安装数据库

yum install
mariadb  -y

重启mariadb

初始化数据库

mysql_secure_installation

#创建数据库

mysql -uroot
-predhat

create
database luntan;

show
databases;

quit/exit

#重启两个服务

systemctl
restart mariadb

systemctl
restart httpd

#复制并解压论坛源码

mv
Discuz_X2.5_  /var/www/html

cd
/var/www/html

unzip
Discuz_X2.5_

修改权限:

cd
/var/www/html/upload

chmod 777
config/ data/ uc_* -R

(-R表示递归修改)

#通过页面进行访问并安装

在ie浏览器输入虚拟机IP地址/upload


  1. q ↩︎

  2. 0-9 ↩︎

  3. 0-9 ↩︎

  4. qf ↩︎

你可能感兴趣的:(学习)