Linux是一种免费的,可自由传播的类unix操作系统,具有多用户,多任务,支持多线路,多CPU,性能稳定,网络特性好优点;
一、安装和启动Linux系统
1、方式:
1)使用裸机直接安装:早期、个人电脑
2)使用虚拟机:VMware软件 模拟一台或多台机器
目前:安装CentOS
2、安装过程:
1)虚拟机的硬件配置
处理器CPU、内存、硬盘、网络适配器等
注意:网络连接 确保打开(打钩)
面试题:网络适配器的三种连接方式的区别?
互联网-- 物理机ip1--虚拟机ip2
局域网 --
1、桥接:让虚拟机连接物理机后,也能够访问互联网、局域网;要求:需要配置虚拟机ip,和局域网内不能冲突;ip地址比较稳定(固定ip);
2、NAT:连接效果同桥接
会自动分配ip地址,可能每次开机都不一样;
3、仅主机模式:只能和物理机私下联系,无法访问外网
系统的超级用户:root 超级管理员
拥有系统的所有权限!
如何在物理机 和 虚拟机 之间切换?
物理机-> 虚拟机:鼠标点入
虚拟机-> 物理机:ctrl+alt
二、Linux系统的登录
1、登录的方式
1)本地登录:主机面前直接操作
图形化:类似WIindows桌面
命令行:字符界面 更专业 更常用
localhost login :root
password:12345678 输入不回显
登录成功后,看到系统命令行提示符;
[root@bogon ~]#
后续可敲Linux命令
比如:date #打印当前系统的日期、时间 cal #本月日历
2)远程登录:通过客户端工具,借助于网络远程控制、管理服务器
图形化:需要安装特殊客户端软件、开销大 较少用
命令行:更常用 远程命令行方式管理服务器
建议安装客户端小工具:
SSH、secureCRT、MobaXterm
双击: MobaXterm_Personal_21.0.exe
如果需要重置Moba的密码:ResetMasterPassword.exe
查看Linux服务器的Ip地址:ifconfig
Moba中新建会话Session:选择SSH方式
Remote host:192.168.204.128
远程 主机IP地址 (要前面查到的为标准)
打钩 指定用户名username:root
SSH服务器默认端口port:22
-->ok
如果连接上,需要输入登录口令password:12345678
执行命令:date 查看系统日期、时间
cal 查看本月日历
cal 2022 查看某年度日历
cal 9 2022 查看某年某月日历
退出登录:exit 意味着放弃权限
清空屏幕:clear
查看网络连接?确保虚拟机的网络设置:已连接
查看服务器的ip地址:ifconfig
在客户端cmd:从物理机ping虚拟机
ping对方ip地址
比如:ping 192.168.204.128
提前结束命令操作:ctrl+c(结束命令行当前进程)
三、Linux/Unix基本命令
注意:Linux命令区分大小写
Windows可不区分
1、我是谁?查看用户的身份 和权限有关!
1)who am i 查看最初登录的身份
用户名 伪终端号 登录时间 从这个ip客户端远程登录
重新打开一个终端:伪终端号:便于Linux系统区分不同的客户端窗口 pts/D:date pts/1:cal
系统会将结果分发给不同的终端显示
2)查看当前用户的详细身份:id
用户id:0 用户名:root 组id:0 组名:root规律:超级用户root用户id、组id都是0,用户名、组名都是root
3、查看当前系统在线用户情况:who
后续都是远程登录命令:exit 退出登录,表示离线
/root (linux) D:\(windows)
/ \
斜杠 反斜杠
2、我在哪儿?使用pwd命令打印 正在工作的 目录 (文件夹)pwd
结果:/root 根目录(/)下的root子目录Linux系统中只有一个根目录,目录名:/后续的/表示为分隔符/root/xxx
3、我有什么?使用ls命令
ls 显示当前目录下的内容(包括文件,目录) 只能显示文件,目录的名称
ls -l 以长列表形式查看(更详细) 显示文件,目录的详细属性 list
文件的属性:除了文件名、文件内容之外的其它信息
1)文件的类型: - 普通文件 d 目录 Directory
2)权限:-rw-------
3)属主:该文件属于谁 主人是谁 root
4)属组:这个主人属于哪个组 root组
5)文件大小:1129 byte 单位:字节
6)最后一次修改时间:4月 9 2021 不是创建时间
面试题:Linux系统中查看当前目录下的一个文件的权限?
#ls -l 文件名 命令名 选项 参数
技巧:Tab键 补全文件名
4、去别处?cd
语法:cd 目录的路径名
<1>绝对路径:从/开始的路径名
/root 目录名
/etc 目录名
/root/1.txt 文件名
<2>当前路径:当前所在目录的路径名 pwd 查看
<3>相对路径:相对于当前路径表示的路径名
1.txt
特殊的目录名:. 表示当前目录,.. 表示上一层目录
介绍:/目录下的一些子目录(Linux统一规范)
bin目录:常用的系统命令 比如:ls、date、pwd......
都是可执行文件
etc目录:存放系统的配置文件
/etc/passwd 管理用户账户信息 比如root信息
/etc/group 管理用户组信息
home目录:普通用户的主目录所在的位置
root目录:超级用户的主目录(家、主场)
...
cd 快速回到当前用户的主目录(家目录)
由于目前是root身份,所以回到/root下
进程:Process 正在执行的程序
打开记事本(程序) , 运行就一个进程
运行ping命令
5、执行命令的原理:
执行命令,就会执行一个可执行文件(程序),会启动一个进程:
比如:pwd ls date cal ...
都在/usr/bin目录下
证明:whereis ls 查看命令ls在哪儿
sleep 5 启动sleep进程,等待5 秒 单位:秒
用途:自动化脚本中,需要在步骤之间模拟等待时间
6、命令的帮助手册:man 命令名
man ls #查看ls命令的详细用法
控制方法:
空格 -- 翻页
回车 -- 跳行
q -- 退出
技巧:许多命令自带--help选项,可以求助 查看说明书
ls -- help
ps --help
7.查看目录下的内容:ls
1)ls -l 以长列表格式查看文件,目录的详细属性
ls -l 文件名 针对文件查看
2)ls -a a就是all 所有的
显示目录下所有内容,包括隐藏的文件或目录
规律:凡是以.开头命名的文件或目录,具有隐藏属性!比如: . .. 任何目录下都具有的隐藏目录 .bash_profile 当前环境的配置文件
3)ls -a l或 ls-la 选项可以组合使用,不分先后既能查看所有内容,又能显示详细列表
表示功能的叠加
4)ls -R 将目录层次展开,显示所有子目录的内容 (层层展开)
5)ls-F 查看文件类型
普通文件:无后缀显示
目录:/结尾
可执行文件:*结尾
练习:分别到不同目录,查看文件类型
6)ls -ld 查看当前目录的属性 d就是目录
需求:在/root下查看/root目录的属性
面试题:如何查看当前目录的权限?ls -ld
8、查看磁盘空间的情况:df -k
以KB为单位,查看磁盘(硬盘)空间的已用、可用的情况;如果系统磁盘空间满了,会导致业务问题,需要扩充
9、查看文件内容:cat 文件路径名 ...
适合看小文件,不可翻页查看,可以合并多个文件内容输出
10、输出重定向,操作符:> >>
平时命令执行结果默认向 终端、控制台 输出(标准输出)date > 1.txt
会自动创建一个文件1.txt.将date的结果输出到1.txt文件中,自动保存好,便于保存命令的执行结果。
cal > 1.txt 会覆盖旧的内容
> 输出重定向>> 输出追加重定向,向原有文件结尾追加内容
用途:在Windows 、Linux中,将执行命令的结果保存到文件中。 覆盖 > 追加>>
11、目录路径的常见概念
1)绝对路径:从/目录开始表示的路径名
2)当前路径:当前所在目录的路径名 pwd查看
比如在:/root
3)相对路径:相当于当前路径 表示的路径名
4)用户的主目录: ~
含义:当前用户的主目录、家目录
用户登录成功后,默认在自己的主目录;
普通用户在自己家里拥有大量权限;否则会受限;
root用户的家在/root,普通用户的家在/home下技巧:快速回到主目录?cdcd ~说明:~ 表示当前用户的主目录比如:root的家:/root zhangxs 的家:/home/zhangxsecho Hello 回声、打印、输出 文本内容echo ~ 返回当前用户的主目录echo $PATH 系统环境变量 变量
名PATH 表示:命令的搜索路径
含义:将平时常用的命令 所在的路径名,比如/usr/bin添加到PATH值中,便于后续直接使用 效果:直接敲ls,会在/usr/bin下找到并执行; 否则提示命令找不到
5)当前目录
cd . 意义不大,还在当前目录cdpwd 在/root下 1.txt 相对路径 ./1.txt 绝对路径 等价于 :/root/1.txt
6)上一层目录:..
#cd .. 回到了d1下 上一层#pwd 在/root/d1 下#cd ../.. 回到/下 上一层的上一层
12、创建目录:mkdir 目录路径名
cd 回到当前用户root 主目录/rootpwd 就是rootlsmkdir test 创建一个test子目录#ls -l
cd test 进入test子目录ls 什么都没有ls -a 只有. 和..
练习:在test目录下继续创建其它目录层次
技巧:使用-p 选项,就能一起创建mkdir -p dir1/dir2
ls -R 查看目录层次
13、新建文件:touch 文件路径名
规则:如果文件不存在,会创建一个新的空的文件(0字节)
如果文件存在,只会修改文件的“最后一次修改时间”touch 2.txt 新建一个空白文件ls -l *.txt 查看所有.txt文件的属性 *任意字符 通配符
补充:新建一下隐藏的文件或目录 命名:以.开头
touch .f1 新建一隐藏文件#lsls -a
mkdir .dir 新建一个隐藏目录lsls -al 既看隐藏内容,又看详细属性列表ls -aF 既看隐藏
内容,又看文件类型
14、拷贝文件:cp 源文件路径 新路径(copy)
目的:备份 文件名不一样,文件的内容一样!
查看所有以2开头,中间任意 , .txt结尾的文件属性列表
cat 2.txt 22..txt 拼接多个文件内容依次显示
拷贝目录:cp -r 旧目录 新目录
r表示“递归”,就是每层子目录都要依次拷贝
15、移动文件:mv 源文件路径 新路径(move)
本质:重命名--改变文件的绝对路径名
mv 2.txt 222.txt源文件路径名:/root/test/2.txt新的路径名: /root/test/222.txt
16、删除文件或目录: rm
(remove)移除,删除
1) 删除文件: rm 文件路径名
cd ~/test
rm 22.txt 存在交互,是否删除? y是 n否
rm *.txt 删除所有.txt结尾的文件,存在交互,是否删除
rm -f *.txt 关闭交互,强制删除文件
f就是force 强制
2) 删除空目录:rmdir 空目录名
pwd 在/root/test 下
rmdir dir1 非空目录,不能删除
rmdir p为空目录
3) 删除非空目录
rm -r 目录名 递归删除目录,有交互
rm -rf 目录名 关闭交互,强制删除非空目录
rm -r d2 交互:y n
面试题:如何强制删除一个文件,一个非空目录?
强制删除文件: rm -f 文件名
强制删除非空目录: rm -rf 目录名
注意:如果是root是身份,在/目录下,千万不能:
rm -rf /* 强制,递归删除/目录下所有内容
建议:平时少用root登录,root拥有最高权限,为了防止误操作
四、用户和组的管理
Linux/unix 是多用户管理系统:
Root是超级管理员,拥有最高权限,其他用户及权限都由root来管理;
用户和组是一种从属关系,都和权限有关;
好比: 员工和部门 员工属于某部门
1、添加用户: useradd 用户名(只能由root操作)
useradd xing
规律:不写组,会自动创建一个组,组名同于用户名xing
创建用户后,会在/home目录下,自动生成一个目录,就是该用户的主目录,目录名一定同于用户名:xing
2. 设置密码(口令):
passwd 用户名 为某用户设置口令
passwd 直接回车,为自己设置口令
passwd xing输入口令 123 123
清口令:passwd -d 用户名
3. 改变身份: su 用户名
su 不写用户名,默认就是要改变为root,等价于:su root
目的:获得某用户的权限进行管理
注意:从root切换普通用户不需要密码,但从普通用户切换到root或其它用户都要密码
练习:从root切换到xing,从xing切换到root
说明:执行一个su命令,会在当前环境中启动一个子进程(子任务),通过exit结束子进程。
查看最初登录身份:who am i
查看当前详细身份:id(用户id,用户名,组id,组名)
回到当前用户的主目录:cd
su命令和sudo命令区别:
su是set user的简写,翻译成大白话就是 设定用户的意思。sudo命令允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。不需要知道 root 的密码。
su :基本功能就是切换用户。
切换用户有两种方式,
第一种,su 用户名,切换到root用户时候需要提供root密码验证,root切换到普通用户无需提供密码验证,此时环境变量仍然保留为切换前用户。
第二种,su - 用户名,这个需要注意,-后有一个空格,验证方式同第一种,只是环境变量随用户转化,比如a切换到b用户,环境变量也变为b用户的环境变量,仅此而已。
sudo:Linux是多用户多权限控制多任务的系统,其中一个超级权限用户为root,剩下的为普通用户,超级用户想干什么就可以干什么,可以理解为当前系统的神。可以想象,如果一直使用root这个超级用户,如果操作有误,密码造成了泄露,或者误删了什么重要的只有root可操作的文件,那么系统是不安全的,因此有低权限用户临时提权的方法就可以了。
用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。
sudo只用作提升普通用户权限到root用户,也就是说该命令只有权限修改的功能,和su这个命令切换用户是不同的,su是双向的,并且su是永久的,而sudo是临时的,命令执行完了,还是原来的用户和环境变量。
五.综合案例
1.添加boys组: groupadd 组名
2.查看组信息: /etc/group 组管理的配置文件
特点:每一行就是一个组的信息,新建一个组,多一行
每一列就是组的不同属性
重点关注:组id,组名
cat /etc/group 查看etc目录下的组
root:x:0:
...
zhangxs:x:1000:zhangxs
xing:x:1001:
boys:x:1002:
girls:x:1003:
组名 组id
3.添加用户tom到boys组:
useradd -g 组名 用户名passwd tom 密码:123
4.查看用户账户信息文件: /etc/passwd
#cat /etc/passwd每一行就是一条账户信息,冒号分隔的每一列表示不同的属性root:x0:0:root:/root:/bin/bash
...
xing:x:1001:1001::/home/xing:/bin/bash
tom:x:1002:1002::/home/tom:/bin/bash
alice:x:1003:1003::/home/alice:/bin/bash
rose:x:1004:1003::/home/rose:/bin/bash
用户名:口令占位符:uid:gid:描述信息:用户主目录:登录补充:用户口令文件 /etc/shadow
练习:分别使用xing和root身份查看该文件内容
$cat /etc/shadow 权限不够#cat /etc/shadow 可以查看,但是口令经过加密处理结论:信息经过加密后才更安全;普通用户在某些场合很可能没有权限!
六.使用vi编辑器(vi基本使用)
1.$vi 1.txt 启动vi进程,编辑1.txt文本
纯字符界面,默认处于命令模式
2.敲i键,切换到输入模式
- 输入:I am xing!
- 敲Ese键,从输入模式---->命令模式
- 敲: --->底行模式
- 敲: wq回车 保存并退出
补充:如果保存时出现问题,可以不存盘强制退出
敲Esc 再 :q!回车
七、文件/目录的权限
先关心一下角色:
1. User 用户:所有者(属主)文件的创建人 简称u
2. Group 组:所有者所在的组(属性)简称g
比如: root用户 在root组
xing用户 在xing组
tom用户 在boys组
alice用户和rose 在girls
3.other 其它:既不是自己的,也不是同组的 简称o
ls -l开始的10个字符: d rwx------
文件类型 文件/目录的权限
- 普通文件 --- --- ---
d 目录 自己人 同组人 其他人
i软连接文件 u g o
如同快捷方式
4.三种访问权限: 可读r, 可写w, 可执行x
如果没有使用- 代替
可读: r r--
可写: w -w-
可执行: x --x
练习:请分析以下权限的含义:rwx (421)
- rw- r-- r-- 普通文件 :权限644
自己: 可读,可写 同组:只读 其他:只读
d 421 r-x r-x 目录:权限755
自己:可读,可写.可执行 同组:可读,可执行 其他:可读,可执行
-rwx rwx rwx 可执行文件777
对所有人:可读,可写,可执行
笔试题:linux 系统中某文件具有如下权限,对于用户自己拥有可读,可写.可执行,对于同组人可读,可执行,对于其他人可读,请写出该权限的八进制式(754).
5. 修改文件/目录的权限:chmod 规则/目录名
前提:只有文件的拥有者,root用户可以修改权限!
#chmod u+x 1.txt 针对自己增加可执行权限
#chmod u-x 1.txt 针对自己去除可执行权限
#chmod g+w 1.txt 针对同组人增加可写权限
#chmod a+rx , g+w 1.txt(a表示所有人)
所有人都可以读,可执行,同组人可写
#chmod 777 1.txt 数字表达式 3位八进制数
八、查看文件内容的方式
1、cat 拼接文件,显示内容不可翻页
技巧:将多个文件合并成一个文件
2、more 适合看大文件,可以翻页,不可编辑
more 文件名控制命令:空格--翻页回车--跳行 b --向前 f --向后 q --退出
练习:将/etc/passwd文件拷贝到alice的主目录中
more passwd
3、vi 功能强大的文本编辑器
(Unix/Linux)vim 的vi 的加强版
用途:自由编辑纯文本,比如源代码、脚本、配置文件等
保存退出:
:w 随时保存文件
:w 文件名 另存为
:wq 保存并退出(ZZ)
:q! 不保存强制退出
/tom 搜索tom n 继续搜索
拷贝单词yw 拷贝行yy 拷贝5行 5yy
粘贴 p
删除字符x 删除行dd 删除5行5dd
撤销 u (就是undo)
4、其它技巧
:set nu 设置行号 set number
: set nonu 取消行号 set nonumber
:1,$s/旧串/新串/g
从头到尾 s 替换 g全部
比如:将所有:替换为@
:1,$s/:/@/g
5、head和tall
查看文件头几行:head -3 文件名 头3行
查看文件的尾几行:tail - 5 文件名 后5行+
$head -3 passwd$tail -5 passwd
技巧:使用tail -f 文件名 动态刷新、实时监控文件的变化用途:常用于查看、监控系统的日志文件 系统运行过程中,会将执行过程记录在日志文件比如,遇到错误也会经常记录 窗口1:xing $tail -f 1.txt 一直监控1.txt文件的变化
直到ctrl+c结束监控进程 窗口2:rose $date >>1.txt 模拟向日志文件中写内容
面试题:如果需要监控Linux某日志文件 xxx.log
tail -f xxx.log
九、常用技巧
1、管道符|
含义:用于连接两个命令,前一个命令的输出,作为后一个命令的输入。
常用命令:
grep 过滤
more 翻页
wc 统计
sort 排序
比如:查看文件的前十行,并排序
$head -10 passwd |sort
比如:将全文排序,再获取前十行
$sort passwd | head-10
常见用法:
1)管道more:分屏
$ls -l/etc 查看/etc目录下文件的属性列表$ls -l/etc |more 空格-翻页 回车=跳行 q-退出
2)管道grep:过滤
对比:$ls -l/etc$ls -l/etc |grep ssh 过滤出结果含有ssh文本的行
练习:查找出tom的账户信息?提示/etc/passwd 账户信息文件
3)管道wc 统计
$wc f1 统计出有几行、几个单词、几个字符
十、进程管理 ps(process Status )进程状态
进程:Process 正在执行的程序、命令 为进程!
系统为每个进程随机分配一个唯一的pid 进程pid
1、查看当前所有进程:ps -ef
以全格式显示当前系统所有进程
-e 所有进程 就是a all 所有行
-f 全格式 full全 全部列
每一行就是一个进程的信息$ps -efuid:用户名 该进程由哪个用户发起的(重要)pid:进程id peocess Id 进程的唯一表示(重要)ppid:父进程idc:cpu 占用率stime:开始的时间 Start time (重要)tty:开始该进程的终端号TIME:运行时间CMD:启动该进程的命令名(重要)root用户在09:38时刻使用su root命令启动了一个进程,被系统分配了进程号pid为3721
2、根据pid杀进程:kill进程id
窗口1:xing$sleep 3000窗口2:root#ps -ef#ps-ef |grep sleep 过滤出含有sleep的进程alice 3762 3743 0 23:47 pts/1 00:00:00 sleep 3000前提:只有进程的发起者、root才有权限杀进程!窗口2:root#kill 3762
说明:某些时候kill进程id 会失效,可能是信号丢失引起的:可以使用kill -9 进程id
-9 选项,百分百杀进程(绝杀)
3、根据进程名称 批量杀进程:pkill
#pkill sleep#pkill -9 sleep
十一、Linux网络管理和防火墙设置(了解)
ifconfig命令
ifconfig #查看与配置网络状态
启动和停止
- 启动
service network(网络) start
- 停止
service network stop
- 重启
service network restart
网络模型
- 桥接模式物理主机就好像一个交换机,将物理主机和虚拟机连接在一个局域网内。和主机的关系就像局域网中一台独立的主机,和主机同等地位。获取外网ip进行上网。物理机上有一个自身的网卡,虚拟机虚拟一个虚拟网卡,两者可以连接到外网。相互可以访问而不干扰。桥接模式下虚拟机和主机不仅应该处于同一网段,而且相关DNS和网关都应该相同。
- NAT俗称网络地址转换,是将内部私有网络地址翻译成合法网络地址。 (功能,通过宿主机器所在的网络来访问公网。也就是说,使用 NAT 模式可以实现在虚拟系统里访问互联网。NAT 模式下的虚拟系统的 TCP/IP 配置信息是由 VMnet8(NAT) 虚拟网络的 DHCP 服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。(我试了一下,虚拟机确实可以 ping 通本局域网中的其他真实主机,但是主机没法儿 ping通它。)采用NAT模式最大的优势是虚拟系统接入互联网非常简单,不需要进行任何其他的配置,只需要主机器能访问互联网即可。这种情况下,主机可以 ping 通虚拟机,虚拟机也能 ping 通主机。物理机上有一个自身的网卡,和虚拟NAT设备直连,还有一个虚拟网卡直接连在虚拟交换机上。虚拟机通过虚拟交换机和NAT设备实现联网,但是和本机的连接是通过物理主机的虚拟网卡vm adapter8来实现的。虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址。
- 仅主机仅主机模式即是nat模式去除 了nat设备,虚拟机是一个独立的系统,只能实现虚拟机和主机间的通信,如果虚拟机需要联网的话,还需要主机共享网卡,所有一般情况下虚拟机不能联网。主机和虚拟机之间的通信是通过VMwareNetworkAdepterVMnet1 虚拟网卡来实现的
十二、Linux防火墙设置
什么是防火墙
防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
在默认情况下,Linux系统的防火墙状态是打开的,已经启动。
在 Linux 中,防火墙是以一个守护进程的方式存在,服务的名字是 firewalld ,它能够定义一组规则来控制外部传入系统中的网络流量,规则允许的流量才能进入系统,规则禁止的流量会被拦下
一般发行版的 Linux 都预装了防火墙,如果没有装的话,可以使用下面的命令进行安装
yum install firewalld -y
systemctl(system ctl)命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。
systemctl start firewalld 启动防火墙
systemctl stop firewalld 临时关闭防火墙,开机启动
systemctl disable(使无效) firewalld 关闭(禁用)防火墙 ,开机不会启动
systemctl enable firewalld 设置开机启动
systemctl status(死dei t si) firewalld 查看防火墙状态
//添加放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,
没有此参数重启后失效)
/**
–zone 作用域
–add-port=8080/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
**/
firewall-cmd --reload (蕊露的)重新加载防火墙规则(重启防火墙)
firewall-cmd --list-all//查看目前开放端
备注: 默认情况下22端口号是放行的