linux与windows的区别,linux操作系统和应用(完结)

 2023-09-23 阅读 34 评论 0

摘要:目录大纲 此处大纲只做参考,如打不开,就手动移动位置。部分标题没有记录 linux系统 linux连接finallshell 开网卡连接到finallshelllinux安装yum命令和wget命令 linux命令 未分类命令开关机命令文档类[编辑文档等]文件层[文件/文件夹等]时间层查找类打包/压缩用

目录大纲

此处大纲只做参考,如打不开,就手动移动位置。部分标题没有记录

  • linux系统
    • linux连接finallshell
      • 开网卡
      • 连接到finallshell
      • linux安装yum命令和wget命令
    • linux命令
      • 未分类命令
      • 开关机命令
      • 文档类[编辑文档等]
      • 文件层[文件/文件夹等]
      • 时间层
      • 查找类
      • 打包/压缩
      • 用户和组
      • 权限管理
      • 1.安装system-config-users(类似windows的用户和组管理器)
      • 硬盘管理
      • 配置网络
    • Vim编辑器
      • 编辑模式(编辑文本)
      • 插入模式(键盘键入文字)
      • 命令模式(退出/保存等)
    • 编写C语言
      • gcc的下载和使用
      • gcc调用子程序和编译
      • make宏编译
    • 配置与管理Samba服务器
      • Samba应用环境
      • 了解SMB
      • samba工作原理
      • 安装配置samba服务
    • DHCP
      • DHCP概述
      • DHCP工作流程
      • DHCP服务器分配的ip地址
      • DHCP的使用
    • DNS
      • DNS的域和域名
    • Apache服务器配置

linux系统

linux目录

/         根目录
/boot     开机所需内核配置等
/dev      以文件形式存放任何设备与接口
/home     用户家目录
/bin      binary的缩写,存放用户的可运行程序 

linux连接finallshell

开网卡

#------------------无可视化界面时需要手动开启网卡------------------#
cd /etc/sysconfig/network-scripts   #打开文件夹
vi ifcfg-eth0 # 修改ifcfg-eth0文件 #将里面的ONBOOT改为yes即可开启网卡。
ONBOOT=yes
service network restart      # 重启network服务就可以了

连接到finallshell

第一步 查看linux的IP地址: 打开终端,输入命令ifconfig

finallshell中打开连接管理器,新建一个SSH连接,名称随意,能区分开就行,主机这里写linuxip地址,端口号如果不冲突,就不需要更改,一般默认22端口即可,认证这里打自己的用户名密码

如果连接上之后一直提示输入密码,第一种情况是密码输入错误,第二种是ip地址写错了,如果出现配对连接等字样,接受即可连接成功

linux安装yum命令和wget命令

#linux没有wget命令,也没有yum命令,解决办法
mkdir /mnt/dvd  #新建一个目录
mount -t iso9660 /dev/sr0 /mnt/dvd
cd /mnt/dvd/Packages
ls yum* wget*
rpm -ivh <rpm文件>     #下载rpm文件,这一步用rpm命令安装wget和yum



linux命令

未分类命令

clear       #清空屏幕
yum install lrzsz #下载/上传功能
rpm         #安装命令   -qa查看所有软件
rpm -qa |grep <软件名>  #查看所有中 包含字符串<软件名>的软件
dmesg|more  #查看系统
free        #查看系统内存 虚拟内存占用情况#在根目录下的dev中有个光盘文件cdrom
cd /dev/      ls cdrom
#在根目录mnt中新建一个cdrom的文件夹
cd /        cd mnt       mkdir cdrom 
#进入光盘镜像

开关机命令

#关机或重启  参数:-h关机  -r重启 时间: now现在/数字:在几分后关机/重启
shutdown -h <>
shutdown #关机(默认是1分钟)#定时关机
shutdown -h 05:30#取消定时
shutdown -creboot #重启 一般不用
half #立即关机 一般不用

文档类[编辑文挡等]

/pwd                  #查看当前所在目录
man <命令>             #帮助文档 查看**命令
ls                    #列出目录下所有文件夹及文件 
cat  <文件名>          #查看文档
cat /var/log/messages #查看日志文件
touch <文档>           #创建一个文档
vim <文档>             #编辑文档
cat 1.txt 2.txt>3.txt #把1和2的数据串到一起生成3
tail -f /var/log/messages  #查看日志的末尾10行内容vim编辑器:
i:添加/插入/修改内容 
w:将内容写入文件
q:退出文本 
!:强制执行
q!: 强制退出,不保存文档
wq:保存并退出

文件类[文件/文件夹等]

mkdir <文件夹名>        #新建文件夹
rmdir <文件夹名>        #删除文件夹
touch <文件>           #新建一个文件 如果没有这个文件,则创建.还可以修改文件的属性 eg:testfile时间属性
rm <属性> <目录/文件>    #删除文件或目录 属性:-i:提示用户 -f:不提示用户 -R:递归删除目录(删除目录中所有文件)
cp <参数> <源文件> <目标文件>  #复制 复制不可以改名字
mv <参数> <源文件> <目标文件>  #移动 可以用来重命名(同目录下为重命名,不同目录是移动)

文件类型介绍

# linux中一切皆文件,用ls命令后文件颜色的含义:
蓝色:目录    文件
绿色:可执行  文件
红色:压缩    文件
浅蓝色:链接  文件
黄色:设备    文件
灰色:普通    文件

时间层

cal                        #打印日历
clock                      #时钟

查找类

find /root -name *.*  #查找文件
find /root -user root #查看root用户创建的文件
grep                  #查字符串
ps                    #当前运行的进程 参数:-e查看所有进程
kill -9 <ID号>        #关闭进程-------------查看文档类------------
cat          #
more         #
less         #
head         #看文件尾
tail         #看文件头
tail -1 文件 #看文件最后一行1

打包/压缩

tar <属性> <放在哪里> <打包什么>  #压缩z/打包cvftar -czvf /root/home.tar.gz /home
#打包压缩/home文件夹放到/root目录下,文件名是home.tar , 压缩格式是gz压缩格式:gz低压快速 bz2高压耗时

用户和组

用户

#查找用户
cat /etc/passwd|grep <用户名>
cat /etc/#新建用户 adduser/useradd都一样
adduser <用户名>  #删除用户
userdel <用户>#配置密码
passwd <用户名>
#锁定用户/禁用账户
passwd -l <用户名>#查看Linux系统中用户的密码信息
tail /etc/shadow
#系统管理员对用户和用户组管理时相关的文件
cat /etc/group   
#etc/gshadow是/etc/group的加密资讯文件,比如用户组(Group)管理密码就是存放在这个文件;/etc/gshadow和/etc/group是互补的两个文件
cat /etc/gshadow #新增一个用户,GID为1010,主目录/home/user3,用户登陆shell是/bin/bash,密码123456 账号不禁用  
adduser -u 1010 -g 1010 -d /home/user3 -s /bin/bash -p 123456 -f -1 <用户> 
-g 1010   #GID号
-d <路径>  #用户的主目录
-s <路径>  #用户的登陆shell,默认是/bin/bash
-p <密码>  #用户的密码
-f <时间>  #时间: 0账户禁用  -1:永久 其他正数:xx天后禁用chage -l <用户名>              #查看密码更改、时间等信息
chage -m 6 -M 60 -W 5 <用户名>  #-m改密最小天数 -M改密最大天数 -W密码过期前的警告天数usermod <选项> <用户名>     #
usermod -G root user      #把user用户加入到组root中
id <用户名>                #查看用户id信息 
userdel <用户名>

#新建一个组,设置GID号
groupadd -g <GID号> <组名>
#删除一个组
groupdel <组名>
#重名名一个组
groupmod -n <原组名> <新组名>
#查看组
tail -1 /etc/group#组管理用户     属性: -a加入组 -d从组中删除 -r取消组密码 -A管理员
gpasswd <属性> <用户> <组> 

权限管理

ll                       #查看权限
chmod <属性> <文件名>      #修改文件权限
chmod a=rwx <文件名>      #给所有用户添加读取 写入 执行权限   [字母]
chmod abc <文件名>        #其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
数字属性:r=4,w=2,x=1     #若要rwx属性则4+2+1=7;若要rw-属性则4+2=6;若要r-x属性则4+1=7。
chmod 777 a.txt        chmod a=rwx a.txt   #这两个命令效果相同
#使用ll查看文件权限后,开头字母含义#1 哪种文件/文件属性c:字符文件    b:块设备文件   d:目录文件#2 3 4    Userrwx:读取/写入/修改(执行)  如果出现 - 则代表没有这个权限#5 6 7    Grouprwx:读取/写入/修改(执行)#8 9 10   Otherrwx:读取/写入/修改(执行)

安装system-config-users(类似windows的用户和组管理器)

linux与windows的区别?P.S.可视化安装才有用,无可视化会报错👇

system-config-users 需要一个当前正运行的 X 服务器。

mkdir /iso  #新建一个挂在目录
ls /        #查看/根目录的iso有没有新建好
mount /dev/cdrom /iso  #拉取/dev/cdrom的镜像到/iso
vim /etc/yum.repos.d/dvd.repo #配置文件
yum info system-config-users   
\yum clean all          #清除缓存信息
yum install system-config-users #安装system-config-users
system-config-users配置代码为:#如果上面的路径不在根目录的iso中,则需要更改下面的路径
[dvd]
name=dvd
baseurl=file:///iso#如果路径不是这里则需要更改 
#更改格式为file:///<路径1>/<路径2>/<路径3>  
#实际对应的路径为/<路径1>/<路径2>/<路径3>  前面的file://是格式
gpgcheck=0 
enable=1-------------------------------------
卸载system-config-users:
yum remove system-config-users

硬盘管理

新建分区(加硬盘)–>分区–>格式化–>挂载

#在/dev目录下有   sda   sda1    sda2   sdb
在VM中添加一块20G的硬盘-->格式SCSI-->创建新的分区-->分配10G
-->下一步-->完成-->重启/打开计算机#分盘  sda sdb sdc
fdisk /dev/sdb
m  #m查看帮助信息
----------------添加主分区-------------------
n  #添加一个分区
p  #添加主分区 默认就是选择主分区1234 逻辑分区是5
1  #选择序号为1
First sector#这里直接回车
+10G #分配10G空间
---------------添加扩展分区-------------------
#添加一个扩展分区
n  #添加一个分区
e  #添加扩展分区
2  #选择序号2 
First sector#这里直接回车    
+5G #Last sector直接输入+5G   意思是分配5G空间
----------------添加逻辑分区-------------------
#添加一个逻辑分区
n  #添加一个分区
l  #添加逻辑分区
#逻辑分区默认是从5开始自增,这里不需要选择序号 
First sector#这里直接回车    
+5G #Last sector直接输入+5G   意思是分配5G空间
#到这里已经分配完成  写入后退出即可
w/q  #w写入并退出 #q是不保存退出 
----------------配置完成-------------------
#格式化硬盘  属性:-c检查硬盘坏块   -V显示详细信息  ext4   linux分区格式
mkfs -t ext4 -V -c /dev/sdb1
#在根目录下新建文件夹
mkdir /disk2
#挂载镜像
mount /dev/sdb1 /disk2
#测试
cd /disk2
touch a.txt
ls
vim /etc/fstab
#永久挂载 两个目录分别是 挂载什么    到哪里
/dev/sdb1  /disk2  ext4  defaults  0 0

fdisk 命令

a 切换可引导标志
b 编辑bsd磁盘标签
c 切换dos兼容性标志
d 删除分区
l 列出已知的分区类型
m 打印此菜单
n 添加一个新分区
o 创建一个新的空DOS分区表
p 打印分区表
q 在不保存更改的情况下退出
s 创建一个新的空太阳磁盘标签
t 更改分区的系统id
u 更改显示/输入单位
v 验证分区表
w 将表写入磁盘并退出
x 额外功能(仅限专家)
df -h #查看所有硬盘使用情况

配置网络

通过网卡配置文件配置网络

Red Hat Linux有3种主机名:

  • 静态的(static):“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。
  • 瞬态的(transient):“瞬态”主机名是在系统运行时临时分配的主机名,由内核管理。例如,通过DHCP或DNS服务器分配的localhost就是这种形式的主机名。
  • 灵活的(pretty):“灵活”主机名是UTF8格式的自由主机名,以展示给终端用户。

Red Hat Linux 7中的主机名配置文件为/etc/hostname,可以在配置文件中直接更改主机名。

cd /etc/sysconfig/network-scripts #存放着网卡配置文件
vim ifcfg-ens33                   #在上一步的基础上配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改配置名为ens33的网卡
配置信息有 #不同设备的名字可能会不同
TYPE=Ethernet         #设备类型
BOOTPROTO=static      #地址分配模式
NAME=ens33            #网卡名称
ONBOOT=yes            #是否启动
IPADDR=192.168.10.1   #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.10.1  #网关地址
DNS1=192.168.10.1     #DNS地址
-------------更改完成后必须重启服务-------------
systemctl restart network
ping 192.168.25.1

nmtui修改主机名

没有nmtui命令时,下面有nmtui的安装的方式,如果是Red Hat系统,则需要激活才可以使用,如果不想激活,也可以换成CentOs系统安装nmtui
Red Hat7中 安装带GUI的服务器时有nmtui命令和下面会用到的nmcli命令

Linux系统界面,nmcli可以修改/etc/hostname中的静态主机名。更改主机名后需要重启服务

nmtui                               #直接nmtui输入命令 修改主机名
systemctl restart systemd-hostnamed #重启hostnamed服务,更改主机名后需要重启服务
/etc/sysconfig/network-scripts      #存放网卡的配置文件
hostnamectl status                  #查看主机名
hostnamectl set-hostname <主机名>    #设置主机名
hostnamectl set-hostname my.smile.com #设置新的主机名为<my.smile.com>nmcli general hostname              #查看主机名
nmcli general hostname <主机名>      #设置新主机名为<主机名>
nmcli general hostname RHEL7-1      #设置新主机名为RHEL7-1

使用nmcli命令配置网络

❗️连接名中没有空格时可以不需要引号,如果有空格则需要引号连接
例如:👇这两个命令等效

nmcli connection show “ens33”
nmcli connection show ens33

nmcli device status             #显示设备状态。
nmcli device show ens33         #显示网络接口属性/修改是否生效
nmcli connection show           #显示所有连接。
nmcli connection show --active  #显示所有活动的连接状态。
nmcli connection show "ens33"   #显示ens33的网络连接配置。
nmcli connection add help       #查看帮助。
ls /etc/sysconfig/network-scripts/ifcfg-*       #查看目录,看看有没有刚刚新建的连接
cat /etc/sysconfig/network-scripts/ifcfg-<连接名>#查看配置信息是否成功nmcli device disconnect ens33   #禁用ens33网卡,物理网卡。
nmcli device connect ens33      #启用ens33网卡
nmcli connection reload         #重新加载配置。
nmcli connection down <连接名>   #禁用配置,注意一个网卡可以有多个配置。
nmcli connection up <连接名>     #启用的配置。
nmcli connection delete <连接名> #删除一个连接#设置连接自动启动
nmcli connection modify <连接名> connection.autoconnect yes      
#修改DNS地址为192.168.10.1
nmcli connection modify <连接名> ipv4.dns 192.168.10.1           
#添加备用DNS  114.114.114.114
nmcli connection modify <连接名> +ipv4.dns 114.114.114.114
#删除DNS
nmcli connection modify <连接名> -ipv4.dns 114.114.114.114
#修改IP和默认网关
nmcli connection modify <连接名> ipv4.addresses 192.168.10.200/24 gw4 192.168.10.254 
#添加多个ip
nmcli connection modify <连接名> +ipv4.addresses 192.168.10.250/24DNS地址:
114.114.114.114国内移动、电信和联通通用的DNS,解析成功率
相对来说更高国内用户使用的比较多,速度相对快、稳定,是国内
用户上网常用的DNS
8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来
说,更适合国外以及访问国外网站的用户使用

新建连接案例及对应参数

命令:
nmcli connection add con-name test2 ipv4.method manual \
ifname ens33 autoconnect no type Ethernet \
ipv4.addresses 192.168.10.100/24 \
gw4 192.168.10.1
#新添加连接,名字是test2  获取ip地址的方式是静态
#网卡是ens33,不自动启动,类型是Ethernet
#指定ipv4地址为192.168.10.100,子网掩码24 即255.255.255.0
#指定网关为192.168.10.1
#上面的命令可以直接使用,反斜杠\是分行的意思
nmcli connection add con-name default type Ethernet ifname ens33
#新添加连接,名字是default  网卡是ens33,类型是Ethernet
参数:
con-name          #指定连接名字,没有特殊要求。
ipv4.methmod      #指定获取IP地址的方式。 静态:manual 
ifname            #指定网卡设备名,也就是次配置所生效的网卡。
autoconnect       #指定是否自动启动。
ipv4.addresses    #指定IPv4地址。 192.168.10.100/24 ip地址/掩码
gw4               #指定网关。

掩码对应

192.168.25.1/24  #ip地址后面的/24的是子网掩码
1111 1111.1111 1111 .1111 1111 /0  #24掩码
192      .   168    . 25.1   /24

安装nmcli

在Red Hat6中,选择带有GUI的服务器后没有nmtui命令,此时可以选择激活,也可以选择安装Red Hat7

#挂载镜像dev/cdrom到iso中 
#前者不在是光驱没连接上,后者不在是没有/iso目录
mount /dev/cdrom /iso
#nmtui要求安装了NetworkManager-tui包
yum install NetworkManager-tui
yum install nmtui
#nmcli要求安装了NetworkManager包
yum install NetworkManager
yum install nmcli

Vim编辑器

编辑模式(编辑文本)

Vim编辑器说明

_             #首行
~             #空行
最后1行        #状态行
状态行显示的有:行列号,正在编辑的文件名及状态,字符数

编辑模式-光标移动

↑↓←→光标移动
Ctrl + f屏幕向下移动一页,相当于“Page Down”键(常用
Ctrl + b屏幕向上移动一页,相当于“Page Up”键(常用
Ctrl + d屏幕向下移动半页
Ctrl + u屏幕向上移动半页
+光标移动到非空格符的下一列
-光标移动到非空格符的上一列
n 空格n表示数字,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。例如输入20+空格 则光标会向后面移动20个字符距离
Home这是数字0:移动到这一行的最前面字符处(常用)或使用0
End移动到这一行的最后面字符处(常用) 或使用$
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个文件的最后一行(常用
nGn为数字。移动到这个文件的第n行。例如输入20G则会移动到这个文件的第20行(可配合:set nu)
gg移动到这个文件的第一行,相当于1G(常用
n 回车n为数字。光标向下移动n行常用

编辑模式-查找和替换

使用/word配合n及N是非常有帮助的!可以让你重复地找到一些查找的关键词

/word在下文寻找word的字符串(常用)
?word在上文寻找word的字符串
n这个n是英文按键。代表重复前一个查找的动作。举例来说,如果刚刚我们执行/myweb去向下查找myweb这个字符串,则按下n后,会向下继续查找下一个名称为myweb的字符串。如果是执行?myweb,那么按下n则会向上继续查找名称为myweb的字符串
N这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。例如执行/myweb后,按下N则表示向上查找myweb
:n1,n2 s/word1/word2/gn1与n2为数字。在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入“:100,200s/myweb/MYWEB/g”(常用)
:1,$ s/word1/word2/g从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用)
:1,$ s/word1/word2/gc从第一行到最后一行寻找word1字符串,并将该字符串取代为word2!且在取代前显示提示字符给用户确认(confirm)是否需要取代(常用)

编辑模式-删除、复制与粘贴

x, X在一行字当中,x为向后删除一个字符(相当于“Del”键),X为向前删除一个字符(相当于Backspace,退格键)(常用)
nxn为数字,连续向后删除n个字符。举例来说,要连续删除10个字符,输入10x
dd删除光标所在的那一整列(常用)
nddn为数字。删除光标所在的向下n行,例如,20dd是删除20行(常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除光标所在处,到该行的最后一个字符
d0那个是数字0,删除光标所在行的前一字符到该行的首个字符之间的所有字符
yy复制光标所在的那一行(常用)
nyyn为数字。复制光标所在的向下n列,例如20yy是复制20列(常用)
y1G复制光标所在列到第一列的所有数据
yG复制光标所在列到最后一列的所有数据
Y0复制光标所在的那个字符到该行行首的所有数据

编辑模式-其他

y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行! 举例来说,目前光标在第20行,且已经复制了10行数据,则按下p后,那10行数据会粘贴在原来的20行之后,即由21行开始粘贴。但如果是按下P呢?将会在光标之前粘贴,即原本的第20行会变成第30行(常用)
J将光标所在列与下一列的数据结合成同一列
c重复删除多个数据,例如向下删除10行,输入10cj
u复原前一个动作(常用)
Ctrl+r重做上一个动作(常用)
.不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以(常用)

插入模式(键盘键入文字)

i    插入命令 在当前位置插入
l    首行插入 在第一行插入文本
a    附加命令 在光标当前位置后追加文本
A    行尾插入 在本行的行尾插入文本
o    打开命令 光标之👇新开一行,并编辑这一行
O    打开命令 光标之👆新开一行,并编辑这一行
c    修改命令
r    取代命令
s    插入模式
Esc  退出编辑模式或回到编辑模式中

命令模式(退出/保存等)

LINUX的特点?编辑模式中,使用: 即可进入命令模式,如果在命令模式输入时想退回,按退格键即可

命令含义: w写入 q退出 !强制

:w写入/保存
:w!文件只读时,强制写入。最终效果与对该文件拥有的权限有关
:q退出vim
:q!强制退出(不保存)
:wq保存退出
ZZ这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开
:w <新文件名>将编辑的数据储存成另一个文件(类似另存为新文件)
:r <新文件名>在编辑的数据中,读入另一个文件的数据,即将新文件内容加到光标所在行的后面
:n1,n2 w <新文件名>将n1到n2的内容储存成新文件
:! command暂时退出vim到命令列模式下执行command的显示结果。例如,“:! ls /home”即可在vim当中察看/home底下以ls输出的文件信息
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与:set nu相反,为取消行号
mkdir /tmp/mytest   #创建文件夹
cd /tmp/mytest      #进入到文件夹cp /etc/man_db.conf /tmp/mytest  #复制文件/etc/man_db.conf到/tmp/mytest
vim man_db.conf                 #编辑文档58gg     #跳转到58行 
15 |     #向后移动15个字gg     #移动到第一行
/gzip  #向下查找gzip  :50,100 s/man/MAN/gc   
#5.50~100行的man字符串改为大写的MAN字符串 并且逐个询问是否需要更改 如何操作,如果一致按Y 结果在最后一行改变了多少man说明 u  #撤销65gg    #跳到65行
9yy     #复制当前行开始的下9行内容
shift   #更换大写键盘
G       #跳到最后一行
p       #在本行的下一行粘贴刚刚复制的内容23G   #跳到23行
6dd   #向后删除6行:w man.test.config   #另存为man.test.config27gg 8x   #跳到27行 向后删除8个字符
1gg        #跳到第一行
O          #在上面新建一行
I am a student...   
esc       #直接按esc,退出编辑模式
:wq       #存盘并退出

编写C语言

gcc的下载和使用

在linux下没有c语言的gcc命令,需要手动安装

#挂载镜像,安装gcc
yum install gcc
gcc -v      #版本号
vim 1.c     #编写1.c文件
gcc 1.c     #编译1.c文件
./a.out     #执行a.out
gcc <文件名> #编译
./<文件名>   #执行可执行文件gcc -c 1.c 
gcc -o 1 1.o
./1

linux使用gcc编译文件后跟windows系统不一样

linux的.out文件是可执行文件

windows的。exe文件是可执行文件

gcc调用子程序和编译

调用子程序和编译

vim thanks.c
vim thanks_2.c                  #编写程序
gcc  -c  thanks.c  thanks_2.c   #使用gcc编译
ll  thanks*                     #查看结果
gcc -o thanks thanks.o thanks_2.o
ll thanks*                      #查看结果
./thanks                        #执行thanks

docker 文件系统?thanks.c

#include <stdio.h>
int main(void)
{printf("Hello World\n");thanks_2();  //调用thanks_2
}  

thanks_2.c

#include <stdio.h>
void thanks_2(void)
{printf("Thank you!\n");
}

调用外部函数库 加入链接的函数库

vim sin.c

#include <stdio.h>
int main(void)
{float value;value = sin ( 3.14 / 2 );printf("%f\n",value);
}

gcc sin.c 执行后报错

怎么没有编译成功?它说“undefined reference to sin”,意思是“没有sin的相关定义参考值”,为什么会这样呢?这是因为C语言里面的sin函数是写在libm.so这个函数库中,而我们并没有在源码里面将这个函数库功能加进去。可以这样更正:编译时加入额外函数库链接的方式。

gcc sin.c -lm -I/usr/include
#-l: 加入某个函数库(library)的意思
#m:是libm.so函数库,其中,lib与扩展名(.a或.so)不需要写。

所以-lm表示使用libm.so(或libm.a)这个函数库的意思。那-L后面接的路径呢?这表示程序需要的函数库libm.so请到/lib或/usr/lib里面寻找。

LINUX教程?注意:由于Linux默认将函数库放置在/lib与/usr/lib当中,所以即便没有写-L/lib与-L/usr/lib也没有关系。不过,万一哪天你使用的函数库并非放置在这两个目录下,那么-L/path就很重要了,否则会找不到函数库的。

gcc编译简易用法

#仅将原始码编译成为目标文件,并不制作链接等功能。
gcc  -c  hello.c
#上述程序会自动生成hello.o这个文件,但是并不会生成 binary 执行文件。#在编译的时候,依据作业环境给予优化执行速度。
gcc  -O  hello.c  -c
上述程序会自动生成hello.o这个文件,并且进行优化。#在进行binary file制作时,将链接的函数库与相关的路径填入。
gcc  sin.c  -lm  -L/usr/lib  -I/usr/include
#在最终链接成binary file的时候,这个命令较常执行。
#-lm指的是libm.so或libm.a这个函数库文件。
#-L后面接的路径是刚刚上面那个函数库的搜索目录。
#-I后面接的是源码内的include文件的所在目录。#将编译的结果生成某个特定文件。
gcc  -o  hello  hello.c
#程序中,-o 后面接的是要输出的 binary file文件名#在编译的时候,输出较多的信息说明。
gcc  -o  hello  hello.c  -Wall
#加入-Wall之后,程序的编译会变得较为严谨一点,所以警告信息也会显示出来。
#我们通常称-Wall或者-O这些非必要的参数为标志(FLAGS)。因为我们使用的是C程序语言,所以有时候也会简称这些标志为CFLAGS。这些变量偶尔会被使用,尤其会在后面介绍的make相关用法中被使用。

make宏编译

先来想像一个案例,假设我的执行文件里面包含了4个源码文件,分别是main.c、haha.c、sin_value.c和cos_value.c这4个文件,这4个文件的功能如下所示。

  • main.c:主要的目的是让用户输入角度数据与调用其他3个子程序。

  • haha.c:输出一堆信息。

  • sin_value.c:计算用户输入的角度(360)正弦数值。

  • cos_value.c:计算用户输入的角度(360)余弦数值。

linux系统现在还用吗。main.c

#include <stdio.h>
#define pi 3.14159
char name[15];
float angle;
int main(void)
{	printf ("\n\nPlease input your name: ");scanf  ("%s", &name );printf ("\nPlease enter the degree angle (ex> 90): " );scanf  ("%f", &angle );haha(name);sin_value(angle);cos_value(angle);
}

haha.c

#include <stdio.h>
int haha(char name[15])
{	printf ("\n\nHi, Dear %s, nice to meet you.", name);
}

sin_value.c

#include <stdio.h>
#define pi 3.14159
float angle;
void sin_value(void)
{float value;value = sin ( angle / 180. * pi );printf ("\nThe Sin is: %5.2f\n",value);
}

cos_value.c

#include <stdio.h>
#define pi 3.14159
float angle;
void cos_value(void)
{float value;value = cos ( angle / 180. * pi );printf ("The Cos is: %5.2f\n",value);
}

1.开始编译

gcc  -c  main.c
gcc  -c  haha.c
gcc  -c  sin_value.c
gcc  -c  cos_value.c

2.再链接形成可执行文件main,并加入libm的数学函数,以生成main可执行文件。

gcc  -o  main  main.o  haha.o  sin_value.o  cos_value.o \
-lm  -L/usr/lib  -L/lib

CentOS系统、3.执行

./main

输入你的名字(Bobby)

然后再输入一个以360度角为主的角度(30)

4.输出结果

Hi, Dear Bobby, nice to meet you.
The Sin is:  0.50
The Cos is:  0.87

make的编写

vim makefile
main: main.o haha.o sin_value.o cos_value.ogcc -o main main.o haha.o sin_value.o cos_value.o -lm
#特别注意:第二行的gcc之前是按“Tab”键产生的空格,不是真正空格,否则出错。

make的准则

目标(target): 目标文件1 目标文件2
<tab>   gcc  -o  欲创建的可执行文件 目标文件1 目标文件2

LINUX和WINDOWS的区别、目标(target)就是我们想要创建的信息,而目标文件就是具有相关性的 object files ,那创建可执行文件的语法就是以按“Tab”键开头的那一行,要特别留意,命令列必须要以按“Tab”键作为开头才行。语法规则如下。

  • makefile当中的 # 代表注解。

  • 需要在命令行(例如gcc这个编译器命令)的第一个字节按“Tab”键。

  • 目标(target)与相关文件(就是目标文件)之间需以“:”隔开。

make的执行

rm -f main *.o  #删除之前的目标文件
make            #执行make文件,开始编译c语言
./main          #重新执行main

make扩展

#(1)先编辑 makefile 来建立新的规则,此规则的目标名称为 clean。 
vim  makefile
main: main.o haha.o sin_value.o cos_value.ogcc -o main main.o haha.o sin_value.o cos_value.o -lm
clean:rm -f main main.o haha.o sin_value.o cos_value.omake  clean  
rm -rf main main.o haha.o sin_value.o cos_value.o
#如此一来,我们的makefile里面就具有至少两个目标,分别是main与clean,如果我们想要创建main的话,输入“make main”;如果想要清除信息,输入“make clean”即可。而如果想要先清除目标文件再编译main这个程序,就可以这样输入:“make  clean  main”,如下所示:make  clean  main    #编译clean和main#1.此时makefile中重复数据有点多,通过shell script的变量简化一下makefile
vim  makefile  LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
main: ${OBJS}gcc -o main ${OBJS} ${LIBS}   #开头为tab
clean:rm -f main ${OBJS}          #开头为tab#2.在shell中使用时也可以直接定义这个变量,这个操作在 make上进行编译时,会取用 CFLAGS 的变量内容
CFLAGS="-Wall" make clean main#也可以这样:
vim  makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main: ${OBJS}gcc -o main ${OBJS} ${LIBS}
clean:rm -f main ${OBJS}

LINUX系统,可以利用命令行进行环境变量的输入,也可以在文件内直接指定环境变量。但万一这个 CFLAGS的内容在命令行与makefile里面并不相同时,以哪个方式的输入为主呢?环境变量使用的规则如下。

  • make命令行后面加上的环境变量优先。

  • makefile里面指定的环境变量第二。

  • shell原本具有的环境变量第三。

此外,还有一些特殊的变量需要了解。$@代表目前的目标(target)。

所以也可以将makefile改成:

vim  makefile
LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main: ${OBJS}gcc -o $@ ${OBJS} ${LIBS}   #  <==那个 $@ 就是 main 
clean:rm -f main ${OBJS}

配置与管理Samba服务器

部分ip配置与实际不符,这里只做笔记,没有太详细
ip地址配置仅供参考

Samba应用环境

  • 文件和打印机共享
  • 身份验证和权限设置
  • 名称解析
  • 浏览服务

**最终目的:可以在windows上使用linux系统 **

samba 服务器:是能够架设linux windows操作系统桥梁

了解SMB

​ SMB(Server Message Block)通信协议可以看作是局域网上共享文件和打印机的一种协议。它是Microsoft和Intel在1987年制定的协议,主要是作为Microsoft网络的通信协议,而Samba则是将SMB协议搬到UNIX系统上来使用。通过“NetBIOS over TCP/IP”,使用Samba不但能与局域网络主机共享资源,也能与全世界的计算机共享资源。因为互联网上千千万万的主机所使用的通信协议就是TCP/IP。SMB是在会话层和表示层以及小部分的应用层的协议,SMB使用了NetBIOS的应用程序接口API。

​ 另外,它是一个开放性的协议,允许协议扩展,这使得它变得庞大而复杂,大约有65个最上层的作业,而每个作业都超过120个函数。

samba工作原理

Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP的137、138及TCP的139端口,后期SMB经过开发,可以直接运行于TCP/IP上,没有额外的NBT层,使用TCP的445端口。

工作流程:

1.协议协商 2.建立连接 3.访问共享资源 4.断开连接

相关进程

nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。

smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。

安装samba服务

配置前

  • 在VM中设置VM1,仅主机模式
  • 取消“使用本地DHCP服务将IP地址分配给虚拟机”
  • 开启linux和windows并设置网络设置到一块儿,可互ping

linux:192.168.1.1 子网掩码24【255.255.255.0】

win10:ip:192.168.1.2 子网掩码24 网关192.168.1.1 首选DNS192.168.1.1

安装samba服务器

rpm -qa |grep samba     #检查是否安装
mount /dev/cdrom /iso   #挂载镜像
yum info samba          #查看关于samba软件包的信息
yum clean all           #清空缓存
yum install samba -y    #下载samba

启动与停止samba服务

systemctl start smb   #启动samba
systemctl enable smb  #设置开机启动
systemctl restart smb #重新启动
systemctl stop smb    #停止服务

配置Samba服务器

流程:

(1)编辑主配置文件smb.conf,指定需要共享的目录,并为共享目录设置共享权限。

(2)在smb.conf文件中指定日志文件名称和存放路径。

(3)设置共享目录的本地系统权限。

(4)重新加载配置文件或重新启动SMB服务,使配置生效。

(5)关闭防火墙,同时设置SELinux为允许。

配置

-----1.安装samba-----
#挂载镜像后再安装
yum install samba -y   #安装samba
rpm -qa|grep samba     #检查是否安装成功-----2.设置ip地址,互ping通,注意关闭win10的防火墙-----
设置ip地址之前,把linux和win10连接到VMnet1仅主机模式下 
取消“使用本地DHCP服务将IP地址分配给虚拟机”
linux
ip地址:192.168.13.1 
子网掩码:255.255.255.0
网关:192.168.13.1
win10
ip地址:192.168.13.2 
子网掩码:255.255.255.0
网关:192.168.13.1ping 192.168.13.1
ping 192.168.13.2-----3.开启samba,设置开机启动,重启samba-----
systemctl start smb     #开启samba服务
systemctl enable smb    #设置samba为开机启动
systemctl restart smb   #重新启动samba服务-----4.添加共享文件夹的目录,添加用户-----
mkdir /companydata/sales -p   #新建目录
touch /companydata/sales/test_share.tar  #新建一个文件,这里是为了方便查看win10是否连通了linux
groupadd sales               #新建一个组sales
useradd -g sales sale1       #新建一个用户,用户加入到sales组中
passwd sale1                 #配置用户sale1的密码
<设置密码> 
smbpasswd -a sale1           #增加相应的samba帐号
<设置密码>
-----5.修改配置文件-----
vim /etc/samba/smb.conf      #编辑配置文件
配置文件的最后一行下面新增语句:#前面的tab为tab键 不是实际输入的字
[sales]
<tab> comment==sales    
<tab> path=/companydata/sales
<tab> writable=yes
<tab> browseable=yes
<tab> valid users=@sales
-----6.修改共享文件夹的权限、关闭linux安全增强、防火墙放行-----
chmod 777 /companydata/sales -R         #修改文件夹的权限
chown sale1:sales /companydata/sales -R #更改目录文件所有者,如果有第二个用户,用同样的方式改就可以getenforce                              #查看当前安全增强的模式
setenforce 0                            #更改当前安全增强的模式
getenforce                              #查看当前安全增强的模式firewall-cmd --permanent --add-service=samba #防火墙放行samba
firewall-cmd --reload                   #重启防火墙
firewall-cmd --list-all                 #查看防火墙
-----7.测试-----
测试前必须重启服务
systctl restart smb #配置完成,重启samba服务
在win10中,使用快捷键win+r打开运行。输入下面的命令连接linux:
\\192.168.13.1
账户和密码是刚刚设置的账户和密码
打开后就可以看见sales目录下有个文件test_share.tar

注意:

:security=user 表示将来网络访问时需要输入用户名密码验证。
不要security=user ,换成 map to guest=bad user
可以匿名访问。
网络策略会限制我们的访问
安全增强型linux关掉
对防火墙的操作一定要重新载入防火墙。
如果重启服务失败,检查smb.conf
打开共享的时候,输入的用户名和密码是刚刚设置的账户名和密码

DHCP

DHCP概述

​ DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个简化主机IP地址分配管理的TCP/IP标准协议,用户可以利用DHCP服务器管理动态的IP地址分配及其他相关的环境配置工作,如:DNS服务器、WINS服务器、Gateway(网关)的设置。

​ 在DHCP机制中可以分为服务器和客户端两个部分,服务器使用固定的IP地址,在局域网中扮演着给客户端提供动态IP地址、DNS配置和网管配置的角色。客户端与IP地址相关的配置,都在启动时由服务器自动分配。

DHCP作用:DHCP服务器能够在网络里动态的分配IP地址。

DHCP工作流程

  1. DHCP客户机发送IP租约请求

  2. DHCP服务器提供IP地址

  3. DHCP客户机进行IP租用选择

  4. DHCP服务器IP租用认可

DHCP服务器分配的ip地址

动态ip:

客户端从DHCP服务器那里取得的IP地址一般都不是固定的,而是每次都可能不一样。

静态IP:

客户端从DHCP服务器那里取得的IP地址也并不总是动态的。

------基本命令------
ifconfig   #查看网卡
ping -c 1 192.168.1.20
arp -n      #查询缓存在远程计算机中的MAC地址

DHCP的使用

准备:

linux做服务器

DHCP的IP地址、子网掩码、DNS服务器等TCP/IP参数必须手工指定,否则将不能为客户端分配IP地址

DHCP服务器必须要拥有一组有效的IP地址,以便自动分配给客户端。

所有Linux的虚拟机网络连接方式都选择:自定义,VMnet1(仅主机模式)

安装DHCP

rpm -qa|grep dhcp  #查找dhcp是否下载安装
mount /dev/cdrom /iso   #挂载镜像
vim  /etc/yum.repos.d/dvd.repo #编辑用于安装的yum源文件
yum info dhcp           #查看dhcp软件包的信息
yum clean all           #清空缓存
yum install dhcp -y     #下载dhcp

❗️ 挂载镜像请参考前文 ,核心命令只有最后一句话yum install dhcp

配置DHCP

点击此处 快速跳转到配置DHCP的案例,下面的参数只做了解即可。

配置文件dhcpd.conf说明

  • lparameters(参数)
  • ldeclarations(声明)
  • loption(选项)
#全局配置
参数或选项;                #全局生效
#局部配置
声明 {参数或选项;          #局部生效}

常见参数

参数作用
ddns-update-style [类型]定义DNS服务动态更新的类型,类型包括none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式)
[allow | ignore] client-updates允许/忽略客户端更新DNS记录
default-lease-time 600默认超时时间,单位是秒
max-lease-time 7200最大超时时间,单位是秒
option domain-name-servers 192.168.10.1定义DNS服务器地址
option domain-name “domain.org”定义DNS域名
range 192.168.10.10 192.168.10.100定义用于分配的IP地址池(地址池,即地址的范围)
option subnet-mask 255.255.255.0定义客户端的子网掩码
option routers 192.168.10.254定义客户端的网关地址
broadcase-address 192.168.10.255定义客户端的广播地址
ntp-server 192.168.10.1定义客户端的网络时间服务器(NTP)
nis-servers 192.168.10.1定义客户端的NIS域服务器的地址
Hardware 00:0c:29:03:34:02指定网卡接口的类型与MAC地址
server-name mydhcp.smile.com向DHCP客户端通知DHCP服务器的主机名
fixed-address 192.168.10.105将某个固定的IP地址分配给指定主机
time-offset [偏移误差]指定客户端与格林尼治时间的偏移差

常见声明

subnet 192.168.10.0 netmask 255.255.255.0{}
#格式:  subnet网络号netmask子网掩码 {.………}。
#作用:  定义作用域,指定子网。range dynamic-bootp   192.168.10.100   192.168.10.200
格式:  range dynamic-bootp  起始IP地址  结束IP地址。
作用:  指定动态IP地址范围。

常见选项

option routers  192.168.10.254
#格式:option routers  IP地址。
#作用:为客户端指定默认网关。option subnet-mask    255.255.255.0
#格式:option subnet-mask  子网掩码。
#作用:设置客户端的子网掩码。option  domain-name-servers    192.168.10.1
#格式:option domain-name-servers IP地址。
#作用:为客户端指定DNS服务器地址。

IP地址绑定

在DHCP中的IP地址绑定用于给客户端分配固定IP地址。
host  computer1
#host    主机名 {......}。
#作用:用于定义保留地址。通常搭配subnet声明使用。hardware  ethernet  3a:b5:cd:32:65:12
#hardware类型硬件地址。
#作用:定义网络接口类型和硬件地址。常用类型为以太网(ethernet),地址为MAC地址。例如:
#只能应用于host声明中fixed-address   192.168.10.105
#fixed-address   IP地址。
#作用:定义DHCP客户端指定的IP地址。
#只能应用于host声明中

租约数据库文件

cat /var/lib/dhcpd/dhcpd.leases

应用案例

1.案例需求(以实际为准)

技术部有60台计算机,各计算机的IP地址要求如下。

1.DHCP服务器和DNS服务器的地址都是192.168.10.1/24,有效IP地址段为192.168.10.1~192.168.10.254,子网掩码是255.255.255.0,网关为192.168.10.254。

2.192.168.10.1~192.168.10.30网段地址是服务器的固定地址。

3.客户端可以使用的地址段为192.168.10.31~192.168.10.200,但192.168.10.105、192.168.10.107为保留地址,其中192.168.10.105保留给Client2。

4.客户端Client1模拟所有的其他客户端,采用自动获取方式配置IP等地址信息。

服务器端配置文件

安装完成dhcp以后,使用vim /etc/dhcp/dhcpd.conf编辑配置文件

配置文件的内容如下(具体以实际应用为主,🔽这里只是案例)

ddns-update-style none;
log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 {range 192.168.10.31 192.168.10.104;range 192.168.10.106 192.168.10.106;range 192.168.10.108 192.168.10.200;option domain-name-servers 192.168.10.1;option domain-name "myDHCP.smile.com";option routers 192.168.10.254;option broadcast-address 192.168.10.255;default-lease-time 600;max-lease-time 7200;
}

配置DHCP服务器完成后重启

systemctl restart dhcpd   #重启dhcpd服务,重启失败就是dhcp的配置文件错误了
systemctl enable dhcpd    #设置开机自动启动dhcpd #dhcp如果无法启动,就使用dhcpd进行排错
#-----dhcp启动失败原因如下------
#1.配置文件有问题。内容不符合语法结构,例如少个分号。声明的子网和子网掩码不符合。
#2.主机IP地址和声明的子网不在同一网段。
#3.主机没有配置IP地址。
#4.配置文件路径出问题,比如在RHEL6以下的版本中,配置文件保存在了/etc/dhcpd. conf,但是在rhel6及以上版本中,却保存在了/etc/dhcp/dhcpd.conf。

关闭虚拟机的“编辑”中的“虚拟网络编辑器”中的“使用本地DHCP服务将IP地址分配给虚拟机”

连接dhcp

打开linux的network对话框→→点右下角设置→→选择IPV4→→将Addresses选项配置为Automatic(DHCP)→→重启网卡

linux客户端连接linux服务器:打开另一个linux 设置ip地址为自动获取

windows客户端连接linux服务器

#Windows客户端配置
#Windows客户端在TCP/IP属性中设置自动获取就可以。
#在Windows命令提示符下,利用ipconfig可以释放IP地址后,重新获取IP地址。
ipconfig /release        #释放IP地址
ipconfig /renew          #重新申请IP地址cat /var/lib/dhcpd/dhcpd.leases  #在服务器端查看租约数据库文件

总结:下载dhcp服务–>修改配置文件–>重启服务、设置开机启动–>修改网络地址–>测试

DNS

DNS(Domain Name Service,域名服务)

DNS的域和域名

了解DNS

DNS树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字通过域名进行表示。域名通常由一个完全正式域名(Fully Qualified Domain Name,FQDN)标识。FQDN能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔。

##### 域名空间

  • Internet域名空间的结构为一棵倒置的树,并进行层次划分。由树根到树枝,也就是从DNS根到下面的节点,按照不同的层次,进行了统一的命名。域名空间最顶层,DNS根称为根域(root)。

  • u对域名空间整体进行划分,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。域中能够包含主机和子域。

  • Internet域名空间的最顶层是根域(root),其记录着Internet的重要DNS信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet的各个组织。

  • DNS根域下面是顶级域,也由Internet域名注册授权机构管理。共有3种类型的顶级域。

  • 组织域:采用3个字符的代号,表示DNS域中所包含的组织的主要功能或活动。比如,com为商业机构组织,edu为教育机构组织,gov为政府机构组织,mil为军事机构组织,net为网络机构组织,org为非营利机构组织,int为国际机构组织。

  • 地址域:采用两个字符的国家或地区代号,如cn为中国、kr为韩国、us为美国。

  • 反向域:这是个特殊域,名字为in-addr.arpa,用于将IP地址映射到名字(反向查询)。

  • 区(Zone)是DNS名称空间的一个连续部分,其包含了一组存储在DNS服务器上的资源记录。每个区都位于一个特殊的域节点,但区并不是域。
  • DNS域是名称空间的一个分支,而区一般是存储在文件中的DNS名称空间的某一部分,可以包括多个域。
  • 一个域可以再分成几部分,每个部分或区可以由一台DNS服务器控制。使用区的概念,DNS服务器可负责关于自己区中主机的查询,以及该区的授权服务器问题。

配置主域服务器需要一整套的配置文件,包括主配置文件(/etc/named.conf)、正向域的区文件、反向域的区文件、高速缓存初始化文件(/var/named/ named.ca)和回送文件(/var/named/named.local)。

配置DNS服务器

-----1.安装DNS服务器-----
rpm -qa|grep bind  #查看是否安装了bind
yum info bind      #查找软件包bind
yum clean all      #清空yum缓存
yum install bind   #安装bind-----2.和win10计算机ping通-----
设置同一个网段,同一个VMnet,关闭win10防火墙-----3.编辑配置文件-----   #4个配置文件都在下文
vim /etc/named.conf            
vim /etc/named.zones           
vim /var/named/long.com.zone   
vim /var/named/192.168.10.zone #!使用时修改好ip地址-----4.防火墙放行-----
firewall-cmd --permanent --add-service=dns #防火墙添加dns
firewall-cmd --reload                  #重启防火墙
firewall-cmd --list-all    #查看防火墙-----5.启动服务-----
systemctl start named
systemctl enable named
systemctl restart named-----6.测试-----
在win10中在设置ip地址的地方设置DNS服务器为192.168.10.1
ping dns.long.com

linux的DNS配置文件

named.conf

这个文件基本上没有要修改的

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.htmloptions {listen-on port 53 { any; };listen-on-v6 port 53 { ::1; };directory 	"/var/named";dump-file 	"/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";allow-query     { any; };/* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so willcause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatlyreduce such attack surface */recursion yes;dnssec-enable yes;dnssec-validation no;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN {type hint;file "named.ca";
};include "/etc/named.zones";
include "/etc/named.root.key";

named.zones

这个文件的10.168.192和192.168.10实际操作时可以修改

zone "long.com" IN {type master;file "long.com.zone";allow-update { none; };
};zone "10.168.192.in-addr.arpa" IN {type master;file "192.168.10.zone";allow-update { none; };
};

long.com.zone

ip地址在使用时做好修改

$TTL 1D
@       IN SOA   @ root.long.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum@		IN		NS			dns.long.com.
@		IN		MX	10		mail.long.com.dns		IN		A			192.168.10.1
mail		IN		A			192.168.10.2
slave		IN		A			192.168.10.3
www		IN		A			192.168.10.4
ftp		IN		A			192.168.10.20
web		IN		CNAME			www.long.com.

192.168.10.zone

文件名做好修改,按实际需求来

$TTL 1D
@	IN SOA   @   root.long.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimum@           IN 		NS           dns.long.com.
@           IN 		MX     10    mail.long.com.1           IN 		PTR          dns.long.com.
2           IN 		PTR          mail.long.com.
3           IN 		PTR          slave.long.com.
4	    IN 		PTR          www.long.com.
20          IN 		PTR          ftp.long.com.

Apache服务器配置

--------1.配置网络--------
--------2.安装apache--------
yum install httpd -y#安装httpd
--------3.启动httpd--------
systemctl start httpd
--------4.防火墙放行、重启--------
firewall-cmd --list-all #查看防火墙
firewall-cmd --permanent --add-service=http #防火墙放行
firewall-cmd --reload          
firewall-cmd --list-all  #查看防火墙
--------5.修改SElinux值--------
setenforce 0      #更改当前的SElinux值
getenforce       #查看SElinux值    Enforcing为1 Permissive为0#vim /etc/sysconfig/selinux #编辑配置文件
--------6.测试httpd是否安装成功--------
systemctl start httpd #开启服务  restart/stop  重新启动/重启
systemctl enable httpd  
#firefox http://127.0.0.1   
--------7.编辑一个网页--------
cd /home
ls
mkdir /home/www
echo "the web's documentRoot Test.">/home/www/myweb.html  #>重定向字符
vim /home/www/myweb.html
--------8.编辑配置文件--------
vim /etc/httpd/conf/httpd.conf
:set nu                 #添加行号
119gg                   #找到119行 
DocumentRoot '/home/www'#配置路径
124gg                   #找到124行 
<Directory '/home/www'> #指定网站所处的位置
164gg
DirectoryIndex index.html myweb.html   #指定默认首页
--------9.检查完后重启httpd服务--------
getenforce              #检查这个是否为Permissive
firewall-cmd --list-all
systemctl restart httpd #重启服务
--------10.测试--------
192.168.1.1
127.0.0.1

FTP

-----1.查看是否安装-----
rpm -q vsftpd   #查看有没有安装ftp-----2.安装ftp-----
mkdir /iso              #新建文件夹
mount /dev/cdrom /iso   #挂载镜像
yum clean all           #清空缓存
yum install vsftpd -y   #安装VSftpd
yum install ftp -y      #安装ftp
rpm -qa|grep ftp        #查看是否安装-----3.1重启服务,加入开机启动项,放行防火墙-----
systemctl restart vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
firewall-cmd --list-all
-----3.2关闭增强linux模式。-----
getenforce
setenforce 0-----4.配置vsftp.conf文件-----
位置:/etc/vsftpd/vsftpd.conf出错配置文件内容:
#anonymous_enable=YES
#local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YESpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES#anon_root=/var/ftp
#anon_upload_enable=YES
#anon_mkdir_write_enable=YESanonymous_enable=NO
local_enable=YES
local_root=/web/www/html
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES----- --文档结束-- ----- -----5.创建用户设置密码-----
useradd -s /sbin/nologin team1
useradd -s /sbin/nologin team2
passwd team1
passwd team2-----6.建立chroot_list文件-----
vim /etc/v3sftpd/chroot_list #编辑文档
文档内容(添加2个用户的用户名即可):
team1
team2-----7.做好ftp设置目录 修改权限-----
mkdir /web/www/html -p #3级目录需要加-p
touch /web/www/html/test.sample
ll -d /web/www/html
chmod -R o+w /web/www/html
ll -d /web/www/html-----8.测试-----
systemctl restart vsftpd #测试前要重启服务ftp 192.168.10.1  #登录ftp
team1             #账户名
team1的密码        #刚刚设置账户时的密码
pwd               #查看当前目录,当前目录为根目录,如果不是,就是出错了
mkdir aaa         #创建文件夹
mkdir bbb         #创建文件夹
ls                #查看权限
cd /              #切换目录 failed 失败
exit              #退出ftp出错1: ftp 192.168.10.1进不去   或是   vsftpd服务重启失败
原因:配置文件/etc/vsftpd/vsftpd.conf出错
出错2:服务不可用 或是 登陆失败 或是 无法更改目录
原因:chmod -R o+w /web/www/html #给权限时给错了,导致权限过低
解决办法:chmod 777 /web/www/html 

linux到这里就算是完结,短时间内大概率不会做修改和增加。

单击跳转到第一行

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/95656.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息