@hainingwyx
2017-10-19T23:11:37.000000Z
字数 32359
阅读 3365
Linux
北桥:CPU和内存之间的相连控制器,快速实现数据交换,高速总线控制器。
南桥:处理输入设备和输出设备响应的控制器,低速总线控制器。
CPU的主频、一级缓存、二级缓存。缓存在一定意义上也决定了计算机的性能。
内存数据--二级缓存--一级缓存--CPU主频
程序局部性原理:刚刚访问的数据可能再次被访问;访问一个数据,周围的地址的数据也可能被访问。
程序的移植:程序依赖于底层芯片。底层芯片不同,程序的设计会不一样。
汇编语言,通过编译器翻译成机器语言,但是编译器和硬件息息相关。移植很难。
API:高级语言通过中间层(API)装换为底层程序,API就是应用编程接口,不通CPU相同API就可以解决程序移植问题。
硬件架构:CPU芯片的不同系列。
操作系统os
多任务
进程:有生命周期的程序。
POST: Power On Self Test
BIOS: 它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
Linux内核版本:官网
主要发行版本:redhat,CentOS, ubuntu。
ubantu图形界面做得比较好,但是安全性稳定性redhat最好,redhat有部分服务收费,所以CentOS崛起了。fedora软件、功能最全,但是安全性没有保障。目前红旗已经倒闭了。
开源软件
Apache,Nginx,MySQL,Samba,MongoDB,php,python,Ruby,Sphinx。开源且免费使用。
应用领域
企业服务器;服务器趋势:[网站][www.netcraft.com]
嵌入式系统:安卓。(苹果是Unix)
与Linux的区别
字符界面
优势:占用的系统资源更少;减少了出错的可能性
虚拟机:适用新手初学。
VMware下安装操作系统
系统分区与格式化
主分区:最多只能有4个
扩展分区:最多只能有一个。主分区加扩展分区最多4个。不能写入数据,只能包含逻辑分区。
格式化:FAT1 6, FAT32, NTFS, EXT2, EXT3, EXT4。
挂载:
推荐分区:/boot 分区(启动分区,)
virtual box:开源软件,不需要激活。
安装centos
原因:针对运维工作,生产的主流还是redhat和centOS。两者其实本质差不多。
6.3 32位版本。
运行虚拟机--
安装程序:本身就是一个小的Linux操作系统。
skip:跳过光盘校验。
红帽操作系统是开源的,品牌和注册商标不能随便使用,需要付费。
安装语言:使用默认的英文。
键盘选择:美式键盘
安装basic storage device:普通PC服务器或者试验机
是否丢弃所有数据?是
special storage device:服务器使用skacy硬盘或者数据、操作系统装在存储上。以太网存储技术。
抹除所有数据
设置主机名
选择市区,默认选择格林威治时间,这个还是要勾选的,可以使长距离跨时区的服务器相互协调
设置root用户密码:相当于windows的Admin
对磁盘进行分区操作:
使用逻辑卷,点击创建
创建swap分区,实际上就是虚拟内存,一般大小是:4G实验环境,2G也可以,16G生产环境。创建根分区。文件系统用ext4.选择最大可用空间。
Format warning:从6开始,格式化分区操作开始。
选择引导:选择安装硬盘,可以给引导加密码
选择安装软件:将可能安装的开源软件安装,默认是最小化安装。选择desktop,会安装图形界面和一些浏览器。
重启。
创建customer用户。避免使用root用户破坏操作系统。
配置当前时间。如果是生产就选择同步,实验不需要。
Kdump设置:内核挂掉时,可以拷贝内存镜像。
重启。
安装完成。
大部分是Gnome图形界面。仿苹果的系统界面。
eidt- prefer-behavior-always open in brower windows.
音乐只能播放开源格式,mp3可能是不支持的。
shell分为CLI(command line interface)和GUI(Graphical User Interface)两种,是一种命令行解释器。还是一种相当强大的编程语言。
操作系统的shell
提示符
命令组成:命令 [选项] [参数],有多个选项时可以组合使用。
命令提示符
[root@localhost ~]#
其中:
ls:列出当前命令下的所有文件
uname:显示当前系统的基本信息
uname -r:系统的版本号
uname -a:所有操作系统的信息
uname --all:同上
firefox:打开火狐浏览器
ctrl+c:终止当前命令
clear :清除当前屏幕
使用Tab简化输入
bash会自动保存历史记录,可以使用上下按键或者history查看
通过历史记录简化操作
搜索命令历史记录
切换用户
在CLI中,通过su -用户名,命令切换用户
Bash作业管理
vim hello.sh
#!/bin/bash #一定要加
# The first program
echo -e "\e[1;34m 天上掉下林妹妹\e[0m"
脚本执行
chmod 755 hello.sh
./hello.sh 赋予执行权限,直接运行
bash hello.sh 通过Bash调用执行脚本
alias 查看系统中所有的命令别名
alias 别名=原命令 设置别名
vi ~/.bashrc 别名永久生效与删除别名
unalias 别名 删除别名
命令生效顺序
用绝对路径或相对路径执行的命令>别名>Bash内部命令>按照$PATH环境变量定义的目录查找顺序找到的第一个命令
ctrl+C 终止当前命令
ctrl+l 清屏
ctrl+a 移动到行首
ctrl+e 移动到行末
ctrl+u 从光标所在位置删除到行首
ctrl+z 后台运行命令
ctrl+r 搜索历史记录
历史命令默认保存1000条,可以在/etc/profile中修改
history [选项] [历史命令保存文件]
选项
-c 清除历史命令
-w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history,一般是系统退出时自动写入。
基本用法
命令和文件补全
在Bash中,输入命令或者文件时,按“Tab”就会自动进行补全
shell数据流
重定向通常用来保存某命令的输出信息或者错误信息,可以用来记录执行结果或者保存错误信息到一个指定的文件
ifconfig > test.log
ls > test.log 覆盖
ls >> test.log 追加
错误命令 2>文件 覆盖方式,输出错误输出到指定文件,没有空格
错误命令 2>>文件 追加方式,输出错误输出到指定文件,没有空格
命令 > 文件 2>&1 覆盖方式,正确错误同时保存
命令 >> 文件 2>&1 追加方式,正确错误同时保存
命令 &> 文件 覆盖方式,正确错误同时保存
命令 &>> 文件 追加方式,正确错误同时保存
命令 >> 文件1 2>>文件2 正确输出到文件1,错误输出到文件2
2>&|:STDOUT和STDERR结合
<:重定向STDIN,grep linuxcast < /etc/passwd
wc [选项][文件名]
选项
-c 统计字节数
-w 统计单词数
-l 统计行数
ctrl + D 开始统计输入字符
命令<文件 把文件作为命令的输入
命令<<标识符 标识符之间的内容作为命令的输入
wc < access.log 文件作为输入
wc << ddy ddy作为结束标记,统计字符
管道通常用来组合不同的命令,以实现一个复杂的功能。多命令协作就是通过管道和重定向完成的。
# 多命令顺序执行
命令1;命令2 多命令顺序执行,命令之间没有逻辑关系
命令1&&命令2 逻辑与,命令1正确执行,命令2才会执行
命令1||命令2 逻辑或,命令1错误,命令2才会执行
命令1 | 命令2 命令1的正确输出作为命令2的操作对象
ls -l /etc | more
netstat -an | grep ESTABLISHED
netstat -an | grep ESTABLISHED | WC -l
ls -l | grep linuxcast
find / -user linuxcast | gerp video
find / -user linuxcast 2> /dev/null | gerp video
命令行通配符
* 匹配零个或多个字符
? 匹配任意一个字符
[abc] 匹配括号里任意字符
[0-9] 匹配括号中任意字符,-代表一个范围
[^abc] 匹配列表以外字符,[^0-9]`代表匹配一个不是数字的字符
#其他特殊符号
‘’ 单引号,在单引号中的所有特殊符号都没有特殊含义
"" 双引号,在双引号中特殊符号多有没有特殊含义。"$","`","\"表示调用变量值、引用命令、转义符
`` 反引号,括起来的命令是系统命令,在Bash中先执行。与$()作用相同
$() 引用系统命令
# 注释
$ 调用变量的值,如$name
\ 转义符
echo `ls`
echo $(date)
Linux文件系统为一个倒转的单根树状结构,文件系统的跟为"/",文件系统严格区分大小写,路径使用“/”分隔。
Linux树状文件系统结构
当前工作目录
文件名称
列出目录内容
ls -a 显示所有文件,包括隐藏文件
ls -l 显示详细信息,第一参数表示文件类型(-文件d目录|软链接文件),后面是所有者u,所属组g,其他人o的权限(r读w写x执 行),.表示ACL权限
ls -lh 人性化显示
ls -R 递归显示子目录
ls -ld 显示目标目录的信息或者链接的信息
ls -i 显示inode
查看文件类型
复制
cp 源文件 目标文件:复制文件或者目录
常用参数:
-r:递归复制整个目录树
-p:连带文件属性复制
-d:若源文件是链接文件,则复制链接属性
-v :显示详细复制信息
-a:相当于-pdr
剪贴/改名
mv 文件 目标目录:移动文件,可以同时重命名文件,整个目录不需要-r
删除
touch :可以创建空文件或者更新文件时间
mkdir -p:创建递归目录
rmdir:删除空目录
rmdir -r:删除非空目录
rm 删除文件或目录
常用参数:
-i 交互式
-r 删除目录中所有内容
-f 强制删除,没有警告提示
绝对路径和相对路径
切换目录:cd,支持目录、命令补全
当前目录可以用"."
上级目录用".."
绝对路径:/usr/log/sa
相对路径:../../var/log/sa:向上退两层
常见目录
locate
locate [文件名]:在后台数据库中快速查找,需要预先建立数据库,数据库默认每天更新一次,可以用updatedb手工建立、更新数据库,数据库路径为:/var/lib/mlocate
搜索配置文件:/etc/updatedb.conf
PRUNE_BIOND_MOUNTS="yes" 开启搜索限制
PRUNEFS= 不搜索的文件系统
PRUNENAMES= 不搜索的文件类型
PRUNEPATHS= 搜索时不搜索的路径
whereis
whereis [命令名] #搜索命令所在路径及帮助文档所在位置
#-b 只查找可执行文件
#-m 之查找帮助文件
PATH环境变量:定义系统搜索命令的路径,可以用echo $PATH
查看
find
搜索文件名,如果不知道全部内容需要使用通配符
find 查找位置 查找条件
find . -name *linuxcast* 当前目录查找
find / -name *.conf 根目录查找
find / -perm 777 查找权限为777
find / -type d 返回所有的目录,-l 所有链接
find . -name "a*" -exec ls {} \ 以“a”为开头的文件,作为参数传递给ls命令
find /root -iname install.log 不区分大小写
find /root -user root 按照所有者搜索
find /root -nouser 查找没有所有者的文件
find /var/log/ mtime +10 查找10天前修改的文件
-10 10天内
10 10天当天
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . -size 25k 查找文件大小为25K的文件
-25k 小于25K
+25k 大于25K
-2M 小于2M
find . -inum 262422 查找i节点是262422的文件
find /etc -size +20k -a -size -50k 查找>20k且<50K的文件
-a and
-o or
find /etc -size +20k -a -size -50k -exec ls -lh {} \ 查找文件并显示详细信息
-exec 命令 {} \
通配符
* 匹配任意内容
? 匹配任意字符
[] 匹配任意一个中括号内的字符
其他查找条件
-perm
-group
-type
grep
在文件当中匹陪符合条件的字符串
grep [选项] 字符串 文件名
选项
-i 忽略大小写
-v 排除指定字符串
常用压缩格式:.zip/.gz/.bz2/.tar.gz/.tar.bz2
zip格式
zip 压缩文件名 源文件 压缩文件
zip -r 压缩文件名 源目录 压缩目录
zip testfile.zip testfile
unzip 压缩文件 解压缩.zip文件
gz格式
gzip 源文件 压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留,>表示输出重定向
gzip -r 目录 压缩目录下所有的子文件,但是不能压缩目录
gizp -d 压缩文件 解压缩文件
gunzip 压缩文件 解压缩文件
bz2格式
不能压缩目录
bzip2 源文件 压缩为.bz2格式,不保留源文件
bzip2 -k 源文件 压缩后保留源文件
bzip -d 压缩文件 解压缩,-k保留压缩文件
bunzip2 压缩文件 解压缩,-k保留压缩文件
tar
tar用以打包文件
tar -cvf 打包文件名 源文件
选项
-c 打包
-v 显示过程
-f 指定打包后的文件名
tar -cvf linuxcast.tar linuxcast
tar -xvf 打包文件名
选项
-x 解打包
tar -xvf linuxcast.tar
tar -zcvf 压缩包名.tar.gz 源文件
选项
-z 压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
选项
-x 解压缩.tar.gz格式
tar -jcvf 压缩包名.tar.bz2源文件
选项
-z 压缩为.tar.bz2格式
tar -jxvf 压缩包名.tar.bz2
选项
-x 解压缩.tar.bz2格式
tar -zcvf /tmp/test.tar.gz jp ana.cfg
tar -ztvf test.tar.gz 查看压缩文件
tar -cvzf backup.tar.gz /etc 归档,并压缩。
ln -s [源文件] [目标文件]:生成链接文件,-s表示创建软链接
硬链接特点
软链接特征
时间命令
date:查看、设置当前系统时间
格式化显示时间:+%Y--%m--%d
修改时间:date -s "20:22:20"
hwclock:显示硬件时钟时间
cal:查看日历
uptime:查看系统运行时间
输出、查看命令
echo:用以显示输入的内容
cat:显示文件内容
more:以向下翻页形式显示文件内容
less:以向上下翻页形式显示文件内容
head:显示文件的前几行, -n指定行数
tail:显示文件的末尾几行, -n指定行数,-f追踪显示文件更新,需要手动退出
查看硬件信息
lspci:查看PCI设备,-v查看详细信息
lsusb:查看USB设备,-v查看详细信息
lsmod:查看加载的模块驱动
shutdown
shutdown [选项] 时间
选项
-c 取消前一个关机命令
-h 关机
-r 重启
shutdown -r 05:30 & 后台执行
shutdown -c 取消
shutdown -h now
shotdown -h +10
shutdown -h 23:30
shutdown -r now
其他关机命令
一般不用
halt
poweroff
init 0
其他重启命令
reboot
init 6
这里的数字涉及系统运行级别。
系统运行级别
cat /etc/inittab 修改系统默认运行级别
runlevel 查询系统运行级别
退出登录
操作系统登录的用户是有限的。
logout
查询与自动挂载
mount 查询系统中已经挂载的设备
mount -a 依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式
mount [-t 文件系统] [-o 特殊选项] [设备文件名] 挂载点
选项
-t 文件系统 加入文件系统类型类指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-o 特殊选项 可以指定挂载的额外选项
特殊选项
exec/noexec 设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount 重新挂载已经挂载的文件系统
mount -o remount,noexec /home 重新挂载/boot分区,并使用noexec权限
mount -o remount,exec /home 重新挂载/boot分区,并使用exec权限
挂载光盘
mkdir /mnt/cdrom/ 建立挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom 挂载光盘
mount /dev/sr0 /mnt/cdrom
卸载光盘
umount 设备文件名或挂载点
umount /mnt/cdrom
挂载U盘
Linux默认不支持NTFS文件系统
fdisk -l 查看U盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb vfat指FAT32
w 查看登录用户信息
who 查看登录用户信息,输出内容相对少
last 查看当前登录和历史登录信息
lastlog 查看所有用户的最后一次的登录时间
vi是命令行界面下的文本编辑工具最早在1976年开发,当时叫做ex。1991年改进之后,发布了vim,加入了对GUI的支持。vim不仅仅是文本编辑器,还可以文本编辑、文本处理、代码开发。绝大多数哦的LInux系统安装vim,比vi更加强大。
VIM模式
命令模式常用指令
i 光标前插入文字
O 当前行的下一行插入一行
dd 删除整行
u 撤销上一个操作
yy 复制当前行
n+yy 复制n行
p 下一行粘贴
P 上一行粘贴
r 替换当前字符
/ 查找关键字
h 光标左移
j 光标下移
k 光标上移
l 光标右移
ctrl+f 向下翻页
ctrl+b 向上翻页
ctrl+d 向下翻半页
ctrl+u 向上翻半页
ex模式常用指令
:w 保存当前修改
:q 退出
:wq 保存退出
:q! 强制退出,不保存修改
:x 保存并退出
:set number/nu 显示行号
:! 执行一个系统命令,并显示结果
:sh 切换到命令行,按ctrl+d切换回vim
:ls 列出打开的所有文件
:3 光标快速定位3行
/xxx 光标向后搜索xxx,定位
?xxx 光标向前搜索xxx,定位
VIM指令
vim + 目标文件路径:存在则打开,不存在则新建并打开。
vim abc 打开或者创建abc文件
vim + abc 打开或者创建abc文件,光标在最后一行首
vim +3 abc 打开或者创建abc文件,光标在第三行首
vim +/imooc abc 打开或者创建abc文件,光标在imooc第一次出现处
vim aa bb cc
:n 下一个文件
:N 上一个文件
:prev 上一个文件
磁盘的基本概念
磁盘在Linux中的表示
所有设备被抽象为一个文件,保存在/dev目录下。磁盘名称一般为hd[a-z]或者sd[a-z]。IDE设备名称为hd[a-z]。SATA, SCSI, SAS, USB等设备名称为sd[a-z]。
df 查看磁盘分区使用状况
选项
-a 显示所有文件系统的磁盘使用情况
-T 显示磁盘分区类型
-h 1024单位计算,可以看出磁盘空间合适单位大小
-t 显示指定格式的分区
du 统计磁盘上的文件的大小
选项
-h 按照1024单位,合适大小显示
-s 指定统计的目标
分区概念
不同分区用:设备名称+分区号,如sda1,sda2,sdb1,sdb2。主流的分区机制分为MBR和GPT两种。
MBR
Master Boot Record。传统的分区机制,应用于绝大多数使用BIOS的PC设备。
前446位引导代码,后面64字节为分区表,2个字节为启动标识。共512字节。
GPT
Guide Partition Table。较新的分区机制
parted 驱动分区工具
select /dev/sdc 切换磁盘
mklabel gpt GPT分区,msdos是MBR
print 查看信息
mkpart 添加分区,然后输入分区名称,格式,开始1MB,结束2000MB
print 查看分区信息
mkpart test 2000 3000 命令格式分区,单位是MB
quit 离开
fdisk是IBM老牌分区软件,是一个基于MBR的分区工具,如果需要使用GPT,则无法使用fdisk进行分区。
操作系统通过文件系统管理软件及数据,磁盘分区后需要创建文件系统之后才能够为操作系统使用,创建文件系统的过程称为格式化。
命令mke2fs创建文件系统:mke2fs -t ext4 /dev/sda3
常用参数
mkfs也可以用于创建文件系统,较简单,支持参数也较小
dumpe2fs可以用来查看分区的文件系统信息:dumpe2fs /dev/sdb1
journal日志
带日志的文件系统有较强的稳定性,出错时可以进行恢复。带日志的文件系统使用“两阶段提交”的方式进行磁盘操作。好处是,如果出现意外(断电或者磁盘故障)可以通过查询日志进行恢复工作。缺点是会丧失一定的性能。
e2label可以为文件系统打标签。
fsck用来检查并修复损坏的文件系统。f检查时,文件系统必须卸载。sck /dec/sda2
man
man 命令 获取指定命令的帮助
man ls 查看ls的帮助
man -f 命令 查看命令帮助级别
whatis 命令 同上
whereis 命令 查看命令所在位置
man -k 命令 可以用来查询包含该关键字的所有帮助文档
apropos 命令 同上
man -5 passwd 查看第5级别的passwd帮助信息
帮助选项
命令 --help 获取命令选项的帮助
ls --help
shell内部命令帮助
help shell内部命令 获取shell内部命令的帮助
whereis cd 确定是否是shell内部命令
详细命令帮助
Info与man类似,提供的信息更为详细深入。info ls。两者都可以通过"/关键字"查找。
info 命令
回车 进入子帮助界面(带有*标记)
u 进入上层界面
n 进入下一个帮助小节
p 进入上一个帮助小节
q 退出
很多程序、命令都带有详细的文档,保存在/usr/share/doc目录中,这是程序最为详尽的文档。
每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名。每个用户属于一个主组,属于一个或多个附属组,每个组有一个GroupID,每个进程以一个用户身份运行,并受该用户可访问的资源限制。每个登录用户拥有一个指定的shell。
用户ID为32位,为了和老师系统兼容,用户ID限制在60000以下。
使用id可以显示当前用户信息。
使用password可以修改当前用户密码。
相关文件
/etc/group保存组信息
查看登录用户
whoami:显示当前用户
创建一个用户
useradd nash_su创建用户名为nash_su
可用参数
修改用户信息
usermod 参数 username
参数:
删除用户
userdel nash_su
userdel -r nash_su:同时删除家目录
组
更加方便管理用户。
创建、修改删除组
groupadd nash_su
groupmod -n nash nash_su:修改组名
groupmod -g newID OldID:修改组ID
groupdel linuxcast
权限
限制对资源的访问,一般分为读、写、执行。
UGO
User Group Other,每个文件权限设置基于UGO,权限三个(wxr)一组,每组三个,共9个。命令ls -l查看当前目录下文件的详细信息。
修改文件所属组
chown nasu_su linuxcast.net:改变文件所属用户
-R修改目录及目录下所有文件的所属用户
chgrp nash_su linuxcast.net:改变文件所属组
修改权限
chmod 模式 文件:修改文件权限
模式:u,g,o分别代表用户、组、其他。a可以代表ugo,+,-可以代表加入或者删除对应权限。r,w,x代表三种权限。
例子
+ chmod u+rw linuxcast.net
+ shmod g-x linuxcast.net
+ chmod go+r linuxcast.net
+ chmod a-x linuxcast.net
# 或者以数字的方式修改权限。r=4,w=2,x=1。
# rw = 4+2 =6
# rwx =4+2+1 =7
# r-x =4+1=5
chmod 660 linuxcast.net
#以数字的方式修改的时候UGO都得同时修改。
每个终端都有一个umask属性,来确定新建文件、文件夹的默认权限。
umask使用数字权限方式表示,如022
目录的默认权限:777-umask
文件的默认权限:666-umask
普通用户的默认umask是022,root用户默认umask是022。命令umask可以查看权限。也可以修改默认的umask权限,umask 022。显示的时候umask是4位,第一位是特殊权限。
特殊权限
suid:以文件所属用户身份执行,而非执行文件的用户。U的x被设置为s。开放给可执行文件,让用户实现没有权限的事情。例如:passwd
sgid:以文件所属组身份运行。在该目录中创建的任意新文件的所属组与该目录所属组相同。G的x被设置为s。
sticky:对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。
设置特殊权限
chmod u+s linuxcat.net
chmod g+s linuxcat.net
chmod o+t linuxcat.net
#或者用数字方式表示
# + suid =4
# + sgid = 2
# + sticky = 1
chmod 4775 linuxcast.net:设置sticky
网络编址:惟一的定位计算机设备。
IP编址:双层编址方案,一个IP地址表示一个主机(或一个网卡接口),应用最广泛的是IPV4编址,已经逐渐向IPV6编址切换,IPV4地址为32长,IPV6编址为128位长。一个IPV4地址分为两部分:网络部分和主机部分。网络部分用来表示所属区域、主机部分用来表示该区域中的哪个主机。
IPV4编址通常点分十进制表示,分为4部分,每个部分8位,如:192.168.1.1
子网掩码
通过子网掩码来确定网络部分的位数。子网掩码与IP地址一样,有32bit,每一位与IP地址的每一位一一对应。IP地址中相应子网掩码中为1的部分为网络部分。如:192.168.1.1和子网掩码:255.255.255.0,所以可以看出IP地址前24位为网络部分。再比如:192.168.1.0/24,前24位为网络部分。比较网络部分,用于判断是否处于同一网络。
同一个网络之间通信
Mac地址,网卡的硬件地址,称为二层地址。首先要发送ARP(地址解析协议),获取Mac地址。目标设备响应。返回ARP,即可以通信。同一网络通信指通过网线直连或者交换机连接的设备。
不同网络通信
通过路由器或者网关或者具有路由功能的主机相互连接。
路由:不同网络之间传输数据的功能。一般有多个接口,连接到不同的网络中,并通过路由表进行数据转发。一般通过网关实现跨区域通信。
域名:IP地址难以记忆,所以一般使用域名进行管理。域名大小写不敏感。
DNS:用来在IP与域名之间进行转换的。DNS服务由DNS服务器提供。访问网站的时候,首先要访问DNS服务器,返回IP地址,然后访问网站服务器。qq能上,打不开网页,qq直接使用IP地址的,所以可能是DNS的问题。
基本网络参数
局域网通信:IP地址,子网掩码
跨网段通信:IP地址,子网掩码,网关
可上网的计算机:IP地址,子网掩码,网关,DNS
在Linux中,以太网接口命名规则为eth0, eth1等,0,1代表网卡编号。通过lspci命令查看网卡的硬件信息。ifconfig命令查看接口信息。
ifconfig -a 查看所有接口
ifconfig eth0 查看特定接口
ifup eth0:启用特定接口
ifdown eth0:关闭接口
配置网络信息
setup命令--network configuration--Device configuration--eth0-配置静态IP地址、子网掩码、网关、DNS服务器
配置完成后,ifup eth0启动网卡
ifconfig eth0,查看信息
网络相关配置文件
网卡:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件:/etc/esolv.conf
主机名配置文件:/etc/sysconfig/network
静态主机名配置文件:/etc/hosts
网络测试命令
# 测试网络连通性:
ping 192.168.1.1
ping www.linuxcast.net
# 测试DNS解析:
host www.linuxcast.net
dig www.linuxcase.net
# 显示路由表
ip route
# 追踪到达目标地址的路由设备
traceroute www.linuxcast.net
# 使用mtr进行网络质量测试(结合了traceroute和ping):
mtr www.linuxcast.net
# 修改主机名
hostname newname
# 查看
hostname
永久修改:vi /ect/sysconfig/network
故障排查:先看网络配置信息是否正确,IP地址,子网掩码,网关,DNS。查看到达网关是否联通,ping 网关IP地址。查看DNS解析是否正常,host www.126.com。
文件浏览:cat more less head tail
基于关键字搜索
# 基于关键字搜索文本
grep 'linnuxcast' /etc/passwd
find / -user linuxcase | gerp Video
# -i 搜索的时候忽略大小写
# -n 显示结果所在行数
# -v 输出不带关键字的行
# -Ax 在输出的时候包含结果所在行之后的指定行数
# -Bx 在输出的时候包含结果所在行之前的指定行数
基于列处理文本
cut -d: -f1 /etc/passwd:基于列处理文本内容,直飞那个分隔符为‘:’,显示第一列
grep linuxcast /etc/passwd | cut -d: -f3
cut -c2-6 /etc/passswd:第2个到第6个字符
# -d 指定分割字符
# -f 指定输出的序列号
# -c 基于字符进行切割
文本统计
wc linuxcast
+ -l 只统计行数
# -w 只统计单词
# -c 只统计字节数
# -m 只统计字符数
文本排序
#用以对文本内容进行排序
sort linuxcast
# -r 倒序排序
# -n 指定基于数字进行排序
# -f 忽略大小写
# -u 删除重复行
# --t c 使用c作为分隔符为列进行排序
# -k x 大部分进行基于指定字符分割的排序是,指定基于哪个列排序
删除重复行
除了sort,还有uniq删除重复行(仅是相邻的重复行)
cat linuxcat | uniq
文本比较
# 比较两个文本的区别
diff linuxcast linuxcast-new
diff -u linuxcast linucast-new > final.patch
# -i 忽略大小写
# -b 不略空格数量的改变
# -u 统一显示比较信息,一般用以生成补丁(patch)文件
拼写检查
aspell check linuxcast
aspell list < linuxcast
处理文本内容
# 删除关键字
tr -d 'TMD' < linuxcast
# 转换大小写
tr 'a-z' 'A-Z' < linuxcast
搜索替换
# 关键字linux替换为unix,一行多个时,多个替换
sed 's/linux/unix/g' linuxcast
#1-50行
sed '1, 50s/ linuxcast/unix/g' linuxcast
# 多个指令
sed -e 's/ linuxcast/unix/g' -e 's/ nash/nash_su/g' linuxcast
系统启动流程:BIOS--MBR:Boot Code--执行引导程序-GRUB--加载内核--执行init--runlevel
BIOS
Basic input Output System,一般保存在主板上的BIOS芯片上。负责检查硬件并查找可启动设备。可启动设备(前512字节最后两个为55AA)在BIOS设置中定义顺序,如USB、CDROM、HD。
MBR
总共512字节。BIOS找到可启动设备后执行器引导代码。引导代码为MBR前446字节。
GRUB
Grub是linux使用的主流引导程序,几乎可以用来心在所有的操作系统。相关文件保存在/boot/grub目录中。配置文件为grub.conf。stage1:MBR。
Kernel
MBR的引导代码将负责找到并加载内核。一般还会加载内核模块打包文件。Linux为保持Kernel 的精简,将一些不常用的驱动、功能编译成为模块。dmesg可以查看本次启动的输出信息,一般某些设备启动不正常的 时候可以查看找到相应信息。
Init
init是Linux系统的第一个进程,PID编号为1。并且会一直存在,直到系统关机,负责对系统初始化,挂载文件系统,根据运行级别启动相应服务。可以通过/etc/initrab配置默认的运行级别。/etc/init配置不同的功能。
运行级别
runlevel
可以显示当前运行级别和上一个运行级别。
init 3
可以切换对应的运行级别。
单用户修改ROOT密码
为内核传递参数'1'或者'single',进入单用户模式。单用户模式下不启动任何服务。不需要输入密码。此时可以使用passwd修改root密码。
GRUB加密
同一在grub.conf中的启动配置中,加入如下参数即可加密。
password --md5 加密密码。
通过grub0md5-crypt生成加密密码。
如果这个密码也忘了。只能把硬盘拆下来,修改配置。
源代码形式
源代码一般会被打包成tar.gz的归档压缩文件,源代码需要编译成二进制形式之后才能运行使用。
源代码编译流程
1. ./configure 检查编译环境、相关库文件及配置参数生成makefile
2. make 对源代码进行编译,生成可执行文件
3. make install 将生成的可执行文件安装到当前计算机中
开源软件一般会大量使用其他开源软件的功能,所以开源软件会有大量依赖关系
缺点:操作复杂,编译时间较长,容易出现错误
有点:适用所有系统
RPM(redhat Package Manager)
将源代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。
RPM基础命令
# 安装软件
rpm -i software.rpm
# 卸载软件
rpm -e software
# 升级形式安装
rpm -U software-new.rpm
# rpm通过http\ftp协议安装软件
rpm -ivh http://www.linuxcast.com/software.rpm
# 参数
# -v 显示详细信息
# -h 显示进度条
RPM查询
rpm -qa:列出已经安装的所有rpm软件
rpm -qi software :查询软件的信息
rpm -ql software:查看安装文件
rpm -qf /usr/bin/linuxcast::查询目标文件属于哪个RPM包
rpm -qip software.rpm:查询未安装的软件信息
rpm -qlp software.rpm:未安装的软件文件
RPM验证
软件在传播过程中可能会被恶意修改,所以为了安全起见,现代系统都加入了对软件的验证功能。验证一般使用非对称加密算法,所以需要一个密钥。
# 导入密钥
rpm -import 密钥
# 验证rpm文件
rpm -K software.rpm
# 验证已安装的软件
rpm -V software
YUM软件管理
Yellowdog Updater Modified是一个RPM的前端程序,主要目的是设计用来自动解决RPM的依赖关系问题。本身对RPM进行分组,并基于组进行安装操作。YUM引入仓库的概念,仓库用来存放所有现有的软件包。当使用yum安装一个rpm软件的时候,如果存在依赖关系,会自动在仓库查找依赖关系并安装。仓库可以是本地的,也可以是通过HTTP、FTP或NFS形式使用集中的、同一的仓库。
仓库的配置文件保存在/etc/yum.repos.d,yum配置文件必须以.repo结尾。/etc/yum.repos.d可以存在多个配置文件。
yum常用命令
# 安装
yum install software-name
# 卸载
yum remove software-name
# 升级
yum update software-name
yum查询
#搜索
yum search keyword
#列出全部
yum list (all|installed | recent |update)
# 显示指定软件信息
yum info packagename
# 查询哪个rpm软件包包含目标文件
yum whatprovides filename
创建yum仓库
日志是用来记录系统运行的纯文本文件。为了保存相关程序的运行状态、错误信息等。Linux系统一般会保存一下类型的日志:内核信息,服务信息,应用程序信息。Linux系统中实现日志功能的服务称为rsyslog。一般默认安装,并设置为自动启动。
可以控制rsyslog服务:service rsyslog status
rsyslog配置文件:/etc/rsyslog.conf
日志消息保存路径:/var/log
通常用tail message显示监控信息。-f实时监控。
Facility
rsyslog通过Facility定义日志消息的来源,以便对日志进行分类。主要有:
Priority/Security level
日志消息的优先级:
rsyslog配置
rsyslog配置文件的日志配置规则:facility.priority log_location,如:
mail.* -/var/log/maillog -:表示不需要等待从缓存写到硬盘中
*.info;mail.none;authpriv.none;cron.none /var/log/messages
kern.error /var/log/kern_error
如果需要将日志发送到一个统一的日志服务器,则可以按如下配置:
# 使用UDP协议发送
\*.\* @192.168.1.1
# 使用TCP协议发送
\*.* @@192.168.1.1
域名分为 三个部分:类型、域名、主机名,域名大小写不敏感。一个域名代表一个IP地址。
DNS(Domain Name System)服务由DNS服务器提供。日常使用的支持网络的计算机一般都是作为DNS客户端使用。Linux中一般使用系统底层提供的gethostbyname()功能进行域名解析。解析可以通过三种方式:
可以通过配置文件/etc/nsswitch.conf控制查询顺序
hosts:file dns:先访问hosts文件,在访问DNS服务器
DNS专用查询命令
# 命令host可用于进行DNS查询
host www.linuxcast.net
# 命令dig可用于进行DNS查询,输出详细信息
dig www.linuxcast.net
# 两者都不会使用/etc/nsswitch.conf的配置,只会通过/etc/resolv.conf进行DNS查询
DNS查询
DNS是一个树状结构,查询的时候根据域名(www.linux.net.)从右到左查询,域名每一级由独立的一个或者多个服务器。.表示根DNS服务器。com,net,org表示顶级域名服务器。linuxcast:表示授权服务器。www,ftp,mail。可以用dig +trace www.linuxcast来查看整个查询流程。
DNS查询类型
递归查询(Iterative Query)、循环查询(Recursive Query)。实际中,既使用循环查询,有使用递归查询。
资源记录
DNS信息通过资源记录(RR)的格式保存,不仅能保存域名和IP的对应信息,还能保存一些其他信息。
资源记录的常用属性
例如
www IN A 192.168.1.1
mail IN A 192.168.1.1
name class type rdata
资源记录类型
资源记录类型type | 表示内容 |
---|---|
A | IPV4地址 |
AAAA | IPV6地址 |
MX | 邮件记录 |
CNAME | 别名 |
PTR | 指针 |
SRV | 服务资源 |
DNS服务器类型
primary DNS server(Master)
一个域的主服务器保存该与的zone配置文件,该域所有的配置、更改都在该服务器上进行
Secondary DNS Server(Slave)
一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步
Caching only Server
DNS缓存服务器不存在任何zone文件,仅仅依靠缓存为客户端提供服务,通常用于负载均衡及加速访问使用。
ZONE
一般一个域的配置保存在zone文件中,文件的格式标准化。
高级查询
#返回gmal所有的邮件服务器及IP地址
dig -t mx gmail.com:
#逆向解析,IP地址到域名
dig -x www.linuxcast.net
现在使用最广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早由伯克利的一位学生学生编写,现在由ISC编写和维护。BIND服务名称为named。DNS默认使用UDP、TCP协议,使用端口号为53(domain),953(mdc)。
安装BIND:默认不安装,需要手动安装。
yum install -y bind bind-chroot bind-utils
BIND配置文件
/etc/named.conf :BIND服务主配置文件
/var/named:zone文件
如果安装了bind-chroot,BIND会被封装到一个伪根目录内,配置文件的位置变为:
==/var/named/chroot==/etc/named.conf:黄色表示伪根目录
==/var/named/chroot==/var/named
chroot通过将相关文件封装在一个伪根目录内,已达到安全防护的目的,一旦该程序被攻破,故只能访问伪根目录内的内容,而不是真实的根目录。
BIND在安装后不会有预置的配置文件,但是在BIND的文档文件夹内(/ysr/share/doc/bind-9.8.2),BIND提供了配置文件模板,可以直接拷贝:
cp -rv /usr/share/doc/bind-9.8.2/sample/etc/* var/named/chroot/etc
cp -rv /usr/share/doc/bind-9.8.2/sample/var/* var/named/chroot/var
示例中的主配置文件内容较多,实验环境下可以删除不需要的内容,最小化配置如下
options{
dictory "/var/named"
listion-on port 53 {127.0.0.1}
listion-on-v6 port 53 {::1:}
};
所有域的信息都是由与的主服务器控制。
配置步骤:
1添加linuxcast.net的定义
zone "linuxcast.net"{
type master;
file "linuxcast.net.zone";
};
2创建zone文件
zone文件位置:/var/named/chroot/var/named/linuxcast.net.zone
zone文件内容一般使用默认的named.localhost配置文件作为模板:
cp named.localhost linuxcast.ner.zone
添加新的资源记录:
www IN A 192.168.1.111
确保配置文件都有读权限。
3刷新配置
启动bind服务或刷新配置
service named start
service named reload
将本机的DNS配置指向本机
/etc/resolv.conf:
nameserver 127.0.0.1
使用命令host或dig验证dns配置
host www.linuxcast.net
dig www.linuxcast.net
错误排查
#配置文件是否有错误
named-checkconf /var/named/chroot/etc/named.conf
#zone文件是否有错误
named-checkzone linuxcast.net linuxcast.net.zone
从服务器是为了备份及负载均衡使用,所有这个域的信息都是由主服务器控制,从服务器启动时,自动从域主服务器抓取指定域的zone配置文件。
slave服务器配置
主服务器需要监听从服务器。
1添加信息
zone "linuxcast.net"{
type slave;
masters { 192.168.1.10; };
file "slaves/linuxcast.net.zone"
};
2启动bind
service named start
service named reload
查看zone文件是否正常抓取
/var/named/chroot/var/named/slaveslinuxcast.net.zone
将本机的dns配置指向本机
/etc/resolv.conf
name server 127.0.0.1
使用命令host或dig验证dns配置
host www.linuxcast.net
dig www.linuxcast.net
一个服务器可以不包含任何域的配置信息,它将接收到的所有dns查询进行递归解析,将解析结果返回给查询客户端,并且将查询结果缓存下来,这样的dns服务器称之为caching name server。通常在局域网中配置缓存服务器是为了加速网络访问;也可以为缓存服务器配置一个上游dns服务器地址,缓存服务器可以给客户提供一个上游dns服务器的地址,我们可以通过以下设置完成:forwarder { 218.30.19.40; };
也可以通过以下选项让服务器转发所有的dns查询到forwarder服务器forword only;
FTP(File Transfer Protocol)是一个应用广泛的互联网协议,为我们提供了一种可靠的方式在网络上进行文件共享。FTP是CS架构的服务,拥有一个服务端和客户端,FTP使用TCP协议作为底层传输协议,提供了数据传输的可靠性,FTP标准端口为20、21,20为数据接口,21为指令接口。
FTP模式
主动模式:Active mode。客户端向服务端发起请求。
被动模式:Passive mode。解决防火墙问题,所有连接由客户端发起。
vsftpd
Linux中应用最为广泛的FTP服务程序叫做vsftpd(very Secure FTP Daemon),dvsftpd为我们第痛了快速、稳定、安全的FTP服务。
安装:yum install -y vsftpd
启动:service vsftpd restart
相关配置文件
/etc/vsftpd/vsftpd.conf :vsftpd主配置文件
/etc/vsftpd/ftpusers:黑名单
/etc/vsftpd/user_list:控制名单
/etc/ftp :FTP共享目录
/etc/vsftpd/xferlog
FTP用户
vdftp使用用户作为管理单位,想要访问某个FTP文件夹必须以特定用户身份登录。
用户类型:正常用户、匿名用户、虚拟用户
默认情况下,vsftpd在安装的时候会创建一个FTP用户,这个用户作为匿名用户使用,ftp用户默认的家目录指向/var/ftp,没有任何访问限制的文件可以通过匿名用户共享。
匿名用户共享
通过lftp命令作为FTP客户端使用。
安装lftp:yum install -y lftp
lftp默认使用匿名用户登录:lftp 127.0.0.1
可以指定登录用户:lftp -u linuxcast 127.0.0.1
FTP基本命令
下载
lftp 127.0.0.1
cd pub
get linuxcast.tar.gz
上传
lftp -u linuxcast 127.0.0.1
cd Downloads
put linuxcast,tar.gz
只有登录使用的用户对某个文件夹具有写权限,就可以进行长传操作。
匿名用户上传
默认配置下vsftpd只允许匿名用户访问,但是不允许匿名用户上传文件。可以通过下列方式修改:
修改配置文件,开启匿名用户上传功能
/etc/vsftpd/vsftpd.conf
anonymous_enable = YES:开启匿名用户(默认)
anon_upload_enable = YES:开启匿名用户上传功能
anon_mkdir_write_enable=YES:打开匿名用户创建文件夹功能
赋予匿名用户上传要使用的文件夹以写权限
chmod 777 /var/ftp/pub
注意:不可以将匿名用户家目录权限设置777,只能设置子目录,否则vsftpd将禁止访问匿名用户的家目录。
DropBox
具有Dropbox功能的目录只能上传,但是无法看到上传的文件。可以通过权限机制来实现:
创建dropbox目录
mkdir dropbox
将dropbox目录权限设置为2733
chmod 2733 dropbox
注:2733代表匿名用户具有写和浏览的权限,但是没有读权限。
NFS(Network File System)是Linux系统至今使用最广泛的文件共享协议,不同于FTP或http需要将文件下载后使用,NFS方式的共享是可以直接使用而不需要下载的。NFS服务奖某个文件夹共享出来,客户端就可以直接通过网络挂在该共享文件夹,挂在后直接使用,就如同使用本机的文件一样,不需要下载。NFS的效率比FTP和http高很多,但是仅适用于局域网内共享,互联网共享主流还是FTP和http。NFS有3个主流版本:NFSv2,3,4。CentOS6、RHEL6默认的NFS共享服务支持所有三个版本的客户端连接。
NFS协议
NFSv2\3需要使用rpc服务,所以计算机的rpc服务必须启动:
service rpcbind start
chkconfig rpcbind on
NFSv4不再需要rpc支持,并且防火墙友好。NFSv2、3即可以使用TCP协议进行传输,也可以使用UDP协议,UDP协议效率较高,但是不保证传输可靠性,不建议使用。NFSv4使用TCP协议进行传输。
NFS服务默认安装,可以通过以下命令启动:
service nfs start
chkconfig nfs on
NFS与防火墙
默认NFS需要使用5个端口,其中4个是动态地,以及rpc服务的端口,动态端口无法通过防火墙,如果需要通过防火墙,则需要配置NFS使用指定的静态端口。
NFS的配置文件是/etc/sysconfig/nfs,添加静态端口设置:
MOUNT_PORT = "4001" -挂载使用端口
STATD_PORT = "4002" -状态使用端口
LOCKD_TCPPORT = "4003" -TCP锁使用端口
LOCKD_UDPPORT = "4004" -UDP锁使用端口
防火墙需要配置允许以上端口,以及NFS协议的2049端口,RPC的111端口允许通过,才能够正常使用NFS。
NFS共享
NFS服务的共享配置文件为/etc/exports
每一个共享占用一行,格式如下:
共享目录 允许的客户主机(选项)
如:
/linuxcast-nfs 192.168.1.0/24(ro,async) -网段内全部主机
/linuxcast-nfs 10.1.1.1(rw,sync) -指定IP地址的主机
/linuxcast-nfs *。Linuxcast.net -域内全部主机
客户端挂载NFS
客户端可以通过mount命令挂载NFS共享,命令格式:
mount -t nfs 192.168.1.100:linuxcast-nfs /mnt
NFS服务器 共享路径
也可以将配置写入/etc/fstab中,在启动时自动挂载:
192.168.1.100:/linuxcast-nfs /mnt nfs defulats 0 0
挂载时可以使用-o指定挂载选项,常用选项如下:
-ro 只读挂载
-rw 读写挂载
vers=4 指定使用NFSv4方式挂载
NFS共享选项
默认选项如下
-ro 只读共享
-sync 所有操作返回前必须已经写入键盘
-wdelay 延迟写操作,等待更多的写操作一起执行
-root_squash 防止远程root用户使用root权限对共享进行访问
常用选项:
-rw 读写共享
-async 延迟写入键盘,可提高速度
-no_wdelay 关闭写延迟,需要与sync选项同时使用
-no_root_squash 关闭root_squash
SMB(Server Message Block)协议是Windows中使用的文件共享协议,我们在Linux系统或者其他类的Unix系统中(BSD,Mac,Unix)可以通过samba服务来实现SMB功能。
samba服务是SMB的一个开源实现,主要功能如下:
SMB协议又称为CIFS(Common Internet File System)协议
samba
通过以下命令安装samba
yum install -y samba
samba拥有三个服务,分别是
smbd
提供文件及打印共享功能,使用139、445端口
nmbd
提供NetBIOS支持,使用137端口
winbindd
提供针对Windows2000/2003/2008的用户及组信息的解析功能
一般作为文件共享使用Samba,则只需要smbd服务
winbindd服务需要单独安装
yum install -y samba -winbind
客户端
windows客户端连接方法
\\192.168.1.100\linuxcast-smb
Linux系统图形界面连接方法
smb://192.168.1.100/linuxcast-smb
Linux使用CLI连接方法
smbclient //192.168.1.100/linuxcast-smb -U linuxcast
通过mount命令挂载smb共享
mount -t clfs //192.168.1.100 =/linuxcast-smb/mnt -o username=linuxcast, password= 'linuxcast'
samba服务
samba服务的主配置文件为:/etc/samba/smb.conf
Samba服务可以作为独立服务器使用,也可以加入Windows的域环境使用。作为独立服务器使用时,Samba使用Linux用户作为其用户但是需要单独创建密码。当加入Windows域环境使用时,一般使用Windows域用户。Samba有两种安全模式:
User-level 默认安全模式,使用用户名、密码进行认证
Share-level 只需要密码即可访问共享,但可能与部分Windows客户端不兼容,不推荐使用
Samba配置文件
配置文件分为三个部分:
-[global] 定义全局性配置
-[homes] 定义对用户家目录的共享配置
-[printers] 定义打印机共享配置
Global配置
smaba常用的global配置如下:
配置工作组信息:
workgroup = LINUXCAST
server string = This is Linuxcast.netWorkGroup
配置安全模式:
security = user
支持的安全模式:
-user 默认
-share 创建匿名共享
-domain
-ads
-server
用户家目录共享
samba服务配置文件默认配置好了用户家目录共享,每一个Linux用户的家目录均可以使用SMB协议访问
[homes]
comment = Home Dictories
browseable = no
writable = yes
为要通过SMB协议访问家目录的用户创建Samba密码:
smbpassword -a linuxcast
启动Samba服务:
service smb start
通过smbclient登录验证用户共享:
smbclient //192.168.1.100/linuxcast -U linuxcast
创建独立共享
可以通过向/etc/samba/smb.conf添加如下配置
[linuxcast-smb]
comment = This is Linuxcast.net demo samba share
path = /linuxcast-smb
valid users = linuxcast nash_su
public = no
browsable = yes
writable = yes
printable = no
create mask = 0765
创建匿名共享
如果我们需要创建一个不需要用户名密码就可以访问的开放共享,可以使用如下配置:
修改samba的安全级别为share:
[global]
security = share
[linuxcast-pub]
comment = Linuxcast.net Public Readonly share
path = /linuxcast-pub
read only = yes
guest only = yes
注意:使用share安全级别可能会与一些Windows客户端不兼容
其他
检查samba配置文件雨大是否正确:
testparm
查看指定服务器的共享:
smbclient -L 192.168.1.100
smbclient -L 192.168.1.100 -U linuxcast
web服务是我们日常使用最多的服务,所有网站都是以Web服务形式为我们呈现。Web服务分为服务端和客户端。客户端就是我们使用的浏览器。服务端就是所访问网站的Web服务,常见的Web服务程序有:IIS、Apache、Nginx、Lighttpd等,不同的Web服务程序针对不同的系统平台有各自的优缺点。
HTTP协议
Web服务端与客户端之间是通过HTTP(Hypertext Transfer Protocol)协议传输数据,当前使用最多的HTTP版本是HTTP/1.1。HTTP使用TCP协议,默认端口号为80。
HTTP方法
客户端通过不同的方法与Web服务器进行交互,常见方法如下:
-get 从服务器获取一个资源
-post 向服务器提交数据(可能会创建一个新的资源)
-put 向服务器提交数据
-delete 删除指定资源
-head 只请求网页的头部信息
HTTP状态码
通过状态码标识返回信息,常见状态码如下:
200 正常,请求成功
301 永久移动,一般用于域名重定向
304 未修改,一般用于缓存
401 禁止访问,未授权
403 精致访问,认证通过,但是没有权限
404 未找到资源
500 服务器内部错误
HTML语言
HTML(Hypertext Markup Language)是绝大多数网页使用语言,几乎所有的网页都是以HTML作为源代码,通过浏览器解释后呈现出来。HTML拥有固定语法,用来存储网页数据,定义不同的元素,如文字、标题、段落、图片等,现代网页通过CSS语言来存储网页的表现样式。
主流的网页设计架构:
内容存储:HTML
网页架构:dib
网页样式:css
我们可以通过在网页上右键,选择查看源代码来查看网页的HTML代码。HTML形式的页面我们称之为静态界面。
动态页面
HTML格式的网页文件只能提供静态的内容,但是我们往往需要针对不同的用户提供不同的网页内容,也就是希望同一个页面针对不同的用户、不同的时间或者不同的状态能够展示不同的内容,这样我们就需要用到动态网页语言。网页动态语言使用特定语言编写了一些程序,在用户访问的时候基于不同的条件生成不同的HTML代码返回给用户浏览器,这样就能实现网页的动态化。现在几乎所有的网站均使用动态语言技术。常见的动态语言有:ASP、asp.net、jsp、php等,新兴的也有使用python或者ruby on rails的。
Web服务架构
因为存在动态页面和静态页面,所以现在Web服务框架也可以分为Web服务器和应用服务器。严格意义上的Web服务器只通过HTTP协议向外提供html、css等网络资源,而动态语言一般需要专门的应用服务器进行计算,因为动态语言是需要进行计算处理后生成html代码的。
加入数据库
对于静态网页来讲,数据是直接与HTML保存在一起的,对于动态语言,数据一般都是统一保存在数据库中,需要的时候按照程序动态生成。
Apache是最为老牌的Web服务器,几乎支持所有的操作系统。具有以下特点:
虚拟主机:一个物理服务器跑多个网站。
淘宝、阿里巴巴都是使用Apache。
CentOS6/RHEL6默认自带的Apache版本是是2.2
相关命令
yum install -y httpd #安装
service httpd start #启动
apache提供的是Web服务,默认使用80(http)和443(https)端口,apache配置文件保存在/etc/httpd/conf.d,模块配置文件保存在/etc/httpd/conf.d/,默认网站日志/etc/log/httpd/
网页服务
默认Apache不需要配置就可以启动,默认网站的根目录为/var/www/html。可以直接访问apache服务器的地址,可以看到一个apache服务器的测试界面。将对外发布的网页存放在/var/www/html下,就可以通过Web浏览器访问了。例如在/var/www/html下新建一个文本文件index.html内容为:Hello, LinuxCast.net,之后使用浏览器访问apache服务器地址就可以看见这个网页。
apache配置
主配置文件保存见上面。
http底层是使用TCP协议。打开一个网页会发送很多请求。让一个请求保持一段时间,称为保活(keep alive)。
KeepAlive off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Listen 80 #监听端口设置,前面加上IP地址
LoadModule auyh_basic_module modules/mod_auth_basic.so
User apache
Group apache
ServerAdmin root@linuxcast.net #网页错误的时候会出现邮箱
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
</Directory>
DirectoryIndex index.html Index.html.var #网页优先级设置
语法检查
service httpd configtest
apachectl configtest
httpd -t
access log:访问记录。
error log:错误信息。
默认的apache的配置只提供一个网站服务,但是我们可以配置一台apache服务器为多个网站提供服务,称为虚拟主机。
虚拟主机分为:
基于IP的虚拟主机
apache服务通过不同的访问IP区分不同的虚拟主机
基于域名的虚拟主机
apache服务通过不同的访问域名区分不同的虚拟主机
基于IP的域名主机还需要购买IP地址。
一般使用基于域名的虚拟主机,但是如果需要搭建SSL的虚拟主机,则必须使用基于IP的虚拟主机。因为一般的网站往往不需要一个独立服务器的硬件资源,使用虚拟主机技术在一个服务器上运行多个网站可以大大节省成本、提高服务器资源的使用率。
确保DNS服务器将不同的域名解析到同一个IP地址上。例如www1.linuxcast.net和www2.linuxcast.net都解析到192.168.1.0
使用host或者dig可以判断:
host www1.linuxcast.net
host www2.linuxcast.net
在apache配置文件中添加如下配置:
NameVirtualHost *:80
<VirtualHost *.80>
ServerName www1.linuxcast.net
ServerAdmin root@linuxcast.net
DocumentRoot /var/www/linuxcast-1
</VirtualHost>
<VirtualHost *.80>
ServerName www2.linuxcast.net
ServerAdmin root@linuxcast.net
DocumentRoot /var/www/linuxcast-2
</VirtualHost>
确保apache用户对网页根目录具有访问权限。
Apache认证
只能用在安全性不高的地方,没有使用其他的东西加密。
htpasswd -cm /etc/httpd/.htpasswd linuxcast #创建密码文件
htpasswd -m /etc/httpd.htpasswd nash_su #第二次不需要c参数
<Directory /var/www/linuxcast-1>
AuthName "LinuxCast Auth"
AuthType basic #基本认证类型
AuthUserFile /etc/httpd/.htpasswd #密码文件
Require vaild-user #打开密码功能
</Directory>
电子邮件
电子邮件服务由很多部分组成,并不是一个服务单独工作就可以完成的。
MUA(MailUserAgent) | 使用的邮件客户端 |
---|---|
MTA(MailTransferAgent) | 电子邮件服务器程序,负责实现SMTP协议,进行邮件传输 |
MDA(MailDeliverAgent) | MTA收到邮件之后,MDA负责将邮件保存到邮件服务器指定位置,MDA也可以进行垃圾邮件处理或防病毒处理 |
MRA(MailReceiveAgent) | MRA负责实现IMAP或POP3协议,与用户永健客户端进行交互,将邮件通过IMAP协议或者POP3协议传递给邮件客户端 |
SMTP(SimpleMailTransferProtocol) | 所有邮件发送都是通过SMTP协议完成 |
IMAP(InternetMessageAccessProtocol) | 用户邮件客户端使用IMAP协议从邮件服务器上抓取邮件 |
POP3(PostOfficeProtocol3) | 用户邮件客户端使用POP3从邮件服务器上抓取邮件 |
邮件服务器架构
MUA
邮件用户代理,用户通过MUA接受邮件。常用的软件有:Outlook,Foxmail等对于个人用户,使用最多的还是网页方式查看电子邮件,这些网页称之为基于Web的MUA
IMAP、POP3
MUA接收邮件使用的是IMAP或POP3这种标准邮件接收协议。IMAP和POP3负责从邮件服务器上讲特定用户的邮件抓取下来。我们可以控制抓取后是否在邮件服务器上保存邮件。
IMAP主要优势在于客户端所有操作都与服务器同步,而POP3则将邮件下载下来,所有操作都在本地,不影响服务器上保存的邮件。IMAP的用户体验更好。
MTA
MUA通过SMTP协议与邮件服务器通信,实现邮件发送。SMTP就是MTA,所有的MTA都是对SMTP的一种实现。LInux中主流的MTA有:sendmail,Postfix。
MTA只负责邮件传输,邮件保存是由MDA完成的。
MDA
负责将MTA接收到的邮件保存在邮件服务器上,通常MTA和MDA紧紧结合在一起。
Linux上,邮件默认保存目录:/var/spool/mail/username
MDA除了保存邮件,更重要的是对邮件进行垃圾邮件处理及病毒扫描。Linux最常用的MDA有:procmail,maildrop。Sendmail、Postfix默认使用的MDA是procmail。
邮件地址格式
用户名@域名,例如:nash_su@linuxcast.net。这种形式的邮件地址因为没有指定该域的邮件服务器,所以必须对该域进行DNS查询,查询该域的MX记录,找出该域的邮件服务器之后,才能够发送邮件。
Postfix是目前LInux下主流的邮件服务器(MTA),主要用来实现SMTP功能。
主要优势:
Postfix工作框架
常用命令
yum install -y postfix
chkconfig postfix on
Postfix默认启动,但是置为本机提供服务,本机的用户之间可以通过各种MUA相互发送邮件。
用户邮箱目录:/var/spool/mail/root
netstat -tupin | grep master
mail -vs "test mail from linuxcast" root@training.linuxcast.net
postfix配置
主配置文件保存目录:/etc/postfix/main.cf
一般不直接编辑该文件,而是使用postconf命令进行编辑或查看
postconf -d #显示Postfix的默认配置
postconf -n #显示Postfix的当前配置
postconf -e key=value #修改Postfix的配置
Postfix命令会修改内容写入main.cf配置文件,这样的配置方式可以避免因为输入错误导致的问题。