Linux基本操作+服务器配置

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.     调用上一条命令的参数
关机、重启
关机重启
shutdownshutdown --halt 停止计算机不切断电源
shutdown -P 关机、切断电源
shutdown -c 取消关机
shutdowb + 10 表示10分钟后关机
shutdown -h 22:20 表示当天22:20关机
shutdown -h now 此时
shutdown -r 重启
rebootreboot -p 关机、切断电源
reboot --halt 停止计算机不切断电源
reboot 重启
halthalt 关机
halt -p 关机、切断电源
halt --reboot 重启
initinit 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 324 2022 anaconda-ks.cfg

用法:ls [选项]... [文件]...
[root@qq ~]# ls -l initial-setup-ks.cfg
-rw-r--r--. 1 root root 0 324 2022 initial-setup-ks.cfg
- 普通文件(黑色)
d 目录(蓝色)
l 链接文件(浅蓝色)
rw-r--r-- 文件权限
1 节点数
root:用户、拥有人
root:组、拥有组
0:文件大小
324 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 1023 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 1023 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 1023 10:18 xiaogege/
[root@localhost ~]# ls -ld xiaogege/xiaojiejie/
drwxr-xr-x. 2 root root 6 1023 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 1023 10:40 laoliu/laoba/

文件管理命令(touch、cp、mv、rm)

touch:创建文件

作用:第一次touch一个文件,表示创建文件,第二次touch一个文件,表示刷新时间戳

格式:touch 文件名
1.查看当前时间
[root@localhost ~]# date
20221023日 星期日 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 1023 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 1023 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-1268/255.0.0.0第一位为网络位,后三位为主机位网络照抄,主机位归零103.5.5.5/8-103.0.0.0/8
B类128-19116/255.255.0.0前两位为网络位,后两位为主机位网络照抄,主机位归零190.5.6.7/16-190.5.0.0/16
C类192-22424/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.
远程主机关闭连接。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "Linux操作系统实验教程费翔林pdf" 是一本关于Linux操作系统实验的教程。在这本教程中,作者费翔林以PDF形式分享了他的经验和知识,旨在帮助读者更好地理解和学习Linux操作系统。 这本教程的特点包括内容丰富、易于理解和操作清晰。作者以系统化的方式讲解了Linux操作系统的基本概念、命令行操作、文件管理、用户管理、进程管理、网络配置等各个方面。每个实验都配有详细的步骤和解说,使读者能够按照教程顺利完成实验。 在这本教程中,作者还提供了大量的实例和练习,以帮助读者巩固知识和技能,并有利于读者更好地理解Linux的工作原理和应用场景。教程中还包含了一些常见的实验项目,如搭建web服务器、搭建数据库等,这些项目能够让读者将所学知识实际应用到实际项目中去。 总的来说,"Linux操作系统实验教程费翔林pdf"是一本非常实用和全面的教程,适合初学者和对Linux操作系统感兴趣的读者使用。通过阅读和实践本教材,读者能够建立起对Linux操作系统的扎实基础,并能够独立完成一些简单的Linux操作任务。无论是想要在职场中应用Linux技能,还是对计算机操作系统有较深的兴趣,这本教材都是值得推荐的。 ### 回答2: 《Linux操作系统实验教程 费翔林pdf》是一本针对Linux操作系统的实验教程,由费翔林所编写。本书总共包含几十个实验,内容丰富,适合初学者入门或者深入学习Linux操作系统的人士使用。 该教程以实验为主线,在每个实验中,费翔林通过详细的步骤介绍了如何进行Linux操作系统的相关操作,并提供了相关的操作截图和说明。通过这种实践的方式,读者可以更好地理解和掌握Linux操作系统。同时,该教程还介绍了Linux操作系统的基本原理和核心概念,为读者提供了理论指导。 《Linux操作系统实验教程 费翔林pdf》的特点之一是其简洁明了的语言和结构化的内容安排。每个实验都非常详细,让读者轻松掌握。同时,费翔林在教程中提供了大量的实验练习题目,读者可以通过这些练习进一步巩固所学的知识,提高自己的实际操作能力。 另外,该教程针对不同版本的Linux操作系统进行了适配和演示,使读者可以根据自己所使用的版本进行实验,不受限于特定的版本要求。 总的来说,《Linux操作系统实验教程 费翔林pdf》是一本非常实用的教程,适合Linux操作系统的初学者和深入学习者使用。通过这本教程,读者可以系统地学习和掌握Linux操作系统的相关知识和技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值