linux操作系统
Linux下一切皆文件
Linux严格区分大小写
windows:文件、文件夹
Linux:文件、目录
基本操作
快捷键
ctrl shift +
ctrl -
ctrl shift t
alt 1
alt 2
ctrl l /clear
ctrl c 中断
ctrl shift c
ctrl shift v
ctrl z 丢入后台(暂停状态),尽量不要使用
ctrl d
[root@localhost ~]# jobs
[1]+ 已停止 dd if=/dev/zero of=/dev/null
[root@localhost ~]# fg %1
ctrl alt f1 //切换到图形化界面
ctrl alt f2-f6 //切换到字符界面
ctrl ←
ctrl →
alt d //删除光标所在单词
ctrl k //删除光标后半部分
ctrl u //删除光标前半部分
ctrl w //删除光标前的单词
ctrl a = home //跳转到行首
ctrl e = end //跳转到行尾
tab键
补全键:要经常使用tab键,如果按一次出不来,就按两次,此时表示命令不唯一,如果按两次还不出来就说明命令错误
帮助(help)
格式:命令 + -h / --help
[root@localhost ~]# useradd -h
[root@localhost ~]# useradd --help
man
格式:man + 命令
[root@localhost ~]# man useradd
前导符
[root@localhost ~]#
root:用户名
@:间隔符
localhost:主机名
~:表示当前目录(~表示家目录)
#:表示当前用户身份(#表示管理员身份,$表示普通用户身份)
主机名
[root@qq ~]# hostnamectl set-hostname wk
[root@qq ~]# hostname
wk
[root@qq ~]# bash
练习:将主机名改成自己的名字
历史记录
[root@localhost ~]# history
!num 调用XX命令
!cmd 调用cmd开头且离当前最近的一条命令
!! 调用上一条命令
esc. | alt. 调用上一条命令的参数
关机、重启
关机 | 重启 | |
---|---|---|
shutdown | shutdown --halt 停止计算机不切断电源 shutdown -P 关机、切断电源 shutdown -c 取消关机 shutdowb + 10 表示10分钟后关机 shutdown -h 22:20 表示当天22:20关机 shutdown -h now 此时 | shutdown -r 重启 |
reboot | reboot -p 关机、切断电源 reboot --halt 停止计算机不切断电源 | reboot 重启 |
halt | halt 关机 halt -p 关机、切断电源 | halt --reboot 重启 |
init | init 0 关机 | init 6 重启 |
shutdown
[root@192 ~]# shutdown -h now //关机
[root@192 ~]# shutdown -h 22:00 //晚上11点关机
[root@192 ~]# shutdown -r now //重启
[root@192 ~]# shutdown -r +30 'reboot now' //30分钟后重启,并且提示reboot now
路径
绝对路径
1.从/开始的
2.绝对路径具有唯一性
[root@localhost ~]# touch /tmp/qq
相对路径
1.路径不唯一
2.从半路上出来的路径
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# touch wx
系统目录结构
[root@localhost ~]# ls /
bin dev home lib64 mnt proc root sbin sys usr
boot etc lib media opt qwer run srv tmp var
[root@192 ~]# tree
[root@192 ~]# yum install -y tree
[root@192 ~]# tree -L 1 /
/
├── bin -> usr/bin 存放普通程序(指令)的路径 C:\Windows\system32
├── boot 引导程序
├── dev device硬件设备(光盘、U盘、硬盘等媒介文件)
├── etc 配置文件
├── home 普通用户的家目录 C:\Users\username
├── lib -> usr/lib 库文件.so windows: .dll
├── lib64 -> usr/lib64 库文件.so windows: .dll
├── media 媒介文件、光盘、U盘的默认挂载点
├── mnt 临时挂载点
├── opt option,临时挂载点
├── proc 进程process
├── root root用户家目录 C:\Users\username
├── run po 正在运行的临时目录
├── sbin -> usr/sbin 存放管理员程序(指令)的路径 C:\Windows\system32
├── srv service 服务相关
├── sys system 跟系统相关
├── tmp temp 临时目录
├── usr C:\Program Files
└── var vary可变的,日志、邮件、计划任务
案例:
1.将桌面上的eNSP快捷方式剪切到C:\Windows\system32
2.win r打开运行窗口
3.输入eNSP,直接回车即可
命令格式
[root@qq ~]# ls --help
用法:ls [选项]... [文件]...
ls 命令
[选项]:表示带-或--的
[]:表示可有可无
目录管理命令(ls、pwd、cd、mkdir)
ls(list)
格式:ls
[root@qq ~]# ls //列出当前目录下的文件
anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
-l
用法:ls [选项]
[root@qq ~]# ls -l (long长格式显示文件大小)
总用量 4
-rw-------. 1 root root 1887 3月 24 2022 anaconda-ks.cfg
用法:ls [选项]... [文件]...
[root@qq ~]# ls -l initial-setup-ks.cfg
-rw-r--r--. 1 root root 0 3月 24 2022 initial-setup-ks.cfg
- 普通文件(黑色)
d 目录(蓝色)
l 链接文件(浅蓝色)
rw-r--r-- 文件权限
1 节点数
root:用户、拥有人
root:组、拥有组
0:文件大小
3月 24 2022:最后一次修改时间
initial-setup-ks.cfg:文件名
-h human 人性化显示文件大小
[root@localhost ~]# ls -lh
-d 显示自身目录
[root@localhost ~]# ls -l 公共
总用量 0
[root@localhost ~]# ls -ld 公共
drwxr-xr-x. 2 root root 6 10月 23 08:48 公共
-a 显示当前目录下的所有文件,包含以.或..开头的隐藏文件
[root@localhost ~]# ls -a
ls
ls -l
ls -lh
ls -ld
ls -a
pwd(print working directory)打印当前工作目录
[root@qq etc]# cd /tmp/
[root@qq tmp]# pwd
/tmp
cd (change directory)更改目录
cd .. 返回上一级目录
[root@qq ~]# cd /etc/sysconfig/network-scripts/
[root@qq network-scripts]# cd ..
[root@qq sysconfig]# cd ..
[root@qq etc]# cd ..
[root@qq /]#
cd - 返回上一次进入的目录(相当于遥控器上的返回键)
[root@qq ~]# cd /opt/
[root@qq opt]# cd /etc/
[root@qq etc]# cd /tmp/
[root@qq tmp]# cd -
/etc
[root@qq etc]# cd -
/tmp
cd 单独的cd是直接回家
mkdir:创建目录(建议:尽量都创建在/下面)
mkdir /test
格式:mkdir [选项] 目录名
[root@localhost ~]# mkdir shuaige
[root@localhost ~]# ls -ld shuaige
drwxr-xr-x. 2 root root 6 10月 23 10:04 shuaige
练习:
1.创建shuaige1目录
[root@localhost ~]# mkdir shuaige1
2.创建meinv1目录
[root@localhost ~]# mkdir meinv1
创建xiaogege目录,再在xiaogege目录下面创建xiaojiejie。(多条完成)
[root@localhost ~]# #mkdir xiaogege
[root@localhost ~]# #cd xiaogege
[root@localhost ~]# #mkdir xiaojiejie
创建xiaogege目录,再在xiaogege目录下面创建xiaojiejie。(一条完成)
-p 递归创建目录
[root@localhost ~]# mkdir -p xiaogege/xiaojiejie
[root@localhost ~]# ls -ld xiaogege/
drwxr-xr-x. 3 root root 24 10月 23 10:18 xiaogege/
[root@localhost ~]# ls -ld xiaogege/xiaojiejie/
drwxr-xr-x. 2 root root 6 10月 23 10:18 xiaogege/xiaojiejie/
练习:
1.创建qq目录,再在qq目录下面创建wx。(通过多条命令实现)
[root@localhost ~]# mkdir qq
[root@localhost ~]# cd qq
[root@localhost qq]# mkdir wx
2.创建laoliu目录,再在laoliu目录下面创建laoba。(通过一条命令实现)
[root@localhost ~]# mkdir -p laoliu/laoba
[root@localhost ~]# ls -ld laoliu/laoba/
drwxr-xr-x. 2 root root 6 10月 23 10:40 laoliu/laoba/
文件管理命令(touch、cp、mv、rm)
touch:创建文件
作用:第一次touch一个文件,表示创建文件,第二次touch一个文件,表示刷新时间戳
格式:touch 文件名
1.查看当前时间
[root@localhost ~]# date
2022年 10月 23日 星期日 09:57:58 CST
2.创建文件2.txt
[root@localhost ~]# touch 2.txt
3.查看2.txt的长格式信息
[root@localhost ~]# ls -l 2.txt
-rw-r--r--. 1 root root 0 10月 23 09:58 2.txt
4.休息一会
5.创建文件2.txt
[root@localhost ~]# touch 2.txt
6.查看2.txt的长格式信息
[root@localhost ~]# ls -l 2.txt
-rw-r--r--. 1 root root 0 10月 23 09:59 2.txt
cp(copy)默认复制文件
格式:cp 源文件 目标文件
[root@localhost ~]# cp 1.txt shuaige
查看:(多条命令查看)
[root@localhost ~]# cd shuaige
[root@localhost shuaige]# ls
1.txt
查看:(一条命令查看)
[root@localhost ~]# ls shuaige
1.txt
练习:
1.将1.txt复制到laoliu目录里
[root@localhost ~]# cp 1.txt laoliu
2.验证是否复制成功
A.用多条命令验证
[root@localhost ~]# cd laoliu
[root@localhost ~]# ls
1.txt
B.用一条命令验证
[root@localhost ~]# ls laoliu
-r
[root@localhost ~]# cp meinv1/ qq
cp: 略过目录"meinv1/"
[root@localhost ~]# cp -r meinv1/ qq
[root@localhost ~]# ls qq/
meinv1 wx
mv(move):剪切、重命名
默认文件
格式:mv 源文件 目标文件
剪切:
[root@localhost ~]# ls
1.txt initial-setup-ks.cfg qq shuaige2 模板 文档 桌面
2.txt laoliu shuaige xiaogege 视频 下载
anaconda-ks.cfg meinv1 shuaige1 公共 图片 音乐
[root@localhost ~]# mv 2.txt qq
[root@localhost ~]# ls
1.txt laoliu shuaige xiaogege 视频 下载
anaconda-ks.cfg meinv1 shuaige1 公共 图片 音乐
initial-setup-ks.cfg qq shuaige2 模板 文档 桌面
[root@localhost ~]# ls qq
2.txt meinv1 wx
重命名:
[root@localhost ~]# ls
1.txt laoliu shuaige xiaogege 视频 下载
anaconda-ks.cfg meinv1 shuaige1 公共 图片 音乐
initial-setup-ks.cfg qq shuaige2 模板 文档 桌面
[root@localhost ~]# mv 1.txt qq/10.txt
[root@localhost ~]# ls
anaconda-ks.cfg laoliu qq shuaige1 xiaogege 模板 图片 下载 桌面
initial-setup-ks.cfg meinv1 shuaige shuaige2 公共 视频 文档 音乐
[root@localhost ~]# ls qq
10.txt 2.txt meinv1 wx
rm:删除文件
[root@192 ~]# touch 1.txt
[root@192 ~]# rm 1.txt
rm: remove regular empty file ‘1.txt’? y
[root@192 ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@192 ~]# touch 1.txt
[root@192 ~]# rm -f 1.txt
[root@192 ~]# rm -f /a
rm: cannot remove ‘/a’: Is a directory
[root@192 ~]# rm -rf /a
[root@192 ~]# rm -rf / * 删除/,相当于删除整个系统
[root@192 ~]# rm -rf /* 删除/下面的所有文件
注意:生产环境中切勿使用
#### mkdir只能删除空文件夹
[root@192 ~]# mkdir -p /a/b/c
[root@192 ~]# rmdir /a
rmdir: failed to remove ‘/a’: Directory not empty
[root@192 ~]# echo $?
1
[root@192 ~]# mkdir /q
[root@192 ~]# rmdir /q
[root@192 ~]# echo $?
0
文件查看命令(cat、more、less、head、tail)
[root@192 ~]# vim anaconda-ks.cfg
:set nu
- cat
[root@192 ~]# cat anaconda-ks.cfg
一次性输出、只适合查看短文件
- more
[root@192 ~]# more anaconda-ks.cfg
只能下翻,不能上翻
- less
[root@192 ~]# less anaconda-ks.cfg
既能上翻,也能下翻
- head
[root@192 ~]# head /etc/passwd
默认显示文件前10行
[root@192 ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
练习查看文件的前5行
[root@192 ~]# head -n 5 /etc/passwd
- tail
[root@192 ~]# tail /etc/passwd
默认显示文件尾10行
练习查看文件的尾8行
[root@192 ~]# tail -n 8 /etc/passwd
[root@192 ~]# cat > 1.txt << WK
> 123
> 456
> 789
> WK
[root@192 ~]# cat 1.txt
123
456
789
练习:
用cat命令往1.txt文件中写内容,以EOF结尾
用cat命令往2.txt文件中写内容,以自己姓名缩写结尾
alias:别名
[root@192 ~]# alias //查看别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@192 ~]# alias wk='pwd' //设置别名
[root@192 ~]# pwd
/root
[root@192 ~]# wk
/root
[root@192 ~]# unalias wk //取消别名
[root@192 ~]# wk
bash: wk: command not found...
Similar command is: 'wc'
9:43-9:50练习,rm -rf 、 alias
echo回显(输什么回什么)
[root@192 ~]# echo 123
123
[root@192 ~]# echo qwer
qwer
echo $? 判断上一条命令是否正确,如果正确返回0,如果错误返回非0.
[root@192 ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@192 ~]# echo $?
0
[root@192 ~]# qqqqq
bash: qqqqq: command not found...
[root@192 ~]# echo $?
127
管道符
作用:将左边的执行结果传给右边执行
[root@192 ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@192 ~]# ls | wc -l
10
wc 统计
-l 统计行
[root@192 ~]# wc -l /etc/passwd
42 /etc/passwd
-w 统计单词
[root@192 ~]# wc -w /etc/passwd
83 /etc/passwd
-c统计字节数
[root@192 ~]# wc -c /etc/passwd
2198 /etc/passwd
统计/etc/group文件有多少行,多少单词,多少字节?
[root@192 ~]# wc -l /etc/group
70 /etc/group
[root@192 ~]# wc -w /etc/group
70 /etc/group
[root@192 ~]# wc -c /etc/group
956 /etc/group
练习
1.将环境的主机名改为你的姓名,如wangke
2.进入/tmp目录并显示当前工作目录
3.在/root下创建10.txt和100.txt,并用长格式显示文件信息
4.修改系统时间,与windows时间保持一致
5.创建文件夹qwer,并在qwer下创建qaz的文件夹(一条命令)
6.在/qwer/qaz下面创建xinchuang22307-8的文件
7.将/root下的10.txt复制到/tmp下
8.将/root下的100.txt3到/mnt下并重命名为200.txt
回顾
目录管理命令
# pwd://打印当前工作目录
# cd://更改目录
cd .. //返回上一级目录
cd - //返回上一次进入目录
# ls 列出当前工作路径下的文件
ls -l + 文件 //长格式显示文件
ls -lh //人性化显示文件大小
ls -ld + 目录 //长格式显示目录
ls -a //查看当前路径下的所有文件(包含隐藏文件)
# mkdir
mkdir + 目录
mkdir -p 目录/目录
文件管理命令
# touch //创建文件;刷新时间戳
touch + 文件名
# cp
cp 源文件 目标文件 //复制文件
cp -r 源文件 目标文件 //复制目录
# mv
mv 源文件 目标文件 //剪切文件
mv 源文件 目标文件/重命名名字 //复制文件
破解root密码
1.重启虚拟机
2.快速按↑↓键暂停到启动界面
3.按e编辑虚拟机内核
4.找linux16这一行,按end键跳到行尾
5.在行尾添加rd.break
6.按ctrl x启动
7.以读写的方式重新挂载文件系统
switch_root: # mount -o remount,rw /sysroot
8.切换路径
switch_root: # chroot /sysroot
9.设置密码为123
sh-4.4:# echo "123" | passwd --stdin root
10.给selinux打上下文标签
sh-4.4:# touch /.autorelabel
11.退出
sh-4.4:# exit
12.重启
switch_root: # reboot
练习:破解密码,将密码设置成你”暗恋对象名字的缩写“
11:45-12:05
作业:完成密码破解(贴图)、整理笔记,组长收,发到QQ群
vim文件编辑器
vi和vim的区别
[root@192 ~]# gedit
vi:没有高亮显示(生产环境较多)
vim:有高亮显示,是vi升级版
vim的三种模式
命令模式:用vi或vim打开文件,默认就是命令模式。 标识符:1.光标闪动;2.最后一行有文件详细信息
输入模式:输入a、i、o任意一个字符即可进入输入模式。 标识符:insert(英文)/插入(中文)
a:光标之后输入
i:光标之前输入
o:光标下一行输入
O:光标上一行输入
I:在行首输入
A:在行尾输入
末行模式:用于在最后一行做操作。标识符:“:”(冒号)
vim模式的切换
命令模式 aio------> 输入模式
<------esc
命令模式 :--------> 末行模式
<------esc
光标的移动
1.上下左右方向键
2.hjkl左下上右
行内跳转
行首:home/^(shift 6)
行尾:end/$(shift 4)
单词跳转:w
#### 行间跳转
命令模式
gg:跳转到行首
G:跳转到行尾
5gg/5G:跳转到第5行
末行模式
:7 跳转到第7行
:% 跳转到最后一行
页面跳转
PageUp
PageDown
复制
命令模式
yy:复制光标所在行
yw:复制单词
3yy:复制3行(光标所在的连续3行)
末行模式
:6y 复制第6行
:4,11y 复制4到11行
:%y 复制全文
删除
命令模式
dd:删除光标所在行
dw:删除单词
5dd:删除5行(光标所在的连续5行)
dG:删除光标所在行到行尾
dgg:删除光标所在行到行首
x/del:删除光标所在字符
D:删除光标所在行的后半部分
末行模式
:6d 删除第6行
:4,11d 删除4到11行
:%d 删除全文
练习:11:22-11:27练习
粘贴
命令模式
p(小):粘贴到光标下一行
P(大):粘贴到光标上一行
剪切=删除+粘贴
撤回
命令模式
u:撤回
ctrl r:反撤回
保存、退出
命令模式
ZZ(大):保存并退出
末行模式
:w 保存
:q 退出
:wq/x 保存并退出
:q!/wq!/w!/x! !表示强制意思
设置行号
末行模式
:set nu 设置行号
:set nonu 取消行号
:noh 取消底纹高亮
查找
命令模式
/root 搜索root
n 往下查找
N 往上查找
?root 搜索root
n 往上查找
N 往下查找
调用
末行模式
:! hostname 在vim中调用hostname的结果
替换
:s/qwer/qaz 将光标所在行的第一个qwer替换成qaz
:s/qwer/qaz/g 将光标所在行的所有的qwer替换成qaz
[root@192 ~]# vim /etc/passwd
:2,10s/bin/wx/g 将2到10行中的bin替换成wx
:%s/bin/wx/g 将全文中的bin替换成wx
练习
搜索/etc/passwd文件中包含nologin的关键字
将6到11行的nologin的关键字替换成cxk
将全文的nologin关键字替换成xiaojiejie
读、写入
# vim 1.txt
末行模式
: r /etc/resolv.conf
在光标下一行读入/etc/resolv.conf文件内容
末行模式
: w /tmp/20.txt
将文件内容另外为到/tmp/20.txt文件中
练习:9:35-9:39
批量注释
1.按ctrl v进入可视化块模式
2.按↑↓方向键选中你要注释行
3.按I(大)在行首输入
4.按#(注释符)
5.按Esc(两下)
#### 取消批量注释
1.按ctrl v进入可视化块模式
2.按↑↓方向键选中你要取消注释行
3.按d删除
练习
11:50-12:05练习
用户、组
相关文件
/etc/passwd
/etc/passwd 存放用户信息的文件
root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符
0:用户ID号,uid
0:组ID号,gid
root:用户的描述信息
/root:家目录
/bin/bash:登录shell(/bin/bash用户可以登录,/sbin/nologin用户不允许登录)
uid为0表示管理员,并不是root表示管理员
<RHEL7: uid、gid从500开始
>RHEL7: uid、gid从1000开始
/etc/group
/etc/passwd 存放组信息的文件
group2:x:1014:user6
group2:组名
x:密码占位符
1014:gid
user6:是group2的组成员/group2是user6的附加组
创建用户的时会创建同名组和用户邮箱
/etc/shadow
/etc/shadow 存放密码文件
#### useradd:创建用户
命令格式:useradd [选项] 用户名
[root@192 ~]# useradd user1
user1:x:1001:1001::/home/user1:/bin/bash
[root@192 ~]# useradd user2
user2:x:1002:1002::/home/user2:/bin/bash
-u 指定uid
[root@192 ~]# useradd -u 1010 user3
user3:x:1010:1010::/home/user3:/bin/bash
[root@192 ~]# id user3 //查看user3的信息
uid=1010(user3) gid=1010(user3) groups=1010(user3)
-d 指定用户家目录
[root@192 ~]# useradd -d /home/qaz user4
user4:x:1011:1011::/home/qaz:/bin/bash
-c 指定用户描述信息
[root@192 ~]# useradd -c qq user5
user5:x:1012:1012:qq:/home/user5:/bin/bash
group1 group2
[root@192 ~]# groupadd group1
[root@192 ~]# groupadd group2
-g 将用户加入主组
-G 将用户加入附加组
[root@192 ~]# useradd -g group1 -G group2 user6
[root@192 ~]# id user6
uid=1013(user6) gid=1013(group1) groups=1013(group1),1014(group2)
-s 登录shell
[root@192 ~]# useradd -s /sbin/nologin user7
user7:x:1014:1015::/home/user7:/sbin/nologin
test
[root@192 ~]# su - user7
This account is currently not available.
[root@192 ~]# su - user6
[user6@192 ~]$
1.创建user1
[root@192 ~]# useradd user1
2.创建user2
[root@192 ~]# useradd user2
3.创建user3,并将user3的id号改为1050
[root@192 ~]# useradd -u 1050 user3
4.创建xiaojiejie和xiaogege组
[root@192 ~]# groupadd xiaogege
[root@192 ~]# groupadd xiaojiejie
5.创建自己的名字,将自己的主组设置成xiaojiejie,附加组xiaogege
[root@192 ~]# useradd -g xiaojiejie -G xiaogege wangke
6.创建user4,指定用户的家目录为/home/laoliu
[root@192 ~]# useradd -d /home/laoliu user4
7.创建user5,指定描述信息为nihao
[root@192 ~]# useradd -c nihao user5
8.创建user6,让用户不能登录
[root@192 ~]# useradd -s /sbin/nologin user6
[root@192 ~]# su - user6
[root@192 ~]# ctrl d 注销
练习:
10:50-11:10
usermod:修改用户信息
命令格式:usermod [选项] 用户名
3.修改user3,并将user3的id号改为1070
[root@192 ~]# usermod -u 1070 user3
4.创建xiaojiejie和xiaogege组
[root@192 ~]# groupadd xiaogege
[root@192 ~]# groupadd xiaojiejie
5.修改自己的名字,将自己的附加组设置成xiaojiejie,主组xiaogege
[root@192 ~]# usermod -G xiaojiejie -g xiaogege wangke
6.修改user4,指定用户的家目录为/home/wsx
[root@192 ~]# usermod -d /home/wsx user4
7.修改user5,指定描述信息为test
[root@192 ~]# usermod -c test user5
8.修改user6,让用户能登录
[root@192 ~]# usermod -s /bin/bash user6
userdel
[root@192 ~]# userdel user1
查询3个文件中是否有user1用户信息,此时显示没有
[root@192 ~]# grep user1 /etc/passwd
[root@192 ~]# grep user1 /etc/group
[root@192 ~]# grep user1 /etc/shadow
但是user1的邮箱没有被删干净
[root@192 ~]# cd /var/spool/mail/
[root@192 mail]# ls
rpc user1 user2 user3 user4 user5 user6 user7 wangke
-r 表示会删除用户和用户的家目录邮箱等信息
[root@192 mail]# userdel -r user2
[root@192 mail]# ls
rpc user1 user3 user4 user5 user6 user7 wangke
作业:
vim
1.通过cp /etc/passwd /tmp/生成vim练习模板文件,用vi编辑器打开/tmp/passwd文件,并以此文件
作为练习素材。
2.在/tmp/passwd文件中显示行号。
3.在第5行后读入/etc/hosts和/etc/selinux/config的内容。
4.切换到最后一行,读入/etc/passwd的内容。
5.删除10到20行的内容。
6.将6、7行剪切到100行后。
7.在文件中查找”bin”字符串。
8.将文件中所有的”bin”字符串替换为”easthome”。
9.保存该文件后退出vi编辑器。
10.滤除该文件所有的空行之后,保存到/media/passwd.txt。
11.删除/root/passwd.txt。
创建用户
创建用户 fred,用户ID为1111,密码为fred1111
创建组sysadm
创建用户harry,natasha,tom
要求harry,natasha的附加组为sysadm
要求tom用户的登陆shell为非交互式shell
三个用户的密码为redhat
su、 su -
group
网络管理(实验文档)
1.启用IP
2.配置IP
3.检查
4.网络互通
仅主机模式
NAT模式
桥接模式
IP的分类
类别 | 地址范围 | 自然掩码 | 网络范围 | 网段 | ex |
---|---|---|---|---|---|
A类 | 1-126 | 8/255.0.0.0 | 第一位为网络位,后三位为主机位 | 网络照抄,主机位归零 | 103.5.5.5/8-103.0.0.0/8 |
B类 | 128-191 | 16/255.255.0.0 | 前两位为网络位,后两位为主机位 | 网络照抄,主机位归零 | 190.5.6.7/16-190.5.0.0/16 |
C类 | 192-224 | 24/255.255.255.0 | 前三位为网络位,后一位为主机位 | 网络照抄,主机位归零 | 192.168.1.1/24-192.168.1.0/24 |
D类 | |||||
E类 |
centos7:默认没有开启网卡
让新安装的环境有IP
自动获取IP:BOOTPROTO=dhcp
1.打开网卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
2.修改内容
ONBOOT=yes
3.重启网络服务
[root@localhost ~]# systemctl restart network
4.检查ip
[root@localhost ~]# ip a
重启网络服务不生效,重启虚拟机
手动配置IP(不建议使用,8没有network服务)
手动配置:BOOTPROTO=static
1.打开网卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
2.修改内容
BOOTPROTO=static (修改即可) //手动设置IP地址
手动添加
IPADDR=192.168.1.1 //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.254 //网关
DNS1=8.8.8.8
3.重启网络服务
[root@localhost ~]# systemctl restart network
4.检查ip
[root@localhost ~]# ip a
mntui
[root@localhost ~]# nmtui
[root@localhost ~]# nmcli connection down ens33
[root@localhost ~]# nmcli connection up ens33
建议使用命令行(RHCSA-1)
nmcli
[root@localhost ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "192.168.1.10" connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens32
Connection 'ens32' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@localhost ~]# nmcli connection up ens32
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
查看
1.查看IP
[root@localhost ~]# ip a
[root@localhost ~]# ip address show
2.查看网关
[root@localhost ~]# ip r
[root@localhost ~]# ip route
3.查看DNS
[root@localhost ~]# cat /etc/resolv.conf
10分钟:练习
三种模式(实验环境建议使用)
仅主机(vmnet1):centos只能和物理机通信,不能上外网(baidu、taobao、jingdong、WLAN、本地连接等都是外网)
桥接模式(vmnet0):centos只能和物理机通信,能上外网,与物理网卡直接相连,如果你连接的是网线就直接对应以太网网卡,如果你连接是wifi,直接对应WLNA网卡
NAT模式(vmnet8):centos只能和物理机通信,能上外网,经过地址转换
仅主机模式(实验环境建议使用)
1.给虚拟机配置IP(√)
[root@localhost ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "192.168.1.10" connection.autoconnect yes
2.编辑---虚拟网络编辑器---找到仅主机模式---取消DHCP的√
3.设置---网络适配器---仅主机模式
4.配置windows(vmnet1)的IP
a.windows和Linux保持同一网段、同一网关
b.我配置的Windows地址为:
ip:192.168.1.20/24
网关:192.168.1.254
5.验证互通
windows ping linux
linux ping windows
windows----vmnet1
linux----ens32
如果单方面不通95%是防火墙的问题,谁不通就是谁的防火墙问题
桥接模式、NAT
分区(基本分区、sawp、lvm)
192.168.10.10/24(IP) ---- 192.168.10.254(网关)
192.168.1.10(DNS) ----- 192.168.10.0/24(网段)
桥接模式
提示:连接网线请看以太网IP,连接wifi请看WLAN的IP
1.查看windows的IP信息
win + r --- cmd --- ipconfig
IP:192.168.124.10/24
网关:192.168.124.1
网段:192.168.124.0
2.给Linux配置IP
要求:Linux跟windows保持统一网段、同一网关
IP:192.168.124.250(使用之前先在windows上ping一下此IP)
网关:192.168.124.1
[root@wangke ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.124.250/24" ipv4.gateway "192.168.124.1" ipv4.dns "8.8.8.8" connection.autoconnect yes
[root@wangke ~]# nmcli connection down ens32 && nmcli connection up ens32
3.编辑---虚拟网络编辑器---找到桥接模式---自动/指定具体网卡
4.设置---网络适配器---桥接模式
5.互通
windows ping linux
linux ping windows
linux ping baidu
如果百度显示不出来,请更改dns
[root@wangke ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.124.250/24" ipv4.gateway "192.168.124.1" ipv4.dns "114.114.114.114" connection.autoconnect yes
提示:连接网线请看以太网IP,连接wifi请看WLAN的IP
1.查看windows的IP信息
win + r --- cmd --- ipconfig
IP:172.18.138.91/21
网关:172.18.136.254
网段:172.18.136.0/21
2.给Linux配置IP
要求:Linux跟windows保持统一网段、同一网关
IP:192.168.124.250(使用之前先在windows上ping一下此IP)
网关:192.168.124.1
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses "172.18.136.250/21" ipv4.gateway "172.18.136.254" ipv4.dns "8.8.8.8" connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens33
Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@localhost ~]# nmcli connection up ens33
3.编辑---虚拟网络编辑器---找到桥接模式---自动/指定具体网卡
4.设置---网络适配器---桥接模式
5.互通
windows ping linux
linux ping windows
linux ping baidu
如果百度显示不出来,请更改dns
[root@wangke ~]# nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.124.250/24" ipv4.gateway "192.168.124.1" ipv4.dns "114.114.114.114" connection.autoconnect yes
9:40-:10:00练习桥接模式
可以继续没?可以 1 稍等2
NAT模式
1.编辑---虚拟网络编辑器---找到NAT模式---勾选DHCP---NAT设置看看网关
2.设置---网络适配器---NAT模式
3.linux自动获取IP
[root@localhost ~]# nmcli connection modify ens33 ipv4.method auto connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens33
[root@localhost ~]# nmcli connection up ens33
4.windows的vmnet8自动获取IP
如何解决Linux双IP
1.进网卡配置文件
[root@wangke ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
2.注释静态IP
#IPADDR=192.168.124.250
#PREFIX=24
#GATEWAY=192.168.124.1
#DNS1=8.8.8.8
3.重启网络
[root@wangke ~]# systemctl restart network
4.再次验证
10:43-11:00练习nat
作业
三个模式互通整理成文档
管理存储
[root@wangke ~]# fdisk -l //列出硬盘信息
[root@wangke ~]# lsblk //列出块设备
磁盘类型 | 表示方法 | 范围 | 第一块硬盘的第一个分区 |
---|---|---|---|
SCSI | /dev/sd | /dev/sd[a-zz] | /dev/sda1 |
IDE | /dev/hd | /dev/dh[a-z] | /dev/hda1 |
注意
一块硬盘只能有4个主分区或1个扩展分区
如果我想分6个分区,应该怎么分?
分3个主分区,再分一个扩展分区,再在扩展分区下面分2个逻辑分区
注意:1.扩展分区的目的只是为了分逻辑分区;2.扩展分区不能做格式化挂载等操作
分区三步走
第一步:分分区
新建普通分区
[root@wangke ~]# fdisk /dev/sdb
Command (m for help): m //查看帮助命令
Command action
d delete a partition //删除分区
l list known partition types //列出分区类型
n add a new partition //新建分区
p print the partition table //打印分区表
q quit without saving changes //不保存退出
t change a partition's system id //更改分区类型
w write table to disk and exit //保存退出
Command (m for help): n //新建分区
Partition type:
p primary (0 primary, 0 extended, 4 free) //p表示主分区
e extended //e表示扩展分区
Select (default p): //默认选择主分区
Using default response p
Partition number (1-4, default 1): //默认使用分区号1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G //设置2G大小的分区
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): p //打印分区表
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
Command (m for help): w //保存分区
分一个4G的主分区、分区号为1
新建一个sawp分区类型,大小为3G
[root@wangke ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (4196352-41943039, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +3G
Partition 2 of type Linux and of size 3 GiB is set
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 10487807 3145728 83 Linux
Command (m for help): t //更改分区类型
Partition number (1,2, default 2):
Hex code (type L to list all codes): l //列出分区类型
82 Linux swap / So
8e Linux LVM
Hex code (type L to list all codes): 82 //更改成swap类型
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 10487807 3145728 82 Linux swap / Solaris
Command (m for help): w
练习
分一个5G的主分区、分区号为3,分区类型为lvm类型
作业
三个模式互通整理成文档
分一个4G的主分区、分区号为1
分一个2G的主分区、分区号为2,分区类型为swap类型(82)
分一个3G的主分区、分区号为3,分区类型为lvm类型(8e)
分一个扩展分区,分区大小为5G,再在扩展分区下分逻辑分区,大小为2G
分扩展分区,逻辑分区
[root@wangke ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e //分扩展分区
Partition number (2-4, default 2): //分区号为2
First sector (4196352-41943039, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +10G
Partition 2 of type Extended and of size 10 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l //分逻辑分区
Adding logical partition 5 //分区号默认是5
First sector (4198400-25167871, default 4198400):
Using default value 4198400
Last sector, +sectors or +size{K,M,G} (4198400-25167871, default 25167871): +2G
Partition 5 of type Linux and of size 2 GiB is set
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 83 Linux
/dev/sdc2 4196352 25167871 10485760 5 Extended
/dev/sdc5 4198400 8392703 2097152 83 Linux
Command (m for help): w
第二步:格式化(分区)
[root@192 ~]# mkfs.ext4 /dev/sdb1
[root@192 ~]# mkfs.xfs /dev/sdb2
查看格式化类型
[root@192 ~]# blkid
/dev/sda1: UUID="792552c1-6e7f-4ea7-b1fd-6fd403190131" TYPE="xfs"
/dev/sda2: UUID="644c2e5e-202c-4ff7-85e9-a330f12ff344" TYPE="swap"
/dev/sda3: UUID="def8d098-13ec-47d9-8f1d-af560811155d" TYPE="xfs"
/dev/sdb1: UUID="27d9cd5f-3c37-4266-83ad-4ea4db4e98b5" TYPE="ext4"
/dev/sdb2: UUID="9cdee969-7e0d-4523-aba2-fe7083f409ec" TYPE="xfs"
/dev/sr0: UUID="2018-05-03-20-55-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
[root@192 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="27d9cd5f-3c37-4266-83ad-4ea4db4e98b5" TYPE="ext4"
练习
将/dev/sdb1格式化成ext4的文件系统,并验证
第三步:挂载
挂载的意义
[root@192 ~]# mount /dev/cdrom /opt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@192 ~]# cd /opt/
[root@192 opt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@192 opt]# cd
[root@192 ~]# umount /dev/cdrom
[root@192 ~]# cd /opt/
[root@192 opt]# ls
rh
方法一:用文件系统挂载
[root@192 ~]# mount /dev/sdb1 /mnt/
[root@192 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 3.9G 16M 3.6G 1% /mnt
方法二:用UUID挂载
[root@192 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="27d9cd5f-3c37-4266-83ad-4ea4db4e98b5" TYPE="ext4"
[root@192 ~]# mount UUID="27d9cd5f-3c37-4266-83ad-4ea4db4e98b5" /mnt
[root@192 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 3.9G 16M 3.6G 1% /mnt
卸载
方法一:用文件系统卸载
[root@192 ~]# umount /dev/sdb1
[root@192 ~]# df -h
方法二:用挂载点卸载
[root@192 ~]# umount /mnt/
[root@192 ~]# df -h
注意:挂载和卸载都是临时的,重启虚拟机就不生效了
永久挂载
[root@192 ~]# vim /etc/fstab
/dev/sdb1 /mnt ext4 defaults 0 0
文件系统/UUID 挂载点 格式化类型 使用默认挂载选项 开机不做校验 开机不做备份
[root@192 ~]# mount -a
[root@192 ~]# df -h
/dev/sdb1 3.9G 16M 3.6G 1% /mnt
模拟永久挂载错误,机器起不来如何解决
[root@192 ~]# vim /etc/fstab
/dev/sdb1 /mnt ext4 defau 0 0
2.重启虚拟机
[root@192 ~]# reboot
3.重启失败
Give root password for maintenance(or type Control-D to continue):
4.解决方法:
输入root密码即可进入系统
5.检查、修改/etc/fstab
[root@192 ~]# vim /etc/fstab
/dev/sdb1 /mnt ext4 default 0 0
6.全部重新加载
[root@192 ~]# mount -a
[root@192 ~]# df -h
7.重启机器
[root@192 ~]# reboot
制作swap分区
向您的系统添加一个额外的交换分区 756MiB 。交换分区应在系统启动时自动挂载。不要删除或以任何方式改动系统上的任何现有交换分区。
分分区
[root@192 ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
Selected partition 4
First sector (18876416-41943039, default 18876416):
Using default value 18876416
Last sector, +sectors or +size{K,M,G} (18876416-41943039, default 41943039): +756M
Partition 4 of type Linux and of size 756 MiB is set
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 8390655 4194304 83 Linux
/dev/sdb2 8390656 12584959 2097152 82 Linux swap / Solaris
/dev/sdb3 12584960 18876415 3145728 8e Linux LVM
/dev/sdb4 18876416 20424703 774144 83 Linux
Command (m for help): t
Partition number (1-4, default 4):
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w
[root@192 ~]# partprobe //刷新分区
格式化
[root@192 ~]# mkswap /dev/sdb4
永久挂载
[root@192 ~]# vim /etc/fstab
UUID=60a3d53e-d69d-48e8-8731-87592cf50402 swap swap defaults 0 0
验证
挂载:
[root@192 ~]# swapon -a
[root@192 ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 2G 0B -1
/dev/sdb4 partition 756M 0B -2
卸载;
[root@192 ~]# swapoff /dev/sdb4
[root@192 ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 2G 0B -1
lvm逻辑卷
好处:能够在线扩容
pv:物理卷,跟分区和硬盘功能一样
vg:卷组,由一块或多块物理卷组成
lv:逻辑卷,从卷组中分割一块空间
分区
[root@192 ~]# fdisk /dev/sdc
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 2048 10487807 5242880 8e Linux LVM
Command (m for help): w
创建逻辑卷
[root@192 ~]# pvcreate /dev/sdc1 //创建物理卷
Physical volume "/dev/sdc1" successfully created.
[root@192 ~]# vgcreate vg01 /dev/sdc1
Volume group "vg01" successfully created
[root@192 ~]# lvcreate -n lv01 -L 512M /dev/vg01
Logical volume "lv01" created.
查看方式
pv查看方式
[root@192 ~]# pvdisplay
[root@192 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg01 lvm2 a-- <5.00g <4.50g
查看vg
[root@192 ~]# vgdisplay
[root@192 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 1 0 wz--n- <5.00g <4.50g
查看lv
[root@192 ~]# lvdisplay
[root@192 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 512.00m
格式化
[root@192 ~]# mkfs.xfs /dev/vg01/lv01
[root@192 ~]# blkid
/dev/mapper/vg01-lv01: UUID="cf513370-316d-4447-a029-49e0ce598bf3" TYPE="xfs"
挂载
[root@192 ~]# vim /etc/fstab
/dev/vg01/lv01 /opt xfs defaults 0 0
[root@192 ~]# mount -a
[root@192 ~]# df -h
/dev/mapper/vg01-lv01 509M 26M 483M 6% /opt
作业
1.创建一个 2G 的交换分区,并开机自动生效,但不影响原有的swap分区
2.创建一个 5G 的逻辑卷,格式化类型为xfs,挂载到/test文件夹(没有/test请创建其目录),并开机自动生效,但不影响原有的分区
软件包管理
前提步骤
[root@192 ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@192 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.2G 4.2G 0 100% /mnt
RPM
安装
1.必须进入包路径
[root@192 ~]# cd /mnt/Packages/
2.必须写完整的包名
[root@192 Packages]# ls | grep vsftpd
[root@192 Packages]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm
warning: vsftpd-3.0.2-22.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:vsftpd-3.0.2-22.el7 ################################# [100%]
-i 安装
-v 显示详细信息
-h 显示带#的进度条
[root@192 Packages]# ls | grep httpd
[root@192 Packages]# rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpm --nodeps --force
warning: httpd-2.4.6-80.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:httpd-2.4.6-80.el7.centos ################################# [100%]
--nodeps 解决依赖关系
--force 强制
查询
-q 查询软件包是否安装
[root@192 Packages]# rpm -q httpd
httpd-2.4.6-80.el7.centos.x86_64
[root@192 Packages]# rpm -q dhcp
package dhcp is not installed
-qa 查询已安装的所有软件包
[root@192 Packages]# rpm -qa
-qc 根据包名查询软件包配置文件路径
[root@192 Packages]# rpm -qc httpd
-ql 查询软件包的相关文件
[root@192 Packages]# rpm -ql httpd
[root@localhost ~]# rpm -ql vsftpd
[root@localhost ~]# rpm -qf /usr/share/man/man5/vsftpd.conf.5.gz
-qf 根据路径查询来自于哪个软件包
[root@192 Packages]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset:
[root@192 Packages]# rpm -qf /usr/lib/systemd/system/httpd.service
httpd-2.4.6-80.el7.centos.x86_64
-qi 查询软件包详细信息
[root@192 Packages]# rpm -qi httpd
卸载
[root@192 Packages]# rpm -e httpd
[root@192 Packages]# rpm -q httpd
package httpd is not installed
yum
方法一:使用网上镜像源
1.让虚拟机上网
[root@192 yum.repos.d]# ping -c 3 baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=30.0 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=31.1 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=29.4 ms
2.直接安装软件
[root@192 ~]# yum install -y dhcp
3.验证
[root@192 ~]# rpm -q dhcp
httpd-2.4.6-97.el7.centos.5.x86_64
方法二:使用本地光盘安装
注意:需要挂载光盘
1.进入仓库路径
[root@192 ~]# cd /etc/yum.repos.d/
2.列出仓库
[root@192 yum.repos.d]# ls
3.给仓库做备份
[root@192 yum.repos.d]# rm -rf Centos-7.repo
[root@192 yum.repos.d]# cp CentOS-Base.repo.bak CentOS-Base.repo
4.编写仓库
方法一:
[root@192 yum.repos.d]# vim CentOS-Base.repo
:set nu //设置行号
:1,12d //删除1到12行
:7 //跳转到低7行
dG //删除光标所在行到最后一行
:3d //删除第三行
x //删除光标所在字符
ww //单词跳转
D //删除光标所在行后半部分
a,再后面,补充file:///mnt ---- /mnt为光盘的挂载点
将gpgcheck=1改为gpgcheck=0
dd //删除光标所在行
最终修改样例
1 [base] //仓库的ID
2 name=CentOS-$releasever - Base //仓库的名字
3 baseurl=file:///mnt //从光盘安装软件包
4 gpgcheck=0 //不检查密钥
方法二:
:%d
1 [Base] //仓库的ID
2 name=Base //仓库的名字
3 baseurl=file:///mnt //从光盘安装软件包
4 gpgcheck=0 //不检查密钥
5.清理缓存
[root@192 yum.repos.d]# yum clean all
6.建立缓存
[root@192 yum.repos.d]# yum makecache
7.刷新
[root@192 yum.repos.d]# yum repolist
repolist: 3,971 --(如果repolist的值为0,表示仓库错误,重新检查光盘是否挂载和仓库是否正确)
openssh服务
telnet:数据传输过程中是以明文的形式传输
ssh:数据传输过程中是以密文的形式传输
端口号:Linux:22,windows:3389
[root@192 ~]# ss -anpt | grep 22
认证方式
密码认证
[root@192 ~]# ssh root@192.168.14.132
密钥认证
[root@192 ~]# ssh-keygen //生成密钥对
[root@192 ~]# ssh-copy-id root@192.168.14.132 //将公钥上传至服务器
[root@192 ~]# ssh root@192.168.14.132 //再次连接时发现不需要密码
Last login: Sun Dec 25 10:09:41 2022 from 192.168.14.129
[root@wk ~]#
练习:10:32-10:37
机器间文件传输
文件上传
[root@192 ~]# scp /root/test.txt root@192.168.14.132:/tmp
test.txt 100% 0 0.0KB/s 00:00
[root@192 ~]# touch test1.txt
[root@192 ~]# scp /root/test1.txt root@192.168.14.132:/tmp
test1.txt 100% 0 0.0KB/s 00:00
scp:命令
/root/test.txt:本地机器的文件路径
root:对端的用户名
@:间隔符
192.168.14.132:对端的IP
:/tmp:对端的文件路径
文件下载
[root@192 ~]# scp root@192.168.14.132:/etc/fstab /tmp
fstab 100% 501 286.1KB/s 00:00
[root@192 ~]# cd /tmp/
[root@192 tmp]# ls
fstab
scp:命令
root:对端的用户名
@:间隔符
192.168.14.132:对端的IP
:/etc/fstab:对端的文件路径
/tmp:本地的文件路径
复习
10:53-11:05机器传输练习题
最后一节课复习
18:30考试
压缩
[root@localhost ~]# dd if=/dev/zero of=100M bs=100M count=1
[root@localhost ~]# dd if=/dev/zero of=200M bs=200M count=1
[root@localhost ~]# dd if=/dev/zero of=300M bs=300M count=1
[root@localhost ~]# gzip 100M 200M 300M
[root@localhost ~]# ls -lh
total 608K
-rw-r--r--. 1 root root 100K Feb 23 09:03 100M.gz
-rw-r--r--. 1 root root 199K Feb 23 09:03 200M.gz
-rw-r--r--. 1 root root 299K Feb 23 09:03 300M.gz
[root@localhost ~]# gzip -d *.gz
[root@localhost ~]# bzip2 100M 200M 300M
[root@localhost ~]# ls -lh
total 20K
-rw-r--r--. 1 root root 113 Feb 23 09:03 100M.bz2
-rw-r--r--. 1 root root 177 Feb 23 09:03 200M.bz2
-rw-r--r--. 1 root root 242 Feb 23 09:03 300M.bz2
[root@localhost ~]# bzip2 -d *.bz2
[root@localhost ~]# xz 100M 200M 300M
[root@localhost ~]# ls -lh
total 104K
-rw-r--r--. 1 root root 16K Feb 23 09:03 100M.xz
-rw-r--r--. 1 root root 30K Feb 23 09:03 200M.xz
-rw-r--r--. 1 root root 45K Feb 23 09:03 300M.xz
[root@localhost ~]# xz -d *.xz
压缩时间:gzip > bzip2 > xz
压缩大小:bzip2 > xz > gzip
打包
1.打包
命令格式:tar 选项 打包后的名字 要打包的文件
[root@localhost ~]# tar -cf a.tar 100M 200M 300M
[root@localhost ~]# ls
100M 300M a.tar 200M
2.列出打包内容
命令格式: tar 选项 打包后的名字
[root@localhost ~]# tar -tvf a.tar
-rw-r--r-- root/root 104857600 2023-02-23 09:03 100M
-rw-r--r-- root/root 209715200 2023-02-23 09:03 200M
-rw-r--r-- root/root 314572800 2023-02-23 09:03 300M
3.解包
命令格式: tar 选项 打包后的名字
[root@localhost ~]# rm -rf 100M 200M 300M
[root@localhost ~]# ls
anaconda-ks.cfg Desktop Downloads original-ks.cfg Public Videos
a.tar Documents Music Pictures Templates
[root@localhost ~]# tar -xf a.tar
[root@localhost ~]# ls
100M 300M a.tar 200M
打包时调用gzip压缩
[root@localhost ~]# tar -czvf b.tar.gz 100M 200M 300M
find查找
命令格式:find 查找范围 查找类型
-uid/gid 根据uid进行查找
[root@localhost ~]# find / -uid 1000
-group/user 根据组名进行查找
[root@localhost ~]# find / -group abc
-name 根据名字进行查找
[root@localhost ~]# find / -name root
-iname 忽略大小写
[root@localhost ~]# find / -iname root
-perm 根据权限进行查找
[root@localhost ~]# find / -perm 1777
[root@localhost ~]# ls -ld /dev/mqueue
drwxrwxrwt. 2 root root 40 Feb 23 08:36 /dev/mqueue
-size
[root@localhost ~]# find / -size 100M
[root@localhost ~]# find / -size +300M
[root@localhost ~]# find / -size -2M
-exec 可以理解成连接符
查找用户abc的文件,并将其拷贝到/test目录
[root@localhost ~]# find / -user abc -exec cp -a {} /test \;
{} 表示前面查找到内容
\表示转移
[root@localhost ~]# A=100
[root@localhost ~]# echo $A
100
[root@localhost ~]# echo \$A
$A
;表示回车
[root@localhost ~]# pwd ; ls
/root
100M 300M a.tar b.tar.gz Desktop Downloads original-ks.cfg Public Videos
200M anaconda-ks.cfg b.tar.bz2 b.tar.xz Documents Music Pictures Templates
-nouser
[root@localhost ~]# find / -nouser
脚本基础
[root@localhost ~]# TIME1=$(date +%F)
[root@localhost ~]# echo $TIME1
2023-02-23
[root@localhost ~]# TIME2=$(date +%R)
[root@localhost ~]# echo $TIME2
11:35
[root@localhost ~]# TIME10=`date +%F`
[root@localhost ~]# echo $TIME10
2023-02-23
[root@localhost ~]# useradd qq
[root@localhost ~]# cp /etc/passwd /home/qq/passwd_$(date +%F)
[root@localhost ~]# cd /home/qq/
[root@localhost qq]# ls
passwd_2023-02-23
脚本三步走
1.编写脚本
A.命令解释器
B.注释行
C.正文
2.给脚本增加x权限
3.执行脚本
[root@localhost ~]# vim test_1.sh
#!/bin/bash
#zhushi
touch 100.txt
[root@localhost ~]# chmod +x test_1.sh
[root@localhost ~]# /root/test_1.sh
[root@localhost ~]# ls
100.txt
练习
1.制作100M、200M、300M
2.将100M 200M 300M文件通过tar和gzip打包,打包名为b.tar.gz
[root@localhost ~]# tar -czvf b.tar.gz 100M 200M 300M
3.将100M 200M 300M文件通过tar和bzip2打包,打包名为b.tar.bz2
[root@localhost ~]# tar -cjvf b.tar.bz2 100M 200M 300M
4.将100M 200M 300M文件通过tar和xz打包,打包名为b.tar.xz
[root@localhost ~]# tar -cJvf b.tar.xz 100M 200M 300M
1.编写脚本
[root@localhost ~]# vim test-2.sh
#!/bin/bash
#zhushi
hostname
2.查看脚本信息
[root@localhost ~]# ls -l test-2.sh
-rw-r--r--. 1 root root 29 Mar 2 08:56 test-2.sh
3.执行脚本
[root@localhost ~]# bash test-2.sh
localhost.localdomain
[root@localhost ~]# source test-2.sh
localhost.localdomain
4.必须有x权限才能用绝对路径执行
[root@localhost ~]# /root/test-2.sh
bash: /root/test-2.sh: Permission denied
[root@localhost ~]# chmod +x /root/test-2.sh
[root@localhost ~]# /root/test-2.sh
localhost.localdomain
强引用、弱引用
弱引用:先求变量结果在echo
[root@localhost ~]# echo "$(date +%r)"
09:09:23 AM
强引用:按原值输出
[root@localhost ~]# echo '$(date +%r)'
$(date +%r)
转义
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@localhost ~]# echo \$PATH
$PATH
预定义变量
$0 当前执行脚本或程序的名称
[root@localhost ~]# vim test-3.sh
#!/bin/bash
#zhushi
echo $0
[root@localhost ~]# chmod +x test-3.sh
[root@localhost ~]# /root/test-3.sh
/root/test-3.sh
[root@localhost ~]# bash test-3.sh
test-3.sh
预定义变量
$# 命令行中位置参数的个数
$* 所有位置参数的内容
$? 前一条命令执行后返回状态
(返回值为0,正常;为其他非0值异常)
$0 当前执行脚本或程序的名称
位置变量
使用$1、$2、$3...表示
[root@localhost ~]# vim test-4.sh
#!/bin/bash
#zhushi
echo $1
echo $2
echo $#
echo $*
[root@localhost ~]# chmod +x test-4.sh
[root@localhost ~]# /root/test-4.sh 1 a xz r
1
a
4
1 a xz r
expr
[root@localhost ~]# vim expr.sh
#!/bin/bash
echo $1 + $2 =$(expr $1 + $2)
echo $1 - $2 =$(expr $1 - $2)
echo $1 \* $2 =$(expr $1 \* $2)
echo $1 / $2 =$(expr $1 / $2)
[root@localhost ~]# chmod +x expr.sh
[root@localhost ~]# /root/expr.sh 9 3
9 + 3 =12
9 - 3 =6
9 * 3 =27
9 / 3 =3
[root@localhost ~]# vim expr.sh
#!/bin/bash
read -p "please input two numbers:" x y
echo $x + $y =$(expr $x + $y)
echo $x - $y =$(expr $x - $y)
echo $x \* $y =$(expr $x \* $y)
echo $x / $y =$(expr $x / $y)
[root@localhost ~]# chmod +x expr.sh
[root@localhost ~]# /root/expr.sh
please input two numbers:9 3
9 + 3 =12
9 - 3 =6
9 * 3 =27
9 / 3 =3
文件测试
文件测试
格式:[ 操作符 文件或目录 ]
常用操作符
-d:测试是否为目录(directory)
-e:测试目录或文件是否存在(exist)
-f:测试是否为文件(file)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x: 测试当前用户是否可执行(Execute)该文件
[root@localhost ~]# [ -f 1.txt ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -d 1.txt ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e 1.txt ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -e 2.txt ]
[root@localhost ~]# echo $?
1
数值比较
整数值比较
格式:[ 整数1 操作符 整数2 ]
常用操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于等于 (Lesser or Equal)
-ge:大于或等于(Greater or Equal)
[root@localhost ~]# [ 1 -eq 1 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 1 -ge 1 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ 1 -gt 1 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ 1 -lt 1 ]
[root@localhost ~]# echo $?
1
if单分支
if
条件表达式
then
命令
fi
[root@localhost ~]# vim if_dan.sh
#!/bin/bash
#if_dan
if
[ -e 1.txt ]
then
echo "yes"
fi
[root@localhost ~]# chmod +x if_dan.sh
[root@localhost ~]# /root/if_dan.sh
yes
练习
判断/etc/passwd是否为文件,如果是请输出yes,否则直接结束
if双分支
if
条件表达式
then
命令1
else
命令2
fi
[root@localhost ~]# vim if_shuang.sh
#!/bin/bash
#if_dan
if
[ -e 1.txt ]
then
echo "yes"
fi
[root@localhost ~]# chmod +x if_shuang.sh
[root@localhost ~]# bash -x if_shuang.sh
+ '[' -d /tmp ']'
+ echo yes
yes
练习
判断/你朋友的姓名是否为目录,如果是输出yes,如果不是则创建此目录
/wangke
if多分支
if
条件表达式1
then
命令1
elif
条件表达式2
then
命令2
elif
条件表达式3
then
命令3
fi
[root@localhost ~]# vim if_duo.sh
#!/bin/bash
#if_duo
read -p "please input a number: " n
if
[ $n -gt 100 ]
then
echo "分数大于100,请重新输入!"
elif
[ $n -ge 90 ]
then
echo "优秀"
elif
[ $n -ge 80 ]
then
echo "良好"
elif
[ $n -ge 70 ]
then
echo "中等"
elif
[ $n -ge 60 ]
then
echo "及格"
else
echo "不及格"
fi
[root@localhost ~]# chmod +x if_duo.sh
[root@localhost ~]# /root/if_duo.sh
please input a number: 112
分数大于100,请重新输入!
[root@localhost ~]# /root/if_duo.sh
please input a number: 99
优秀
[root@localhost ~]# /root/if_duo.sh
please input a number: 50
不及格
服务基本5步
1.挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /mnt
2.编写仓库
通用版
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
[root@localhost yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
机房版
[root@localhost yum.repos.d]# rm -rf Centos-7.repo
[root@localhost yum.repos.d]# cp CentOS-Base.repo.bak CentOS-Base.repo
[root@localhost yum.repos.d]# vim CentOS-Base.repo
[Base]
name=Base
baseurl=file:///mnt
gpgcheck=0
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache
[root@localhost yum.repos.d]# yum repolist
3.安装软件包
[root@localhost ~]# yum install -y httpd
4.关闭防火墙(二选一)
方法一:放行防火墙
[root@localhost ~]# man firewall-cmd
/EX
1.在防火墙中放行http
[root@localhost ~]# firewall-cmd --permanent --add-service=http
2.刷新
[root@localhost ~]# firewall-cmd --reload
3.列出、验证
[root@localhost ~]# firewall-cmd --list-all
方法二:关闭防火墙
[root@localhost ~]# systemctl stop firewalld
5.关闭selinux
[root@localhost ~]# vim /etc/selinux/config (重启虚拟机才生效)
7 SELINUX=disabled
临时关闭
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
DHCP服务
DHCP:自动分配协议、自动分配服务
工作原理:
1.客户端向服务器发送租约地址的请求
2.服务器分配地址给客户端
3.客户端进行地址选择,选择完毕后
4.地址租约(默认租约、最大租约)
[root@localhost ~]# nmcli connection show ens33
ipv4.method: auto
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses "192.168.1.1/24" ipv4.gateway "192.168.1.254" ipv4.dns "192.168.1.1" connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens33 && nmcli connection up ens33
1.挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /mnt
2.编写仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Centos-7.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# vim Centos-7.repo
1 [base]
2 name=base
3 baseurl=file:///mnt
4 gpgcheck=0
3.安装软件
[root@localhost ~]# yum install -y dhcp
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-82.el7.centos.x86_64
4.关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
5.关闭selinux
[root@localhost ~]# vim /etc/selinux/config
7 SELINUX=disabled
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
6.根据包名查找配置文件路径
[root@localhost ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf
7.修改主配置文件(没有实质的内容)
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
8.查看样例文件
[root@localhost ~]# vim /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
9.将样例文件内容复制到主配置文件
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
10.修改主配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
:set nu
/A ---- 搜索A
dgg ---- 删除光标之前的所有行(包含光标所在行)
保留连续的三段
:21 ---- 跳转到21行
dG ---- 删除光标之后的所有行(包含光标所在行)
1 subnet 192.168.1.0 netmask 255.255.255.0 {
//网段 //子网掩码
2 range 192.168.1.50 192.168.1.60;
//给客户机分配的地址范围
3 option domain-name-servers 192.168.1.1;
//DNS服务器(暂时没有DNS服务器就写自己的IP)
4 option routers 192.168.1.254;
//网关
5 default-lease-time 600;
//默认租约时间
6 max-lease-time 7200;
//最大租约时间
7 }
11.重启服务
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl enable dhcpd
12.验证
A.使用仅主机验证(详细操作见上)
B.用vmnet1获取IP地址
samba服务-匿名访问
samba:用于windows和Linux之间做共享的服务
nfs:用于linux和Linux之间的共享
1.挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /mnt
2.编写yum仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Centos-7.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# vim Centos-7.repo
1 [base]
2 name=base
3 baseurl=file:///mnt
4 gpgcheck=0
3.安装软件
[root@localhost ~]# yum install -y dhcp
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-82.el7.centos.x86_64
4.关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
5.关闭selinux
[root@localhost ~]# vim /etc/selinux/config
7 SELINUX=disabled
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
6.创建文件夹(用来做共享)
[root@localhost ~]# mkdir /test
7.修改主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
6 [global]
7 workgroup = SAMBA
8 map to guest = bad user //新增信息,表示允许匿名访问
9 security = user
40 [share] ----- 共享文件夹的名字
41 path = /test ----- 共享文件夹存放的位置
42 public = yes ----- 匿名访问 ( 如果想匿名访问必须配置 map to guest = bad user)
43 writable = yes ----- 是否有写权限
8.开启服务
[root@localhost ~]# systemctl restart smb
9.用windows访问(可以访问,但是不能写文件)
10.修改共享文件夹的权限,给其他人w权限
[root@localhost ~]# ls -ld /test/
drwxr-xr-x. 2 root root 6 Mar 30 09:42 /test/
[root@localhost ~]# chmod o+w /test/
11.再次验证
win + r
\\centos的IP
[root@localhost ~]# smbclient -L //192.168.93.140
Enter SAMBA\root's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
share Disk
IPC$ IPC IPC Service (Samba 4.10.16)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
用户名、密码
1.挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /mnt
2.编写yum仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Centos-7.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
[root@localhost yum.repos.d]# vim Centos-7.repo
1 [base]
2 name=base
3 baseurl=file:///mnt
4 gpgcheck=0
3.安装软件
[root@localhost ~]# yum install -y dhcp
[root@localhost ~]# rpm -q dhcp
dhcp-4.2.5-82.el7.centos.x86_64
4.关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
5.关闭selinux
[root@localhost ~]# vim /etc/selinux/config
7 SELINUX=disabled
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
6.创建文件夹(用来做共享)
[root@localhost ~]# mkdir /test1
7.给共享文件夹权限
[root@localhost ~]# chmod o+w /test1
[root@localhost ~]# ls -ld /test1
drwxr-xrwx. 2 root root 6 Mar 30 11:02 /test1
8.创建用户
[root@localhost ~]# useradd wangke
9.将用户加入samba
[root@localhost ~]# pdbedit -au wangke
new password: redhat
retype new password: redhat
[root@localhost ~]# pdbedit -L
wangke:1001:
10.修改主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
8 # map to guest = bad user ---- 注释匿名访问
45 [wangke] ----- 共享文件夹的名字
46 path = /test1 /test ----- 共享文件夹存放的位置
47 valid users = wangke -----合法用户,表示允许wangke登录
48 writable = yes ----- 是否有写权限
11.重启服务
[root@localhost ~]# systemctl restart smb
12.验证
win + r
\\centos的IP
用户名:wangke
密码:redhat
13.如果想切换用户登录时,请先在cmd里面清理缓存
C:\Users\Administrator>net use * /del /y
你有以下的远程连接:
\\192.168.93.140\IPC$
继续运行会取消连接。
命令成功完成。
14.清理完成后可以再用其他用户登录
web网站
实验一:访问默认的页面
1.挂载光盘
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
6.启动httpd服务
[root@localhost ~]# systemctl restart httpd
7.验证(浏览器中输入服务器地址)
实验二:自定义页面
问题:1.首页文件名字?2.首页文件存放的位置
1.挂载光盘
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sr0 4.4G 4.4G 0 100% /mnt
2.编写yum仓库
[root@localhost ~]# yum repolist
repolist: 4,070
3.安装软件
[root@localhost ~]# rpm -q httpd
httpd-2.4.6-95.el7.centos.x86_64
4.关闭selinux
[root@localhost ~]# getenforce
Permissive
5.关闭防火墙
root@localhost ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead)
6.查看主配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
//搜索首页文件存放位置
/DocumentRoot
119 DocumentRoot "/var/www/html"
//搜索首页文件名字
/index.html
164 DirectoryIndex index.html
7.修改首页文件内容
[root@localhost ~]# vim /var/www/html/index.html
hello wangke!
8.重启服务
9.验证
实验三:修改首页文件名字及存放位置
1.挂载光盘
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
6.创建目录(存放首页文件)
[root@localhost ~]# mkdir /wangke
7.修改主配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
//修改首页文件存放的位置
119 #DocumentRoot "/var/www/html"
120 DocumentRoot "/wangke"
132 #<Directory "/var/www/html">
133 <Directory "/wangke">
//修改首页文件名字
166 #DirectoryIndex index.html
167 DirectoryIndex wangke.html
8.重启服务
[root@localhost ~]# systemctl restart httpd
9.修改首页文件内容
[root@localhost ~]# vim /wangke/wangke.html
wangke.html
10.刷新网页
实验四:修改端口号
1.挂载光盘
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
6.修改主配置文件
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
42 Listen 8089
43 #Listen 80
7.重启服务
[root@localhost ~]# systemctl restart httpd
8.验证
http://ip:8089
模拟错误
在实验四基础之上再模拟
1.开启selinux
[root@localhost ~]# setenforce 1
[root@localhost ~]# getenforce
Enforcing
2.重启服务
[root@localhost ~]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
3.分析日志
[root@localhost ~]# journalctl -xe
SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 8089.
***** Plugin bind_ports (92.2 confidence) suggests ************************
If you want to allow /usr/sbin/httpd to bind to network port 8089
Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 8089
where PORT_TYPE is one of the following: http_cache_port_t, http_port_t, jboss_management_port_t, jboss_messaging_port_t, ntop_port_t, puppet_port_t.
解决方法:(任选其一)
A.关闭selinux
[root@localhost ~]# setenforce 0
B.给8089做放行标签
[root@localhost ~]# semanage port -a -t http_port_t -p tcp 8089
实验五:用域名访问网站
1.挂载光盘
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
6.做临时解析
A.在Linux上做解析
[root@localhost ~]# vim /etc/hosts
192.168.93.140 www.wangke.com
B.在windows上做解析
C:\Windows\System32\drivers\etc\hosts
192.168.93.140 www.wangke.com
7.验证
www.wangke.com:8089
DNS服务
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost ~]# yum install -y bind bind-chroot
4.关闭selinux
5.关闭防火墙
6.配置静态IP
[root@localhost ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.254" ipv4.dns "192.168.1.10" connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens33 && nmcli connection up ens33
请记得检查IP、网关、DNS是否正确
7.查找配置文件路径
[root@localhost ~]# rpm -qc bind
/etc/named.conf
/etc/named.rfc1912.zones
/var/named/named.localhost
/var/named/named.loopback
8.修改主配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
12 options {
13 listen-on port 53 { any; };
21 allow-query { any; };
9.自定义正反区域文件
正向区域文件
13 zone "rh.com" IN { ----正向解析后缀
14 type master; ---主DNS服务器
15 file "rh.com"; ----正向解析文件名
16 allow-update { none; }; ----允许更新
17 };
反向区域文件
31 zone "1.168.192.in-addr.arpa" IN { ---反向区域
32 type master; ---主DNS服务器
33 file "1.168.192"; ----反向解析文件名
34 allow-update { none; }; ----允许更新
35 };
10.查看正反向解析模板文件的权限
[root@localhost ~]# cd /var/named/
[root@localhost named]# ll
total 16
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
11.将正反向解析模板文件复制到自定义正反向解析中
[root@localhost named]# cp -a named.localhost rh.com
[root@localhost named]# cp -a named.loopback 1.168.192
[root@localhost named]# ll
total 24
-rw-r-----. 1 root named 168 Dec 15 2009 1.168.192
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
-rw-r-----. 1 root named 152 Jun 21 2007 rh.com
12.修改正向解析文件
[root@localhost named]# vim rh.com
1 $TTL 1D //生存周期
2 @ IN SOA ns1.rh.com. 123456.com. (
//服务器地址 管理员邮箱(不要用@)
3 0 ; serial //更新序列号时间
4 1D ; refresh //刷新时间
5 1H ; retry //重试时间
6 1W ; expire //过期时间
7 3H ) ; minimum //无效记录缓存时间
8 NS ns1.rh.com. //DNS服务器记录
9 ns1 A 192.168.1.10 //主机名 IP地址
10 www A 192.168.1.10
11 ftp A 192.168.1.11
12 wk A 192.168.1.12
13.修改反向解析文件
[root@localhost named]# vim 1.168.192
1 $TTL 1D
2 @ IN SOA ns1.rh.com. 123456.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS ns1.rh.com.
9 10 PTR ns1.rh.com.
10 10 PTR www.rh.com.
11 11 PTR ftp.rh.com.
12 12 PTR wk.rh.com.
14.重启服务
[root@localhost named]# systemctl restart named
[root@localhost named]#
15.验证(DNS一定要指向自己)
Linux验证
[root@localhost ~]# nslookup
> www.rh.com
Server: 192.168.1.10
Address: 192.168.1.10#53
Name: www.rh.com
Address: 192.168.1.10
> ftp.rh.com
Server: 192.168.1.10
Address: 192.168.1.10#53
Name: ftp.rh.com
Address: 192.168.1.11
> wk.rh.com
Server: 192.168.1.10
Address: 192.168.1.10#53
Name: wk.rh.com
Address: 192.168.1.12
> 192.168.1.10
10.1.168.192.in-addr.arpa name = ns1.rh.com.
10.1.168.192.in-addr.arpa name = www.rh.com.
> 192.168.1.11
11.1.168.192.in-addr.arpa name = ftp.rh.com.
> 192.168.1.12
12.1.168.192.in-addr.arpa name = wk.rh.com.
邮箱服务器
[root@localhost named]# vim rh.com
1 $TTL 1D
2 @ IN SOA ns1.rh.com. 123456.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS ns1.rh.com.
9 MX 10 mail.rh.com.
10 ns1 A 192.168.1.10
11 www A 192.168.1.10
12 ftp A 192.168.1.11
13 wk A 192.168.1.12
14 mail A 192.168.1.10
[root@localhost named]# vim 1.168.192
1 $TTL 1D
2 @ IN SOA ns1.rh.com. 123456.com. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS ns1.rh.com.
9 MX 10 mail.rh.com.
10 10 PTR ns1.rh.com.
11 10 PTR www.rh.com.
12 11 PTR ftp.rh.com.
13 12 PTR wk.rh.com.
14 10 PTR mail.rh.com.
NFS服务
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost yum.repos.d]# rpm -q rpcbind
rpcbind-0.2.0-49.el7.x86_64
[root@localhost yum.repos.d]# rpm -q nfs-utils
nfs-utils-1.3.0-0.68.el7.x86_64
4.关闭selinux
5.关闭防火墙
6.创建共享文件夹
[root@localhost ~]# mkdir /nfs
[root@localhost ~]# mkdir -p /test/nfs
7.给共享文件夹w权限
[root@localhost nfs]# chmod o+w /nfs
[root@localhost nfs]# chmod o+w /test/nfs
[root@localhost ~]# man 5 exports
8.修改主配置文件
/nfs *(rw)
/test/nfs 192.168.93.0/24(ro)
9.重启服务
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
10.验证
A.查看共享文件夹
[root@localhost ~]# showmount -e 192.168.93.140
Export list for 192.168.93.140:
/nfs *
/test/nfs 192.168.93.0/24
B.挂载到本地
[root@localhost ~]# mount -t nfs 192.168.93.140:/nfs /opt
[root@localhost ~]# mount -t nfs 192.168.93.140:/test/nfs /tmp
C.验证挂载
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
192.168.93.140:/nfs 598G 49G 550G 9% /opt
192.168.93.140:/test/nfs 598G 49G 550G 9% /tmp
D.验证权限
[root@localhost ~]# cd /opt
[root@localhost opt]# touch 10.txt
[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch 10.txt
touch: cannot touch ‘10.txt’: Read-only file system
ctrl shift esc
邮件服务
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost ~]# rpm -q postfix
postfix-2.10.1-9.el7.x86_64
[root@localhost ~]# yum install -y dovecot
4.关闭selinux
5.关闭防火墙
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost ~]# yum list | grep post //列出所有软件包并过滤出postfix
[root@localhost ~]# yum search postfix //搜索跟postfix相关的包(带有释义)
[root@localhost ~]# yum install -y postfix dovecot
4.关闭selinux
5.关闭防火墙
6.修改发件箱的主配置文件
[root@localhost ~]# vim /etc/postfix/main.cf
//侦听所有接口
/inet
113 #inet_interfaces = all
114 inet_interfaces = all
//邮箱目录
/home
420 #home_mailbox = Maildir/
421 home_mailbox = Maildir/
//目的地
/mydest
166 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
167 #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
168 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
//发送地
/myori
99 #myorigin = $mydomain
100 myorigin = $mydomain
//指定域名
/mydom
83 #mydomain = domain.tld
84 mydomain = redhat.com
7.修改收件箱的主配置文件
[root@localhost ~]# rpm -qc dovecot
/etc/dovecot/conf.d/10-auth.conf
8. [root@localhost ~]# vim /etc/dovecot/conf.d/10-auth.conf
10 #disable_plaintext_auth = yes
11 disable_plaintext_auth = yes
9.重启服务
[root@localhost ~]# systemctl restart postfix.service dovecot
[root@localhost ~]# useradd wangke
[root@localhost ~]# mail -s "zhuti" wangke.redhat.com <<< "neirong" (已做DNS服务时,发送邮件)
[root@localhost ~]# mail -s "zhuti" wangke <<< "neirong" (未做DNS服务时,发送邮件)
10.验证
[root@localhost ~]# cd /home/wangke/Maildir/new/
[root@localhost new]# vim 1653561015.V803I14a7b0M848963.localhost.localdomain
Return-Path: <root@redhat.com>
X-Original-To: wangke
Delivered-To: wangke@redhat.com
Received: by localhost.localdomain (Postfix, from userid 0)
id CE5D7216A298; Thu, 26 May 2022 18:30:15 +0800 (CST)
Date: Thu, 26 May 2022 18:30:15 +0800
To: wangke@redhat.com
Subject: zhuti
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20220526103015.CE5D7216A298@localhost.localdomain>
From: root@redhat.com (root)
neirong
FTP服务
匿名访问
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost ~]# yum install -y vsftpd
4.关闭selinux
5.关闭防火墙
6.查找配置文件路径
[root@localhost ~]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.conf
7.修改主配置文件
12 anonymous_enable=YES
8.启动服务
[root@localhost ~]# systemctl restart vsftpd
9.验证
linux访问
[root@localhost ~]# ftp 192.168.93.140
Connected to 192.168.93.140 (192.168.93.140).
220 (vsFTPd 3.0.2)
Name (192.168.93.140:root): ftp
331 Please specify the password.
Password:空
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,93,140,149,92).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 6 Oct 13 2020 pub
Windows访问:
ftp://192.168.93.140/
匿名上传下载
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@localhost ~]# yum install -y vsftpd
4.关闭selinux
5.关闭防火墙
6.查找配置文件路径
[root@localhost ~]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.conf
7.修改主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
29 anon_upload_enable=YES
33 anon_mkdir_write_enable=YES
8.开启服务
[root@localhost ~]# systemctl restart vsftpd
9.修改pub的权限
[root@localhost ~]# chmod o+w /var/ftp/pub/
[root@localhost ~]# ls -ld /var/ftp/pub/
drwxr-xrwx. 2 root root 6 Oct 14 2020 /var/ftp/pub/
10.验证
windows:
新建文件夹
Linux:
[root@localhost ~]# cd /var/ftp/pub/
[root@localhost pub]# ls
新文件夹
[root@localhost pub]# touch 1.txt
[root@localhost pub]# ls
1.txt 新文件夹
用户名密码登录
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# echo "123456" | passwd --stdin user1
[root@localhost ~]# echo "123456" | passwd --stdin user2
[root@localhost ~]# ftp 192.168.93.140
Name (192.168.93.140:root): user1
Password:123456
230 Login successful.
[root@localhost ~]# ftp 192.168.93.140
Name (192.168.93.140:root): user2
Password:123456
230 Login successful.
不允许user1登录
[root@localhost vsftpd]# vim ftpusers //存放不允许用户登录的文件
# Users that are not allowed to login via ftp
user1
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@localhost vsftpd]# ftp 192.168.93.140
Name (192.168.93.140:root): user1
331 Please specify the password.
Password:123456
530 Login incorrect.
Login failed.
新增配置文件内容
1.从帮助文档中查找关键字
[root@localhost ~]# man 5 vsftpd.conf
max_per_ip
2.将其加入到主配置文件中
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
129 max_per_ip=3
3.重启服务
[root@localhost vsftpd]# systemctl restart vsftpd
4.验证
在cmd中输入4次,前三次可以连接成功,最后一次失败
C:\Users\Administrator>ftp 192.168.93.140
用户(192.168.93.140:(none)): ftp
密码:空
230 Login successful.
C:\Users\Administrator>ftp 192.168.93.140
连接到 192.168.93.140。
421 There are too many connections from your internet address.
远程主机关闭连接。