Linux简介
Linux是一种开源的、免费的操作系统,操作系统最常见的就是微软的Windows操作系统,操作系统本身它也是一种软件。
Windows和Linux本质上是差不多的,都是安装在计算机硬件上的、用来管理计算机的硬件和软件资源的系统软件,Linux注重安全性、稳定性、高并发处理能力
但是Linux没有比较出色的可视化界面,Windows和Linux的适用人群也不同,Windows用于个人计算机,Linux大多数都用于企业服务器上
Linux的发行版本
Linux内核kernel最初是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。在1991年10月5日第一次正式向外公布。
由于Linux是一个开源的操作系统,所以有很多的公司和组织都开始基于Linux开发出了属于不同版本的操作系统,比较常见的有:
Ubuntu(乌班图)、Redhat(红帽)、CentOS、Debian(蝶变)、Fedora、SUSE、OpenSUSE、红旗Linux(国产)
安装Linux
安装Linux,首先需要知道一个东西,叫做虚拟机
虚拟机:可以用软件模拟出一套硬件系统功能的、可以独立运行在一个完全隔离环境中的完整计算机系统
安装Linux:可以通过Linux的镜像进行操作
Linux的可视化界面比较单一,开发人员很少使用,一般都会通过使用开启终端和一些操作指令来进行对文件的操作(和Windows中的cmd和DOS命令很相似)
虚拟机下载链接:
链接:https://pan.baidu.com/s/1PS5I4h9B1iTGjCAX2i8x1A
提取码:rw0h
Linux目录结构
- Linux只有一个根目录。根目录名为 /
- Linux目录的分布结构为层级式目录结构
- bin -> usr/bin : 这个目录存放最经常使用的命令
- boot : 这个目录存放启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
- dev: dev 是 Device(设备)的缩写, 该目录下存放的是 Linux 的外部设备,Linux 中的设备也是以文件的形式存在
- etc : 这个目录存放所有的系统管理所需要的配置文件
- home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名以用户的账号命名
- lib->user/lib: 这个目录存放着系统最基本的动态连接共享库,其作用类似于 Windows 里 的 DLL 文件,几乎所有的应用程序都需要用到这些共享库。
- mnt : 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容
- opt: 这是给 linux 额外安装软件所存放的目录。比如你安装一个 Oracle 数据库则就可以放到这个目录下,默认为空。
- root : 该目录为系统管理员目录,root 是具有超级权限的用户
- tmp: 这个目录是用来存放一些临时文件的。
- usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows 下的 program files 目录。
- var : 这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件
其中重点强调以下几点
-
bin -> usr/bin:系统的可执行文件,可以在任何目录下执行
-
同时还有一个目录叫做user/local/bin:这里存放的是用户的可执行文件,同样可以在任何目录下执行
-
etc:存放配置文件,配置环境变量
-
home:每一个用户的根目录,用来保存用户私人的数据,默认情况下,目录名和自己的用户名相同
-
opt:存放额外安装的软件。相当于Windows的program files目录
Linux远程操作
Xshell & Xftp
Xshell:远程连接Linux,是一个Linux的终端模拟软件
查看Linux系统IP地址:ifconfig
当前LinuxIP地址为192.168.217.128
Xshell用来模拟的终端远程操作Linux系统,但是也有一个局限性,在使用终端的同时,如果说当前需要将自己的电脑上的文件上传到Linux或者从Linux上下载一些文件到自己的电脑上,那么用这个Xshell就显得有点鸡肋了,所以Xshell它很优秀,但是也有这属于它自己的弊端,它很难在本机和Linux系统之间建立一个文件传输的关系,这时候Xftp的出现就解决了这一个问题
Xftp:是一个专门用于计算机操作系统和Linux系统之间的传输工具,通过网络协议,两者可以互相进行信息传输
Xshell和Xftp下载链接:
链接:https://pan.baidu.com/s/1R14Oa2IZSVKbRpTvOrLLEA
提取码:3s6v
vi 和 vim编辑器
vi和Vim:是Linux中的文本编辑器,用来在Linux中创建,查看或者编辑文本文件的,就好像Windows中的记事本一样
vim是vi的增强版,它比vi更加人性化一些,增加了一些功能,vi的绝大多数用法在vim上都很适用
使用vim创建一个文件
vim test.txt
这个命令表示创建(没有则创建,有则会打开当前文件)一个名称为test的文件
vi 和 vim的使用它有三种状态:
- 一般模式:用命令(vi或者vim打开一个文件),一打开就进入一般模式,可以查看文件的内容,并且可以通过上下左右键来移动光标查看文件的某一个部分,但是不能编辑文件内容(只能看,不能摸)
- 编辑模式:在一般模式下,按下键盘中的“i”或者“a”键就可以进入编辑模式。在编辑模式下,可以编辑,但是不能自动保存。按下ESC键,既可以从编辑模式回到一般模式
- 命令行模式:在一般模式下,按下“:”键,进入命令行模式;还可以输入以下常用命令:
- q! :这个命令表示当前内容不保存,直接退出
- wq:表示当前内容保存并退出
- q:表示只退出编辑器
vi vim常用快捷键
-
复制快捷键(当前行):在一般模式下按下yy,把光标所在行复制到剪切板,复制之后按下p就可以把剪切板中的内容直接粘贴到下一行
-
复制快捷键(当前行往下n行):在一般模式下,按下对应的数字,然后yy,把光标所在行往下复制n行到剪切板
-
在文本文件中,搜索关键字:在命令行模式下,输入 /+查找关键字,然后回车,按下n可以查找下一个关键字
-
删除光标所在当前行:在一般模式下,按dd,表示删除光标所在当前行
-
删除多行:在一般模式下,按对应的数字n,然后按dd,即可删除光标所在行往下n行
-
撤销上一次编辑的内容:在一般模式下,按下u
-
显示(撤销)行号:在命令行模式下输入下面两个命令,即可显示(撤销)当前行号
set nu set nonu
Linux用户管理
任何使用Linux资源的用户,必须使用一个合法的账号密码;合法的账号密码怎么来的,那就必须要向系统管理员(root)申请,由root来创建一个普通的账号
root是Linux系统在安装时默认创建的系统管理员账号。
添加用户
添加一个用户,用到一个操作命令
useradd 用户名
使用当前命令创建了一个用户名为lisi,在使用这个命令创建一个用户的时候,Linux系统的内部做了以下几件事情
-
创建一个用户lisi
-
在home文件夹中创建一个属于用户lisi的用户根目录,目录名称默认和用户名一致
-
除了创建根目录,内部还创建了一个组,组名叫做lisi,并且把新创建的用户加进这个组当中,那么什么是组?在Linux中任何一个用户都至少属于一个组,新建用户时如果不指定组,则会新建一个组,组名和用户名相同,并且把该用户添加进组中
在这里有一个扩展的点,在创建用户的同时,还可以设置将其放在文件夹中的某一个位置,并且重新命名
useradd -d /home/ww wangwu
给用户设置密码
passwd 用户名
备注:在这边输入密码是看不到任何的信息的,但是系统已经录入了当前输入的密码,如果看不到任何信息出现,不要认为卡了,而是系统已经录入了,只是看不见而已
并且密码需要满足一定的复杂度,否则不允许通过
删除用户
userdel 用户名
检测其是否存在,可以使用以下命令
su 用户名
这个命令是用来切换用户的,如果切换时找不到相应的用户就会报出不存在
这个时候lisi这个用户就不存在了,但是在home文件夹下依旧保存着这个用户的文件夹
扩展:删除用户的同时,可以将其在home文件夹中的主目录也删除,这就是级联删除,这需要用到一个命令
userdel -r 用户名
查看用户信息
查看用户的基本信息,使用一个命令
id 用户名
使用这个命令可以查看用户的组信息,gid代表一个主组,每一个用户在创建之后都会有一个主组,主组一旦确定,即无法改变,“组=1000”表示它的附加组,一个用户的附加组越多,它的管理权限就越高。
切换用户
之前在上面讲到在删除用户的时候可以使用这个切换用户的命令来查询该用户是否存在
su 用户名
可以通过上面的图发现到一个小细节,从权限高的切换到权限低的用户,不需要进行密码验证;从权限低的切换到权限高的用户,需要进行密码验证
这是我的个人理解:从高到低,系统认为当前这个操作是安全的,因为本身是一个权限比较高的用户,如果要想威胁到系统那么它的目的就可以很轻松的达成了,就没必要在进行向下切换成比自己权限还要低的用户;反之,如果说当前权限比较低,要想切换成比自己权限高的用户,那么这个时候系统就会识别,当前这个操作有可能对系统本身会构成威胁,需要进行密码验证
Linux的组管理
Linux中的组,它相当于生活中的一个词叫做“角色”,比如说在一个公司里,有的员工,有属于研发部的,人事部的,等等之类的角色。Linux当中的组,作用就是将具有共性的用户放在一起进行统一的管理,每一个用户至少属于一个组,不能独立于组存在,在Linux中任何一个用户都至少属于一个组,新建用户时如果不指定组,则会新建一个组,组名和用户名相同,并且把该用户添加进组中
添加组
添加一个组
groupadd 组名称
添加了一个名称为dev的组
删除组
删除一个组
groupdel 组名称
删除了一个名为dev的组
添加一个用户进组
gpasswd -a 用户名 组名称
随后可以使用id命令来对当前这个用户进行查看
一个用户从组中移除
gpasswd -d 用户名 组名
扩展:可以在创建用户时,指定其要属于哪一个组
useradd -g 组名称 用户名
Linux开关机操作指令
立刻关机:
shutdown now
定时关机:
shutdown -h xxx
立刻重启
shutdown -r now
重启还有另一个操作指令,也可以表示立即重启
reboot
同步数据库:
sync
Linux中的帮助命令
用来查看Linux操作系统手册上的帮助信息
man 所需要的命令信息
比如说需要查询一个关于ls的信息,系统就会在当前目录下显示出一个文本信息
man ls
于此同时,在当前界面按下回车,即可显示出当前文本信息的下一行,按下空格键,即可显示当前文本信息的下一页,按下q,即可退出当前查看文本信息
还有一个指令,查看开发人员开发的指定的命令注释信息,也可以叫做命名的内置帮助信息
help 所需要的命令信息
Linux查看文件和目录操作
查看当前所在目录
pwd
查看当前目录下所有的子目录以及文件列表,这个目录,可以是绝对目录,也可以是相对目录
ls [指定目录]
在使用这个命令时可以追加一些内容,可以指定某个目录的名称
如果ls 后面没有写指定的目录,则默认查看当前目录下所有子目录以及文件。
此外,还可以将这种展示的方式变化多样
以列表的形式显示
ls -l [指定目录名称]
还可以显示指定目录下所有的子目录和文件(包括虚拟目录)
ls -a [指定目录名称]
还可以以列表的形式显示所有子目录和文件,同样也包括虚拟目录
ls -al [指定目录名称]
cd 指令
cd指令,它的主要用途就是用来切换目录
cd 目录名称
说到目录:有两点需要知道的是:
- 绝对目录:从盘符开始的目录叫做绝对目录
- 相对目录:从当前目录名开始叫做相对目录
说到目录,在使用Linux终端时,刚开始启动是都会有这么一行
[root@localhost ~]#
localhost后面的波浪线 “ ~ ”代表当前用户的根目录,如果要进入这个目录,只需要**cd ~**即可
为了看得更明显,可以切换用户再进行查询当前目录是在哪个位置下面
…:这两个点表示从当前目录开始查找它的上一级目录
mkdir 指令
创建目录
mkdir [选项] 目录名称
创建目录,可以使用绝对目录和相对目录
创建一个绝对目录,在任何一个目录下都能够创建
创建一个相对目录,首先需要清楚你需要在那个地方下面创建一个目录,然后在指定的那个目录下方创建一个目录
注意事项,如果这个时候想要创建多级目录的话,需要注意一个问题
举例:在/opt/testDir目录下创建一个目录test03,然后再继续创建test04
如果只使用mkdir,就会出现如下结果
因为mkdir命令在默认情况下一次只能创建一个目录,如果想要一次创建多级目录,可以追加参数
mkdir -p /opt/testDir/test03/test04
删除目录
删除一个空目录
rmdir 目录名称
如果这个时候删除了一个非空目录
之前在创建的时候,创建了一个多级文件夹,test03下面还有一个子目录test04,如果这个时候需要删除一个非空目录,就需要用到一个命令
rm -rf 非空目录名称
这个命令表示删除一个非空目录,无论当前目录下有多少级目录,都不会给予任何提示,直接删除,所以在使用这个命令的时候需要慎重,因为Linux没有回收站!!!
创建文件
创建一个或多个文件(创建出来的文件都是空文件)
touch 文件名
touch 文件名1 文件名2 …
创建多个文件时,可以使用空格分开。
如果创建的是txt文件,可以使用上面提到的vi和vim编辑器创建文件
复制文件(目录)和删除文件(目录)
复制文件(目录)
Windows中,提供了cv(Ctrl+c和Ctrl+v)复制粘贴操作,在Linux中也提供了复制和粘贴,这个命令它同时具备了复制和粘贴这两种操作
cp [选项] source(源文件名称) dest(复制的指定位置)
举例:现在要把t01.txt这个文件复制到test02目录中
cp t01.txt test02
不仅可以复制文件,还可以复制一个空目录,原理和复制文件是一个道理。但如果复制一个非空目录,那么会出现一个问题
它抛出一个问题叫做“略过目录test02”,之后再次查看发现,诶?没有。
所以这里就出现了一个注意事项:在使用cp命令复制非空目录时,需要追加参数(递归复制目录)
cp -r 非空目录 目录名称
如果这时准备复制一个文件到目录当中,而这个文件在目标目录中已经存在,那么系统便会给出一个友好提示
在命令界面输入“n”表示取消复制,输入“y”则表示直接覆盖
删除文件(目录)
rm 文件名或者目录名
如果删除文件,在不追加参数的情况下,它会给出一个友好提示
同样的,输入“n”表示取消删除,输入“y”则表示直接删除
如果不喜欢这种提示,那么可以追加一个参数,强制删除
rm -f 文件名
如果当前需要删除一个目录使用的是rm指令
要想把这个目录删掉,需要追加参数
rm -r 目录
当然这里删除目录还会出现友好提示
如果说,不喜欢这些友好提示,也可以继续追加参数,这在前面删除目录的时候有提到,这里就直接写指令,直接递归强制删除
> rm -rf 文件(目录)名称
- 1
移动文件(目录)
将一个文件(目录)移动到指定位置,类似于Windows的剪切和粘贴,同样的,这个指令同样具有剪切和粘贴的功能
mv source(源文件/目录) dest(目标目录)
也可以将一个目录移动到另一个目录,也会把原来目录下的文件一并移动过去
还可以将一个文件“移动”到另一个文件,这已经不叫移动了,这个叫文件重命名
为了看得清晰,在原来的文件中写点东西
随后进行“文件重命名”
在这个命令中,文件t03_new.txt这个文件在移动之前是没有被创建过的,所以文件“移动”到另一个文件中的这个操作,实际上就是,源文件消失,将源文件中的内容重新写到一个新创建出来的文件里
这样吧,可以再来一个源文件和目标文件都存在的例子,把源文件移动到一个已存在的文件中,那么这个时候,他就会弹出一个友好提示
这个时候,源文件就会消失,源文件中的内容会重新写入到这个已存在的文件中
分页查看文件
查看全部文件内容
cat 文件名称
关于cat指令的更多信息:https://www.cnblogs.com/peida/archive/2012/10/30/2746968.html
分页加载文件和文件内容,分页显示
less 文件名
首先在文件中随意输入一些数据并显示行号
随后使用less操作指令
于此同时,按下回车翻一行,按下空格翻一页
查看文件的头十行
head [选项] 文件名
在这里还可以在追加一个参数,比如说查看文件的头 n 行
head -n 数字 文件名
查看文件的后十行
tail 文件名
同样的,也可以追加参数进行显示指定行数
tail -n 数字 文件名
对文件和目录的操作命令
echo指令:输出系统变量或者常量的值到命令行终端
echo $环境变量名
还可以将一个字符串通过echo指令输出到命令行终端上
追加命令
把前一个查看命令的结果输出到指定的文件中,如果这个文件名在当前目录中没有,没有即新建,文件若已存在,则会将之前写入的内容全部覆盖
查看命令 > 文件名
这里将ls查询指令之后的结果写入到了一个ret.txt文件中,ret.txt文件在当前目录中不存在,不存在即新建,新建之后就会将结果写入文件中
日期和时间
查看当前系统的日期和时间
date
date +%Y 系统当前年份
date +%m 系统当前月份
date +%d 系统当前日期
查询日期时间的同时,还可以将其格式化显示
date ‘+%Y-%m-%d %H:%M:%S’ 表示时间输出按照“ yyyy-MM-dd HH:mm:ss ”表示
还可以设置当前系统的日期和时间
date -S ‘2020-10-20 10:20:30’
查看系统日历
cal
还可以以年为单位查看日历
cal 指定年份
搜索文件(目录)
关于搜索文件或者目录的命令
find [搜索范围] [搜索标准] 关键字
这个指令在默认情况下默认按名称搜索
其中它有以下几种参数(常见):
- -name:默认按名称搜索(文件和目录所在的路径也在搜索范围之内)
- -size:按文件大小搜索
- -user:按文件的所有者搜索
- -newer:表示文件日期
这里查询的是在testDir目录下查找所有后缀名为txt的文件名
还可以这么写:
这个指令表示查找当前目录下,所有名称包含e的文件
还可以指定文件夹的位置去搜索文件及目录并且追加参数
find /etc -newer /etc/passwd
这个指令的意思是,查找etc下面的文件,只要文件日期比/etc/passwd的创建日期更晚就直接列出
还可以搜索文件大小大于5M的文件
根据-user参数来进行搜索,搜索etc目录下文件的所有者是用户名为123的文件和目录
查询结果出来了,但是为空,因为还未创建
locate指令
locate指令也是一个搜索的指令,它的搜索效率比find更高,是在Linux中的整颗目录树下面进行搜索,不用访问磁盘上的数据,和find一样,默认根据名称进行搜索
对于目录树,有一个概念需要聊一聊,对于文件和目录的结构来说,他们可以用一个树形结构来描述,/ 目录表示根节点,其他的文件或者文件夹就是相应的子节点,在创建(删除)文件的时候,目录树不会立刻将这些东西添加(删除)进树中,而是按照一定的策略,不定时的搜索磁盘上的数据,当前又创建(删除)了哪些目录(文件),所以locate是有缺点的,locate指令不能即时的返回当前目录和文件的状态信息,所以要想搜索出即时的状态信息,就需要一个指令:
updatedb
这个命令可以同步目录树和磁盘中的数据
搜索过滤命令
在前一个搜索命令的结果中按照名称进行下一步的过滤
搜索命令 |grep 过滤条件
需求,在当前目录下,搜索包含某个关键字的txt文件
也可以在指定目录下过滤
还有一种情况,首先我先创建一个文本文件
然后接下来,如果需要查询在文本当中只出现windows字样的文本信息
所以这里的查询指令:
cat 文件名称 |grep 文本信息
同时,这个地方还可以忽略大小写
cat 文件名称 |grep [选项参数] 文本信息
还可以显示行号,这些行号表示当前这些信息在源文件中出现的位置
压缩与解压命令
压缩和解压单个文件
压缩的操作,只针对于文件,无法针对目录
只压缩单个文件,生成一个文件后缀名为*.gz的压缩包,并且自动删除源文件
gzip 文件名
解压单个文件,并且删除原来的压缩包文件
gunzip *.gz压缩包名称
压缩和打包或者解压多个文件和目录
zip指令和压缩文件和目录,并且生成的压缩包的文件后缀名可以是 .gz 也可以是 .zip(通常都会使用 .zip 压缩包)
zip 文件(目录)名称1 文件名称2 文件名称3 …
并且使用zip指令时在压缩之后源文件不会消失
unzip 压缩包名称
上面指令执行的结果出现了一个友好提示,因为在解压之后的文件在当前这个目录中已经存在。
同时还可以指定需要解压在哪个位置
unzip 压缩包名称 -d 指定目录位置
在当前目录下新建一个文件夹(目录)
然后压缩文件解压在当前这个新建的目录下
tar命令
tar命令同样也可以解压(打包)多个文件和目录,tar命令通过追加参数来表示接下来操作的行为
tar [可选参数] 目标压缩包名称 文件/目录列表
并且被这个命令执行过的文件或者目录,它的后缀名称都会是*.tar.gz
tar指令有以下几个常用参数
-
-c:打包或者压缩
-
-x:解压,解压的语法会有稍微的修改,将指定的压缩包解压到当前目录(指定目录)
tar [可选参数] 压缩包名称(xxx.tar.gz) -C 解压目录名
-
-v:显示详细信息
-
-f:指定压缩后的文件名
-
-z:打包同时压缩
-
-C:指定解压到哪个目录
由这些参数组合,属于tar命令的解压和压缩(打包)的基本指令为
- tar -zcvf xxx.tar.gz 文件或者目录列表
- tar -zxvf xxx.tar.gz -C 解压目录
使用tar指令进行打包
新创建一个文件夹,并且将之前的压缩的包解压到新建的文件夹中
文件与组
回顾Linux组管理
在之前讲到的Linux组管理中,每一个用户都至少属于一个组,用户不能独立于组存在,一个用户可以属于多个组,这是Linux用户与组的关系
那么在文件与组的关系中,每一个文件(目录)也都属于一个组,而且只能属于一个组,文件和目录可以通过组来控制哪些用户可以对它进行哪些操作,就是文件或者目录的访问权限,从文件(目录)的角度来看,所有的用户分为三类
- 所有者:默认情况下,文件(目录)的所有者,就是这个文件(目录)的创建者,可以通过命令进行修改
- 同组用户:与文件(目录)属于同一个组的用户
- 其他组用户:既不是文件(目录)的所有者,也不是与其同一个组的用户
在Linux中,有一个命令可以查看文件的所有者和所属组
ls -l
还有一个简写命令可以达到此类效果
ll
然后来分析一下这些信息,以test01文件夹为例:
- 第一个字母 d:表示文件的类型,它是一个目录
- rwx:表示文件所有者的权限信息,将这个三个字母拆开,分别对应着三个文件的权限类型,读,写,执行
- 第一个 r-x:表示文件所有者与所在的同一个组的用户所具有的权限
- 第二个 r-x:表示其他用户对于这个文件所具有的权限,这个地方表示其他用户与文件所有者所在的同一个组的用户所具有的权限是一样的
- 数字3:表示文件链接的个数
- 第一个root:表示文件的所有者
- 第二个root:表示文件所属的组
- 数字66:表示文件的大小
- 8月 28 11:45 :表示文件最后更新时间
- test01:表示文件名称
修改文件所有者
chown 新的所有者 文件名
还可以将文件所有者以及文件所属的组名称一同修改
chown 新的所有者:新的组 文件名称
文件所有者与组名称可以不一致
备注,更改所有者和组名称针对文件和目录都适用,但是上面在修改组的时候,这个目录下面的子目录或者文件它们的所有者和所属组都不会发生改变
如果要想修改当前这个目录以及子目录和文件中的所有者和组,需要在原来的命令中追加参数
只修改文件(目录)所在组
chgrp 新的组名称 文件(目录)
Linux中文件(目录)的权限管理
知识回顾(文件目录,用户,组)
- 一个用户至少属于一个组,也可以属于多个组
- 一个文件(目录)属于一个组,也只能属于一个组
- 在文件(目录)的角度来看,Linux中所有的用户可以分为三类
- 所有者:一般都是文件的创建者
- 同组用户:与文件(目录)处于同一个组的用户
- 其他组用户:与同组用户相反
有关文件(目录)的访问权限
在Linux中,任何文件(目录)都有三种权限:读(Read)、写(Write)、执行(Execute)
- 读:可以读取、查看文件内容(cat、less、head、tail)
- 写:可以修改文件内容(使用vi或者vim编辑器)
- 执行:如果文件是可执行文件(*.shell文件),可以直接运行(./xxx.shell)
- 读:读取/查看目录下的信息(ls指令)
- 写:可以修改目录中的内容(在目录下创建文件(子目录)、删除文件(子目录)、重命名文件/目录)
- 执行:可以进入该目录(cd指令)
权限控制
在Linux中,任何一个文件或者目录都由三部分权限:所有者权限,同组用户权限,其他组用户权限
- 第一部分权限:所有者权限,文件(目录)的所有者对该文件所拥有的权限,可以使用r、w、x分别表示读,写,执行的权限(例如:rwx表示拥有读写执行三种权限,r-x表示拥有读和执行的权限,没有写的权限,没有的权限有“-”表示替代)
- 第二部分权限:同组用户权限,文件或者目录的同组用户对该文件所拥有的权限同样使用r、w、x这三个字母分别表示读写执行三种权限
- 第三部分权限:其他组用户权限
如何查看权限?
从上面的图分析,从第一个字母之后,后面的这一串字母每三个一组,每组各代表着每一部分的权限
如何修改权限?
现在要修改所有者的权限,修改t01.txt的所有者权限,现在有一个命令可以修改
chmod u-w 文件名称
现在修改一下文件t01.txt
如果对文件进行修改,它会出现上面的提示信息
针对于上面出现的命令,做出一些分析
chmod u-w 文件名称
上面的语法中出现的“u”,指的是所有者,对于三个部分的权限,有三个字母,u、g、o代表所有者权限,同组用户权限,其他用户权限(还有一个字母a,表示给所有用户添加权限)
语法中出现的“-”,就有三个符号表示,“+”、“-”、“=”分别表示给指定的用户增加、减少、设置对应的权限
语法中出现的“w”,就是对应着r、w、x中的w,写的权限
举例,给t05.txt减少一个写的权限,给其他用户添加一个写的权限,就可以用这个语法
chmod g-w,o+w 文件(目录)
用“=”设置权限
chmod 权限部分=权限类型 文件(目录)名称
这里表示同组用户权限设置读写执行三种权限
使用数字修改权限
使用数字来修改文件或者目录的权限,每一个权限都用一个数字来表示
在没有使用数字之前,每一个权限都用字母来表示
r、w、x代表读,写,执行,都分别指向一个数字:4、2、1
为什么要用数字代表这些权限?有规律,数字从右向左,依次增大,r=22=4,w=21=2,x=2^0=1
在之前的内容中可以看到,文件和目录都有三部分权限并且都是使用字母来表示
但是现在,每一部分的权限可以使用数字之和来表示,就用上面的图片来举例
从第二个字母开始 rw- r-- r-- ,用数字来表示就是644,644就表示当前权限部分的数据序列
因为rw-就表示6,r–表示4。
假设现在需要进行权限控制,就可以这么写
Linux的网络管理
配置Linux的网络管理就需要在Linux的配置文件中,存放配置文件的位置是在根目录下面的etc文件夹,找到一个目录叫做sysconfig
随后再进入一个目录叫做network-scripts,找到配置文件ifcfg-ens33,配置以下信息
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="aa56c2b3-ca46-47ac-9611-321f155c77f9"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.217.128
GATEWAY=192.168.217.2
DNS1=192.168.217.2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
后面三行的配置,需要在VMware中配置
后面三行的第一行,需要在虚拟机中的起始IP地址和结束IP地址中去取值
IPADDR=192.168.217.128
第二行和第三行需保持一致,在以下操作中寻找网关
GATEWAY=192.168.217.2
DNS1=192.168.217.2
配置好之后保存退出,然后重启Linux系统,让其生效,有两个命令
shutdown -r now
reboot
Linux中的进程管理
先回顾一下线程和进程
- 线程:一个程序的执行线路
- 进程:一个程序的执行,一个进程占用一个端口
在Linux中查看正在运行的进程
ps
使用这个命令,只显示用户使用的进程,系统内部进程不能显示
要想看到系统内部进程需要添加参数,代表显示所有进程
ps -e
以全格式形式显示所有进程
ps -ef
查看进程,一般都是查看Linux系统中的某一软件或者应用是否处于启动状态
查询防火墙是否开启
关闭进程
首先需要使用ps命令确定指定删除的进程的PID或者PPID
然后接下来使用Kill指令杀死进程
kill -l PID
kill -9 PID (代表强制删除)
在Linux进程中,杀死进程有时会失败,因为它要删除进程和当前进程下的子进程,强制删除时有可能也会出现一些未知的错误,所以请慎重执行
Linux服务管理
服务是支持Linux运行的一些必要程序,是后台在使用的一些程序,本质上他也是一个进程,叫守护进程。守护进程一般情况下都会在后台被使用,为应用程序提供必要支撑,防火墙就是典型的在后台运行的必要程序
操作服务
systemctl [start/stop/restart/reload/status/enable(设置)] 服务名称
以防火墙为例,用来进行一系列操作
查看防火墙的状态
systemctl status firewalld
查看当前信息,防火墙已开启
现在将其关闭
systemctl stop firewalld
开启防火墙
systemctl start firewalld
设置防火墙开机启动
systemctl enable firewallld
备注:在早起的centos,对于服务的操作命令,不是使用systemctl操作指令,而是使用service操作指令,同样的,使用service操作指令同样能达到以上的执行效果,在后来的版本中,service的命令的出现慢慢变少了,而在centos7中,这种操作不再支持
Linux软件包管理
RPM包管理
RPM:全称Redhat Package Manager,它原本是红帽(Red Hat)Linux发行版用来管理Linux中各项套件的工具,功能强大且方便,逐渐受到其他版本Linux的采用,RPM的出现,让Linux易于安装,升级,简洁提升Linux的适用度
说白了,就是一种Linux的软件包的打包和安装工具,它操作的软件包都是以xxx.rpm为后缀名结尾的
使用RPM命令
查看当前系统安装了哪些RPM软件包
rpm -qa
查询完了之后出现以下结果
当然可以在这些RPM命令中过滤出自己想看的一些东西
rpm -qa | grep 文件信息
卸载RPM
rpm -e
安装RPM包
rpm -ivh xxx.rpm
安装RPM,需要了解一个比较陌生的目录,这个目录和根目录下的bin目录等齐名,它的名字叫run,需要run目录下找到相应的RPM包
比如现在找到firefox的RPM包
找到media目录,并且执行相应的命令
在Packages下面找到Firefox的RPM文件
将这个文件夹复制到/opt文件夹中
然后开始解压
安装完成之后,查看虚拟机中是否存在Firefox
YUM包管理
之前在讲到RPM包管理的时候,它功能强大被很多人使用,但是它有一个缺点,你需要在run包下面找到相应的RPM包并且安装,如果没有,那对不起,只能前往对应的官网查找,途径较为麻烦,而且,如果当一个开发公司在开发一个RPM包的时候依赖了其他的RPM包,那么就很难受,你需要提前将这个环境搭建好,你才可以安装你所需要的RPM包,为了解决这一问题,这个YUM包就出现了,YUM包本质上还是一个RPM包,但是它有不同的性质
YUM包是一个组织搭建了一个服务器,这个服务器中收录全世界大部分的RPM包,并且在安装其他的RPM包的时候,它会首先分析这个RPM包依赖了哪些另外的RPM,并且会首先下载那些被依赖的RPM包,将所需要的环境搭建好之后,就会安装指定的RPM包(和Apache的Maven很相似)
在使用YUM的时候有一个前提,必须要有外网。
YUM是在RPM的基础上进行软件管理的工具,它有一个属于自己的服务器
查看系统中已经安装的RPM包
yum list installed
还可以使用这个命令进行文件过滤
使用yum卸载RPM
yum remove 文件名
安装RPM
yum install firefox
搭建开发环境
安装jdk
首先使用Xftp将文件传输到Linux系统中
选中文件,按照箭头的方式直接拖动
将jdk使用tar命令进行解压
在/etc/profile目录下配置环境变量
然后在export下面配置
在lib后面加一个点是表示在当前目录下搜索*.class文件
然后继续在当前文件里继续添加信息
然后重新加载配置文件(重启Linux系统也可)
编写一个Hello测试类
安装Tomcat
使用Xftp上传Tomcat
然后解压
解压好之后就算安装完成
然后启动Tomcat
怎么查看Tomcat已经启动,可以使用查看进程命令查看当前进程有无Tomcat
如果不查看,也可以在虚拟机中查看当前Tomcat是否启动成功
也可以在Windows系统中访问到(别忘了关闭Linux防火墙)
安装MySQL
在安装mysql之前,首先需要确定一个东西,确定当前Linux系统是否有mariadb数据库
mariadb数据库是MySQL数据库的分支,是免费开源的,在原来的基础上进行二次开发,所以有的开发公司在开发Linux时,自带mariadb,
发现存在,将其删除,因为在Linux系统中,mariadb数据库有属于它自己的用途
卸载完毕之后,使用Xftp上传mysql压缩包文件
然后解压
接下来,在mysql目录下创建一个文件夹data
创建一个用户,指定一个组,用来执行MySQL命令mysqld,初始化MySQL基础信息
接下来初始化MySQL,使用MySQL中的mysqld命令初始化数据库的基本信息,这个命令的执行需要在MySQL数据库的bin目录下方执行
然后输入以下命令
./mysqld --initialize --user=mysql --datadir=/opt/mysql-5.7.18/data --basedir=/opt/mysql-5.7.18
在当前初始化完成之后,MySQL数据库默认把超级管理员(root)创建完毕,在当前这个命令执行的最后一行的信息有一个已经生成完成的密码
AkYfV_kml7Ur
这个密码在首次登录时可以使用
在客户端和服务器之间,客户端发送SQL语句给服务器,服务器将返回的结果回传给客户端,在这个发送和回传之间,可以通过MySQL本身的身份验证机制进行加密,这时候可以开启加密验证功能。如果不开启,客户端和服务器之间就直接采用明文的形式进行传输,安全性大大降低
在bin目录下方输入以下命令
./mysql_ssl_rsa_setup --datadir=/opt/mysql-5.7.18/data
首先先查看MySQL的目录权限
当前MySQL目录所属的组和用户都是root,在之前安装MySQL的步骤中创建了一个专属于MySQL的用户和组,这个时候MySQL用户对于这个目录来说是属于其他组用户,但是其他组用户的权限是“r-x”,意味着MySQL的用户和组只有读和执行的权限,所以现在需要修改MySQL目录的权限
并且修改mysql目录的权限,让所有的用户都可以进行读写执行
启动MySQL
要想启动MySQL服务,首先需要在MySQL目录下面的bin文件夹,在bin文件夹下面输入操作命令
./mysqld_safe &
命令中使用了&符号,表示在后台启动,不使用&就表示在前台启动,前台启动会占用当前整个Linux的命令行终端,需要使用终端就需要另外启动
然后查看进程中是否启动了mysql服务
暴力的关闭mysql服务
kill -9 mysql服务的PID
注意:在使用了kill命令之后如果mysql服务依旧存在,请查看PID,PID不相同就需要再次执行kill命令,直到所有MySQL服务全部取消完毕
使用客户端进入mysql
第一次登录使用mysql默认的密码进行登录(密码不显示)
在第一次执行SQL语句时,会出现一个问题
第一次使用MySQL服务它会让你修改密码
语法格式:
alter user ‘用户名’@‘主机域名或ip’ identified by ‘新密码’
远程连接MySQL
首先进入MySQL客户端,使用以下命令
./mysql -uroot -p
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘访问密码’ WITH GRANT OPTION;
然后刷新权限
flush privileges;
刷新权限之后,使用vim编辑器,对这个路径的配置文件进行编写
vim /etc/sysconfig/iptables
输入以下信息
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUTACCEPT[0:0]
-A INPUT-m state --state ESTABLISHED,RELA
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT-m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD-j REJECT --reject-with icmp-host-prohibited
COMMIT
然后打开可视化工具进行测试连接(这里使用Navicat15)
IP地址需要使用Linux系统的IP地址
关闭MySQL
./mysqladmin -uroot -p shutdown