[关闭]
@hainingwyx 2017-10-19T23:11:37.000000Z 字数 32359 阅读 3365

Linux学习

Linux


计算机体系结构

北桥:CPU和内存之间的相连控制器,快速实现数据交换,高速总线控制器。

南桥:处理输入设备和输出设备响应的控制器,低速总线控制器。

CPU的主频、一级缓存、二级缓存。缓存在一定意义上也决定了计算机的性能。

内存数据--二级缓存--一级缓存--CPU主频

程序局部性原理:刚刚访问的数据可能再次被访问;访问一个数据,周围的地址的数据也可能被访问。

程序的移植:程序依赖于底层芯片。底层芯片不同,程序的设计会不一样。

汇编语言,通过编译器翻译成机器语言,但是编译器和硬件息息相关。移植很难。

API:高级语言通过中间层(API)装换为底层程序,API就是应用编程接口,不通CPU相同API就可以解决程序移植问题。

硬件架构:CPU芯片的不同系列。

操作系统os

多任务

进程:有生命周期的程序。

POST: Power On Self Test

BIOS: 它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

Linux简介

Linux内核版本:官网

主要发行版本:redhat,CentOS, ubuntu。

ubantu图形界面做得比较好,但是安全性稳定性redhat最好,redhat有部分服务收费,所以CentOS崛起了。fedora软件、功能最全,但是安全性没有保障。目前红旗已经倒闭了。

开源软件

Apache,Nginx,MySQL,Samba,MongoDB,php,python,Ruby,Sphinx。开源且免费使用。

应用领域

企业服务器;服务器趋势:[网站][www.netcraft.com]

嵌入式系统:安卓。(苹果是Unix)

与Linux的区别

字符界面

优势:占用的系统资源更少;减少了出错的可能性

安装操作系统

虚拟机:适用新手初学。

VMware下安装操作系统

  1. 新建虚拟机
  2. 虚拟机硬件设置:启动位置
  3. 虚拟机网络设置:使用桥接

系统分区与格式化

主分区:最多只能有4个

扩展分区:最多只能有一个。主分区加扩展分区最多4个。不能写入数据,只能包含逻辑分区。

格式化:FAT1 6, FAT32, NTFS, EXT2, EXT3, EXT4。

挂载:

安装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可能是不支持的。

命令行Bash的基本操作

shell分为CLI(command line interface)和GUI(Graphical User Interface)两种,是一种命令行解释器。还是一种相当强大的编程语言。

操作系统的shell

提示符

命令组成:命令 [选项] [参数],有多个选项时可以组合使用。

命令提示符

  1. [root@localhost ~]#

其中:

  1. ls:列出当前命令下的所有文件
  2. uname:显示当前系统的基本信息
  3. uname -r:系统的版本号
  4. uname -a:所有操作系统的信息
  5. uname --all:同上
  6. firefox:打开火狐浏览器
  7. ctrl+c:终止当前命令
  8. clear :清除当前屏幕

使用Tab简化输入

bash会自动保存历史记录,可以使用上下按键或者history查看

通过历史记录简化操作

搜索命令历史记录

切换用户

在CLI中,通过su -用户名,命令切换用户

Bash作业管理

脚本

  1. vim hello.sh
  2. #!/bin/bash #一定要加
  3. # The first program
  4. echo -e "\e[1;34m 天上掉下林妹妹\e[0m"

脚本执行

  1. chmod 755 hello.sh
  2. ./hello.sh 赋予执行权限,直接运行
  3. bash hello.sh 通过Bash调用执行脚本

别名

  1. alias 查看系统中所有的命令别名
  2. alias 别名=原命令 设置别名
  3. vi ~/.bashrc 别名永久生效与删除别名
  4. unalias 别名 删除别名

命令生效顺序

用绝对路径或相对路径执行的命令>别名>Bash内部命令>按照$PATH环境变量定义的目录查找顺序找到的第一个命令

快捷键

  1. ctrl+C 终止当前命令
  2. ctrl+l 清屏
  3. ctrl+a 移动到行首
  4. ctrl+e 移动到行末
  5. ctrl+u 从光标所在位置删除到行首
  6. ctrl+z 后台运行命令
  7. ctrl+r 搜索历史记录

历史命令

历史命令默认保存1000条,可以在/etc/profile中修改

  1. history [选项] [历史命令保存文件]
  2. 选项
  3. -c 清除历史命令
  4. -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history,一般是系统退出时自动写入。

基本用法

命令和文件补全

在Bash中,输入命令或者文件时,按“Tab”就会自动进行补全

输出重定向

shell数据流

重定向通常用来保存某命令的输出信息或者错误信息,可以用来记录执行结果或者保存错误信息到一个指定的文件

  1. ifconfig > test.log
  2. ls > test.log 覆盖
  3. ls >> test.log 追加
  4. 错误命令 2>文件 覆盖方式,输出错误输出到指定文件,没有空格
  5. 错误命令 2>>文件 追加方式,输出错误输出到指定文件,没有空格
  6. 命令 > 文件 2>&1 覆盖方式,正确错误同时保存
  7. 命令 >> 文件 2>&1 追加方式,正确错误同时保存
  8. 命令 &> 文件 覆盖方式,正确错误同时保存
  9. 命令 &>> 文件 追加方式,正确错误同时保存
  10. 命令 >> 文件1 2>>文件2 正确输出到文件1,错误输出到文件2
  11. 2>&|:STDOUTSTDERR结合
  12. <:重定向STDINgrep linuxcast < /etc/passwd

输入重定向

  1. wc [选项][文件名]
  2. 选项
  3. -c 统计字节数
  4. -w 统计单词数
  5. -l 统计行数
  6. ctrl + D 开始统计输入字符
  7. 命令<文件 把文件作为命令的输入
  8. 命令<<标识符 标识符之间的内容作为命令的输入
  9. wc < access.log 文件作为输入
  10. wc << ddy ddy作为结束标记,统计字符

管道符

管道通常用来组合不同的命令,以实现一个复杂的功能。多命令协作就是通过管道和重定向完成的。

  1. # 多命令顺序执行
  2. 命令1;命令2 多命令顺序执行,命令之间没有逻辑关系
  3. 命令1&&命令2 逻辑与,命令1正确执行,命令2才会执行
  4. 命令1||命令2 逻辑或,命令1错误,命令2才会执行
  5. 命令1 | 命令2 命令1的正确输出作为命令2的操作对象
  6. ls -l /etc | more
  7. netstat -an | grep ESTABLISHED
  8. netstat -an | grep ESTABLISHED | WC -l
  9. ls -l | grep linuxcast
  10. find / -user linuxcast | gerp video
  11. find / -user linuxcast 2> /dev/null | gerp video

通配符

  1. 命令行通配符
  2. * 匹配零个或多个字符
  3. ? 匹配任意一个字符
  4. [abc] 匹配括号里任意字符
  5. [0-9] 匹配括号中任意字符,-代表一个范围
  6. [^abc] 匹配列表以外字符,[^0-9]`代表匹配一个不是数字的字符
  7. #其他特殊符号
  8. ‘’ 单引号,在单引号中的所有特殊符号都没有特殊含义
  9. "" 双引号,在双引号中特殊符号多有没有特殊含义。"$","`","\"表示调用变量值、引用命令、转义符
  10. `` 反引号,括起来的命令是系统命令,在Bash中先执行。与$()作用相同
  11. $() 引用系统命令
  12. # 注释
  13. $ 调用变量的值,如$name
  14. \ 转义符
  15. echo `ls`
  16. echo $(date)

文件系统

Linux文件系统为一个倒转的单根树状结构,文件系统的跟为"/",文件系统严格区分大小写,路径使用“/”分隔。

Linux树状文件系统结构

当前工作目录

文件名称

列出目录内容

  1. ls -a 显示所有文件,包括隐藏文件
  2. ls -l 显示详细信息,第一参数表示文件类型(-文件d目录|软链接文件),后面是所有者u,所属组g,其他人o的权限(rwx 行),.表示ACL权限
  3. ls -lh 人性化显示
  4. ls -R 递归显示子目录
  5. ls -ld 显示目标目录的信息或者链接的信息
  6. ls -i 显示inode

查看文件类型

复制

  1. cp 源文件 目标文件:复制文件或者目录
  2. 常用参数:
  3. -r:递归复制整个目录树
  4. -p:连带文件属性复制
  5. -d:若源文件是链接文件,则复制链接属性
  6. -v :显示详细复制信息
  7. -a:相当于-pdr

剪贴/改名

  1. mv 文件 目标目录:移动文件,可以同时重命名文件,整个目录不需要-r

删除

  1. touch :可以创建空文件或者更新文件时间
  2. mkdir -p:创建递归目录
  3. rmdir:删除空目录
  4. rmdir -r:删除非空目录
  5. rm 删除文件或目录
  6. 常用参数:
  7. -i 交互式
  8. -r 删除目录中所有内容
  9. -f 强制删除,没有警告提示

绝对路径和相对路径

切换目录:cd,支持目录、命令补全

绝对路径:/usr/log/sa

相对路径:../../var/log/sa:向上退两层

常见目录

文件搜索

locate

  1. locate [文件名]:在后台数据库中快速查找,需要预先建立数据库,数据库默认每天更新一次,可以用updatedb手工建立、更新数据库,数据库路径为:/var/lib/mlocate

搜索配置文件:/etc/updatedb.conf

  1. PRUNE_BIOND_MOUNTS="yes" 开启搜索限制
  2. PRUNEFS= 不搜索的文件系统
  3. PRUNENAMES= 不搜索的文件类型
  4. PRUNEPATHS= 搜索时不搜索的路径

whereis

  1. whereis [命令名] #搜索命令所在路径及帮助文档所在位置
  2. #-b 只查找可执行文件
  3. #-m 之查找帮助文件

PATH环境变量:定义系统搜索命令的路径,可以用echo $PATH查看

find

搜索文件名,如果不知道全部内容需要使用通配符

  1. find 查找位置 查找条件
  2. find . -name *linuxcast* 当前目录查找
  3. find / -name *.conf 根目录查找
  4. find / -perm 777 查找权限为777
  5. find / -type d 返回所有的目录,-l 所有链接
  6. find . -name "a*" -exec ls {} \ 以“a”为开头的文件,作为参数传递给ls命令
  7. find /root -iname install.log 不区分大小写
  8. find /root -user root 按照所有者搜索
  9. find /root -nouser 查找没有所有者的文件
  10. find /var/log/ mtime +10 查找10天前修改的文件
  11. -10 10天内
  12. 10 10天当天
  13. +10 10天前修改的文件
  14. atime 文件访问时间
  15. ctime 改变文件属性
  16. mtime 修改文件内容
  17. find . -size 25k 查找文件大小为25K的文件
  18. -25k 小于25K
  19. +25k 大于25K
  20. -2M 小于2M
  21. find . -inum 262422 查找i节点是262422的文件
  22. find /etc -size +20k -a -size -50k 查找>20k且<50K的文件
  23. -a and
  24. -o or
  25. find /etc -size +20k -a -size -50k -exec ls -lh {} \ 查找文件并显示详细信息
  26. -exec 命令 {} \

通配符

  1. * 匹配任意内容
  2. ? 匹配任意字符
  3. [] 匹配任意一个中括号内的字符

其他查找条件
-perm
-group
-type

grep
在文件当中匹陪符合条件的字符串

  1. grep [选项] 字符串 文件名
  2. 选项
  3. -i 忽略大小写
  4. -v 排除指定字符串

压缩

常用压缩格式:.zip/.gz/.bz2/.tar.gz/.tar.bz2

zip格式

  1. zip 压缩文件名 源文件 压缩文件
  2. zip -r 压缩文件名 源目录 压缩目录
  3. zip testfile.zip testfile
  4. unzip 压缩文件 解压缩.zip文件

gz格式

  1. gzip 源文件 压缩为.gz格式的压缩文件,源文件会消失
  2. gzip -c 源文件 > 压缩文件 压缩为.gz格式,源文件保留,>表示输出重定向
  3. gzip -r 目录 压缩目录下所有的子文件,但是不能压缩目录
  4. gizp -d 压缩文件 解压缩文件
  5. gunzip 压缩文件 解压缩文件

bz2格式

不能压缩目录

  1. bzip2 源文件 压缩为.bz2格式,不保留源文件
  2. bzip2 -k 源文件 压缩后保留源文件
  3. bzip -d 压缩文件 解压缩,-k保留压缩文件
  4. bunzip2 压缩文件 解压缩,-k保留压缩文件

tar

tar用以打包文件

  1. tar -cvf 打包文件名 源文件
  2. 选项
  3. -c 打包
  4. -v 显示过程
  5. -f 指定打包后的文件名
  6. tar -cvf linuxcast.tar linuxcast
  7. tar -xvf 打包文件名
  8. 选项
  9. -x 解打包
  10. tar -xvf linuxcast.tar
  11. tar -zcvf 压缩包名.tar.gz 源文件
  12. 选项
  13. -z 压缩为.tar.gz格式
  14. tar -zxvf 压缩包名.tar.gz
  15. 选项
  16. -x 解压缩.tar.gz格式
  17. tar -jcvf 压缩包名.tar.bz2源文件
  18. 选项
  19. -z 压缩为.tar.bz2格式
  20. tar -jxvf 压缩包名.tar.bz2
  21. 选项
  22. -x 解压缩.tar.bz2格式
  23. tar -zcvf /tmp/test.tar.gz jp ana.cfg
  24. tar -ztvf test.tar.gz 查看压缩文件
  25. tar -cvzf backup.tar.gz /etc 归档,并压缩。

链接命令

  1. ln -s [源文件] [目标文件]:生成链接文件,-s表示创建软链接

硬链接特点

软链接特征

Linux系统常用命令

时间命令
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

  1. shutdown [选项] 时间
  2. 选项
  3. -c 取消前一个关机命令
  4. -h 关机
  5. -r 重启
  6. shutdown -r 05:30 & 后台执行
  7. shutdown -c 取消
  8. shutdown -h now
  9. shotdown -h +10
  10. shutdown -h 23:30
  11. shutdown -r now

其他关机命令

一般不用

  1. halt
  2. poweroff
  3. init 0

其他重启命令

  1. reboot
  2. init 6

这里的数字涉及系统运行级别。

系统运行级别

  1. cat /etc/inittab 修改系统默认运行级别
  2. runlevel 查询系统运行级别

退出登录
操作系统登录的用户是有限的。

  1. logout

挂载命令

查询与自动挂载

  1. mount 查询系统中已经挂载的设备
  2. mount -a 依据配置文件/etc/fstab的内容,自动挂载

挂载命令格式

  1. mount [-t 文件系统] [-o 特殊选项] [设备文件名] 挂载点
  2. 选项
  3. -t 文件系统 加入文件系统类型类指定挂载的类型,可以ext3ext4iso9660等文件系统
  4. -o 特殊选项 可以指定挂载的额外选项
  5. 特殊选项
  6. exec/noexec 设定是否允许在文件系统中执行可执行文件,默认是exec允许
  7. remount 重新挂载已经挂载的文件系统
  8. mount -o remount,noexec /home 重新挂载/boot分区,并使用noexec权限
  9. mount -o remount,exec /home 重新挂载/boot分区,并使用exec权限

挂载光盘

  1. mkdir /mnt/cdrom/ 建立挂载点
  2. mount -t iso9660 /dev/sr0 /mnt/cdrom 挂载光盘
  3. mount /dev/sr0 /mnt/cdrom

卸载光盘

  1. umount 设备文件名或挂载点
  2. umount /mnt/cdrom

挂载U盘

Linux默认不支持NTFS文件系统

  1. fdisk -l 查看U盘设备文件名
  2. mount -t vfat /dev/sdb1 /mnt/usb vfatFAT32

用户登录查看命令

  1. w 查看登录用户信息
  2. who 查看登录用户信息,输出内容相对少
  3. last 查看当前登录和历史登录信息
  4. lastlog 查看所有用户的最后一次的登录时间

VI/VIM

vi是命令行界面下的文本编辑工具最早在1976年开发,当时叫做ex。1991年改进之后,发布了vim,加入了对GUI的支持。vim不仅仅是文本编辑器,还可以文本编辑、文本处理、代码开发。绝大多数哦的LInux系统安装vim,比vi更加强大。

VIM模式

命令模式常用指令

  1. i 光标前插入文字
  2. O 当前行的下一行插入一行
  3. dd 删除整行
  4. u 撤销上一个操作
  5. yy 复制当前行
  6. n+yy 复制n
  7. p 下一行粘贴
  8. P 上一行粘贴
  9. r 替换当前字符
  10. / 查找关键字
  11. h 光标左移
  12. j 光标下移
  13. k 光标上移
  14. l 光标右移
  15. ctrl+f 向下翻页
  16. ctrl+b 向上翻页
  17. ctrl+d 向下翻半页
  18. ctrl+u 向上翻半页

ex模式常用指令

  1. :w 保存当前修改
  2. :q 退出
  3. :wq 保存退出
  4. :q! 强制退出,不保存修改
  5. :x 保存并退出
  6. :set number/nu 显示行号
  7. :! 执行一个系统命令,并显示结果
  8. :sh 切换到命令行,按ctrl+d切换回vim
  9. :ls 列出打开的所有文件
  10. :3 光标快速定位3
  11. /xxx 光标向后搜索xxx,定位
  12. ?xxx 光标向前搜索xxx,定位

VIM指令

[VIM键位指令图][https://thumbnail0.baidupcs.com/thumbnail/82fcbb50d573ab68693675c93f24af43?fid=3759776151-250528-178879544888670&time=1474725600&rt=sh&sign=FDTAER-DCb740ccc5511e5e8fedcff06b081203-Syg7FowBY91HcUIoJuEDEufndes%3D&expires=8h&chkv=0&chkbd=0&chkpc=&dp-logid=6214189783464202718&dp-callid=0&size=c710_u400&quality=100]

vim + 目标文件路径:存在则打开,不存在则新建并打开。

  1. vim abc 打开或者创建abc文件
  2. vim + abc 打开或者创建abc文件,光标在最后一行首
  3. vim +3 abc 打开或者创建abc文件,光标在第三行首
  4. vim +/imooc abc 打开或者创建abc文件,光标在imooc第一次出现处
  5. vim aa bb cc
  6. :n 下一个文件
  7. :N 上一个文件
  8. :prev 上一个文件

磁盘分区MBR与GPT

磁盘的基本概念

磁盘在Linux中的表示

所有设备被抽象为一个文件,保存在/dev目录下。磁盘名称一般为hd[a-z]或者sd[a-z]。IDE设备名称为hd[a-z]。SATA, SCSI, SAS, USB等设备名称为sd[a-z]。

  1. df 查看磁盘分区使用状况
  2. 选项
  3. -a 显示所有文件系统的磁盘使用情况
  4. -T 显示磁盘分区类型
  5. -h 1024单位计算,可以看出磁盘空间合适单位大小
  6. -t 显示指定格式的分区
  7. du 统计磁盘上的文件的大小
  8. 选项
  9. -h 按照1024单位,合适大小显示
  10. -s 指定统计的目标

分区概念
不同分区用:设备名称+分区号,如sda1,sda2,sdb1,sdb2。主流的分区机制分为MBR和GPT两种。
MBR
Master Boot Record。传统的分区机制,应用于绝大多数使用BIOS的PC设备。

前446位引导代码,后面64字节为分区表,2个字节为启动标识。共512字节。

GPT

Guide Partition Table。较新的分区机制

  1. parted 驱动分区工具
  2. select /dev/sdc 切换磁盘
  3. mklabel gpt GPT分区,msdosMBR
  4. print 查看信息
  5. mkpart 添加分区,然后输入分区名称,格式,开始1MB,结束2000MB
  6. print 查看分区信息
  7. mkpart test 2000 3000 命令格式分区,单位是MB
  8. quit 离开

fdisk分区

fdisk是IBM老牌分区软件,是一个基于MBR的分区工具,如果需要使用GPT,则无法使用fdisk进行分区。

文件系统

操作系统通过文件系统管理软件及数据,磁盘分区后需要创建文件系统之后才能够为操作系统使用,创建文件系统的过程称为格式化。

命令mke2fs创建文件系统:mke2fs -t ext4 /dev/sda3

常用参数

mkfs也可以用于创建文件系统,较简单,支持参数也较小

dumpe2fs可以用来查看分区的文件系统信息:dumpe2fs /dev/sdb1

journal日志

带日志的文件系统有较强的稳定性,出错时可以进行恢复。带日志的文件系统使用“两阶段提交”的方式进行磁盘操作。好处是,如果出现意外(断电或者磁盘故障)可以通过查询日志进行恢复工作。缺点是会丧失一定的性能。

e2label可以为文件系统打标签。

fsck用来检查并修复损坏的文件系统。f检查时,文件系统必须卸载。sck /dec/sda2

帮助

man

  1. man 命令 获取指定命令的帮助
  2. man ls 查看ls的帮助
  3. man -f 命令 查看命令帮助级别
  4. whatis 命令 同上
  5. whereis 命令 查看命令所在位置
  6. man -k 命令 可以用来查询包含该关键字的所有帮助文档
  7. apropos 命令 同上
  8. man -5 passwd 查看第5级别的passwd帮助信息

帮助选项

  1. 命令 --help 获取命令选项的帮助
  2. ls --help

shell内部命令帮助

  1. help shell内部命令 获取shell内部命令的帮助
  2. whereis cd 确定是否是shell内部命令

详细命令帮助

Info与man类似,提供的信息更为详细深入。info ls。两者都可以通过"/关键字"查找。

  1. info 命令
  2. 回车 进入子帮助界面(带有*标记)
  3. u 进入上层界面
  4. n 进入下一个帮助小节
  5. p 进入上一个帮助小节
  6. q 退出

很多程序、命令都带有详细的文档,保存在/usr/share/doc目录中,这是程序最为详尽的文档。

用户、组

每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名。每个用户属于一个主组,属于一个或多个附属组,每个组有一个GroupID,每个进程以一个用户身份运行,并受该用户可访问的资源限制。每个登录用户拥有一个指定的shell。

用户ID为32位,为了和老师系统兼容,用户ID限制在60000以下。

使用id可以显示当前用户信息。

使用password可以修改当前用户密码。

相关文件

创建一个用户
useradd nash_su创建用户名为nash_su

可用参数

修改用户信息

usermod 参数 username

参数:

删除用户

userdel nash_su

userdel -r nash_su:同时删除家目录

更加方便管理用户。

创建、修改删除组

  1. groupadd nash_su
  2. groupmod -n nash nash_su:修改组名
  3. groupmod -g newID OldID:修改组ID
  4. 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代表三种权限。

例子

  1. + chmod u+rw linuxcast.net
  2. + shmod g-x linuxcast.net
  3. + chmod go+r linuxcast.net
  4. + chmod a-x linuxcast.net
  5. # 或者以数字的方式修改权限。r=4,w=2,x=1。
  6. # rw = 4+2 =6
  7. # rwx =4+2+1 =7
  8. # r-x =4+1=5
  9. chmod 660 linuxcast.net
  10. #以数字的方式修改的时候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:对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。

设置特殊权限

  1. chmod u+s linuxcat.net
  2. chmod g+s linuxcat.net
  3. chmod o+t linuxcat.net
  4. #或者用数字方式表示
  5. # + suid =4
  6. # + sgid = 2
  7. # + sticky = 1
  8. 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命令查看接口信息。

  1. ifconfig -a 查看所有接口
  2. ifconfig eth0 查看特定接口
  3. ifup eth0:启用特定接口
  4. 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

网络测试命令

  1. # 测试网络连通性:
  2. ping 192.168.1.1
  3. ping www.linuxcast.net
  4. # 测试DNS解析:
  5. host www.linuxcast.net
  6. dig www.linuxcase.net
  7. # 显示路由表
  8. ip route
  9. # 追踪到达目标地址的路由设备
  10. traceroute www.linuxcast.net
  11. # 使用mtr进行网络质量测试(结合了traceroute和ping):
  12. mtr www.linuxcast.net
  13. # 修改主机名
  14. hostname newname
  15. # 查看
  16. hostname
  17. 永久修改:vi /ect/sysconfig/network

故障排查:先看网络配置信息是否正确,IP地址,子网掩码,网关,DNS。查看到达网关是否联通,ping 网关IP地址。查看DNS解析是否正常,host www.126.com。

文本处理

文件浏览:cat more less head tail

基于关键字搜索

  1. # 基于关键字搜索文本
  2. grep 'linnuxcast' /etc/passwd
  3. find / -user linuxcase | gerp Video
  4. # -i 搜索的时候忽略大小写
  5. # -n 显示结果所在行数
  6. # -v 输出不带关键字的行
  7. # -Ax 在输出的时候包含结果所在行之后的指定行数
  8. # -Bx 在输出的时候包含结果所在行之前的指定行数

基于列处理文本

  1. cut -d: -f1 /etc/passwd:基于列处理文本内容,直飞那个分隔符为‘:’,显示第一列
  2. grep linuxcast /etc/passwd | cut -d: -f3
  3. cut -c2-6 /etc/passswd:第2个到第6个字符
  4. # -d 指定分割字符
  5. # -f 指定输出的序列号
  6. # -c 基于字符进行切割

文本统计

  1. wc linuxcast
  2. + -l 只统计行数
  3. # -w 只统计单词
  4. # -c 只统计字节数
  5. # -m 只统计字符数

文本排序

  1. #用以对文本内容进行排序
  2. sort linuxcast
  3. # -r 倒序排序
  4. # -n 指定基于数字进行排序
  5. # -f 忽略大小写
  6. # -u 删除重复行
  7. # --t c 使用c作为分隔符为列进行排序
  8. # -k x 大部分进行基于指定字符分割的排序是,指定基于哪个列排序

删除重复行

除了sort,还有uniq删除重复行(仅是相邻的重复行)

  1. cat linuxcat | uniq

文本比较

  1. # 比较两个文本的区别
  2. diff linuxcast linuxcast-new
  3. diff -u linuxcast linucast-new > final.patch
  4. # -i 忽略大小写
  5. # -b 不略空格数量的改变
  6. # -u 统一显示比较信息,一般用以生成补丁(patch)文件

拼写检查

  1. aspell check linuxcast
  2. aspell list < linuxcast

处理文本内容

  1. # 删除关键字
  2. tr -d 'TMD' < linuxcast
  3. # 转换大小写
  4. tr 'a-z' 'A-Z' < linuxcast

搜索替换

  1. # 关键字linux替换为unix,一行多个时,多个替换
  2. sed 's/linux/unix/g' linuxcast
  3. #1-50行
  4. sed '1, 50s/ linuxcast/unix/g' linuxcast
  5. # 多个指令
  6. 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基础命令

  1. # 安装软件
  2. rpm -i software.rpm
  3. # 卸载软件
  4. rpm -e software
  5. # 升级形式安装
  6. rpm -U software-new.rpm
  7. # rpm通过http\ftp协议安装软件
  8. rpm -ivh http://www.linuxcast.com/software.rpm
  9. # 参数
  10. # -v 显示详细信息
  11. # -h 显示进度条

RPM查询

  1. rpm -qa:列出已经安装的所有rpm软件
  2. rpm -qi software :查询软件的信息
  3. rpm -ql software:查看安装文件
  4. rpm -qf /usr/bin/linuxcast::查询目标文件属于哪个RPM
  5. rpm -qip software.rpm:查询未安装的软件信息
  6. rpm -qlp software.rpm:未安装的软件文件

RPM验证
软件在传播过程中可能会被恶意修改,所以为了安全起见,现代系统都加入了对软件的验证功能。验证一般使用非对称加密算法,所以需要一个密钥。

  1. # 导入密钥
  2. rpm -import 密钥
  3. # 验证rpm文件
  4. rpm -K software.rpm
  5. # 验证已安装的软件
  6. 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常用命令

  1. # 安装
  2. yum install software-name
  3. # 卸载
  4. yum remove software-name
  5. # 升级
  6. yum update software-name

yum查询

  1. #搜索
  2. yum search keyword
  3. #列出全部
  4. yum list (all|installed | recent |update)
  5. # 显示指定软件信息
  6. yum info packagename
  7. # 查询哪个rpm软件包包含目标文件
  8. yum whatprovides filename

创建yum仓库

  1. 将packages所有的rpm包拷贝到一个文件夹中
  2. 通过rpm命令手工安装createrepo软件
  3. 运行命令createrepo -v /rpm-directory,会有repo-data的文件夹
  4. etc新建yum.repo.d,创建yum.repo配置文件
  5. yum clean all,清除缓存,每次运行安装或查询类命令会重建yum缓存
  6. 如果有分组信息(.xml),在运行命令的时候使用-g参数指定分组文件。

日志及rSyslog

日志是用来记录系统运行的纯文本文件。为了保存相关程序的运行状态、错误信息等。Linux系统一般会保存一下类型的日志:内核信息,服务信息,应用程序信息。Linux系统中实现日志功能的服务称为rsyslog。一般默认安装,并设置为自动启动。
可以控制rsyslog服务:service rsyslog status
rsyslog配置文件:/etc/rsyslog.conf
日志消息保存路径:/var/log
通常用tail message显示监控信息。-f实时监控。

Facility
rsyslog通过Facility定义日志消息的来源,以便对日志进行分类。主要有:

kern--内核消息

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

如果需要将日志发送到一个统一的日志服务器,则可以按如下配置:

  1. # 使用UDP协议发送
  2. \*.\* @192.168.1.1
  3. # 使用TCP协议发送
  4. \*.* @@192.168.1.1

DNS基础

域名分为 三个部分:类型、域名、主机名,域名大小写不敏感。一个域名代表一个IP地址。

DNS(Domain Name System)服务由DNS服务器提供。日常使用的支持网络的计算机一般都是作为DNS客户端使用。Linux中一般使用系统底层提供的gethostbyname()功能进行域名解析。解析可以通过三种方式:

可以通过配置文件/etc/nsswitch.conf控制查询顺序

hosts:file dns:先访问hosts文件,在访问DNS服务器

DNS专用查询命令

  1. # 命令host可用于进行DNS查询
  2. host www.linuxcast.net
  3. # 命令dig可用于进行DNS查询,输出详细信息
  4. dig www.linuxcast.net
  5. # 两者都不会使用/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的对应信息,还能保存一些其他信息。

资源记录的常用属性

例如

  1. www IN A 192.168.1.1
  2. mail IN A 192.168.1.1
  3. name class type rdata

资源记录类型

资源记录类型type 表示内容
A IPV4地址
AAAA IPV6地址
MX 邮件记录
CNAME 别名
PTR 指针
SRV 服务资源

DNS服务器类型

ZONE
一般一个域的配置保存在zone文件中,文件的格式标准化。

高级查询

  1. #返回gmal所有的邮件服务器及IP地址
  2. dig -t mx gmail.com
  3. #逆向解析,IP地址到域名
  4. dig -x www.linuxcast.net

BIND

现在使用最广泛的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提供了配置文件模板,可以直接拷贝:

  1. cp -rv /usr/share/doc/bind-9.8.2/sample/etc/* var/named/chroot/etc
  2. cp -rv /usr/share/doc/bind-9.8.2/sample/var/* var/named/chroot/var

示例中的主配置文件内容较多,实验环境下可以删除不需要的内容,最小化配置如下

  1. options{
  2. dictory "/var/named"
  3. listion-on port 53 {127.0.0.1}
  4. listion-on-v6 port 53 {::1:}
  5. };

 域主服务器

所有域的信息都是由与的主服务器控制。
配置步骤:

  1. 在BIND的主配置文件中添加该域的定义
  2. 在/var/named/chroot/var/named中创建该域的zone文件
  3. 编辑zone文件,添加需要的信息
  4. 启动BIND服务或使BIND刷新配置
  5. 使用host或dig命令检测域信息是否正常

1添加linuxcast.net的定义

  1. zone "linuxcast.net"{
  2. type master;
  3. file "linuxcast.net.zone";
  4. };

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刷新配置

错误排查

  1. #配置文件是否有错误
  2. named-checkconf /var/named/chroot/etc/named.conf
  3. #zone文件是否有错误
  4. named-checkzone linuxcast.net linuxcast.net.zone

从服务器配置

从服务器是为了备份及负载均衡使用,所有这个域的信息都是由主服务器控制,从服务器启动时,自动从域主服务器抓取指定域的zone配置文件。

slave服务器配置

  1. 在bind主配置文件中添加域的定义
  2. 启动bind服务或使bind刷新配置
  3. 查看域的zone文件是否正常抓取到/var/named/slaves目录中
  4. 使用host或dig命令检测域信息是否正常

主服务器需要监听从服务器。

1添加信息

  1. zone "linuxcast.net"{
  2. type slave;
  3. masters { 192.168.1.10; };
  4. file "slaves/linuxcast.net.zone"
  5. };

2启动bind

  1. service named start
  2. service named reload
  1. host www.linuxcast.net
  2. dig www.linuxcast.net

缓存服务器配置

一个服务器可以不包含任何域的配置信息,它将接收到的所有dns查询进行递归解析,将解析结果返回给查询客户端,并且将查询结果缓存下来,这样的dns服务器称之为caching name server。通常在局域网中配置缓存服务器是为了加速网络访问;也可以为缓存服务器配置一个上游dns服务器地址,缓存服务器可以给客户提供一个上游dns服务器的地址,我们可以通过以下设置完成:forwarder { 218.30.19.40; };也可以通过以下选项让服务器转发所有的dns查询到forwarder服务器forword only;

FTP共享服务

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基本命令

下载

  1. lftp 127.0.0.1
  2. cd pub
  3. get linuxcast.tar.gz

上传

  1. lftp -u linuxcast 127.0.0.1
  2. cd Downloads
  3. put linuxcast,tar.gz

只有登录使用的用户对某个文件夹具有写权限,就可以进行长传操作。

匿名用户上传

默认配置下vsftpd只允许匿名用户访问,但是不允许匿名用户上传文件。可以通过下列方式修改:

注意:不可以将匿名用户家目录权限设置777,只能设置子目录,否则vsftpd将禁止访问匿名用户的家目录。

DropBox

具有Dropbox功能的目录只能上传,但是无法看到上传的文件。可以通过权限机制来实现:

  1. 创建dropbox目录
    mkdir dropbox

  2. 将dropbox目录权限设置为2733
    chmod 2733 dropbox
    注:2733代表匿名用户具有写和浏览的权限,但是没有读权限。

NFS服务

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服务必须启动:

  1. service rpcbind start
  2. chkconfig rpcbind on

NFSv4不再需要rpc支持,并且防火墙友好。NFSv2、3即可以使用TCP协议进行传输,也可以使用UDP协议,UDP协议效率较高,但是不保证传输可靠性,不建议使用。NFSv4使用TCP协议进行传输。

NFS服务默认安装,可以通过以下命令启动:

  1. service nfs start
  2. chkconfig nfs on

NFS与防火墙

默认NFS需要使用5个端口,其中4个是动态地,以及rpc服务的端口,动态端口无法通过防火墙,如果需要通过防火墙,则需要配置NFS使用指定的静态端口。

NFS的配置文件是/etc/sysconfig/nfs,添加静态端口设置:

  1. MOUNT_PORT = "4001" -挂载使用端口
  2. STATD_PORT = "4002" -状态使用端口
  3. LOCKD_TCPPORT = "4003" -TCP锁使用端口
  4. LOCKD_UDPPORT = "4004" -UDP锁使用端口

防火墙需要配置允许以上端口,以及NFS协议的2049端口,RPC的111端口允许通过,才能够正常使用NFS。

NFS共享

NFS服务的共享配置文件为/etc/exports
每一个共享占用一行,格式如下:
共享目录 允许的客户主机(选项)
如:

  1. /linuxcast-nfs 192.168.1.0/24(ro,async) -网段内全部主机
  2. /linuxcast-nfs 10.1.1.1(rw,sync) -指定IP地址的主机
  3. /linuxcast-nfs *。Linuxcast.net -域内全部主机

客户端挂载NFS

客户端可以通过mount命令挂载NFS共享,命令格式:

  1. mount -t nfs 192.168.1.100:linuxcast-nfs /mnt
  2. NFS服务器 共享路径

也可以将配置写入/etc/fstab中,在启动时自动挂载:

  1. 192.168.1.100:/linuxcast-nfs /mnt nfs defulats 0 0

挂载时可以使用-o指定挂载选项,常用选项如下:

  1. -ro 只读挂载
  2. -rw 读写挂载
  3. vers=4 指定使用NFSv4方式挂载

NFS共享选项

默认选项如下

  1. -ro 只读共享
  2. -sync 所有操作返回前必须已经写入键盘
  3. -wdelay 延迟写操作,等待更多的写操作一起执行
  4. -root_squash 防止远程root用户使用root权限对共享进行访问

常用选项:

  1. -rw 读写共享
  2. -async 延迟写入键盘,可提高速度
  3. -no_wdelay 关闭写延迟,需要与sync选项同时使用
  4. -no_root_squash 关闭root_squash

SMB

SMB(Server Message Block)协议是Windows中使用的文件共享协议,我们在Linux系统或者其他类的Unix系统中(BSD,Mac,Unix)可以通过samba服务来实现SMB功能。

samba服务是SMB的一个开源实现,主要功能如下:

SMB协议又称为CIFS(Common Internet File System)协议

samba

通过以下命令安装samba

  1. yum install -y samba

samba拥有三个服务,分别是

一般作为文件共享使用Samba,则只需要smbd服务

winbindd服务需要单独安装

  1. yum install -y samba -winbind

客户端

samba服务

samba服务的主配置文件为:/etc/samba/smb.conf

Samba服务可以作为独立服务器使用,也可以加入Windows的域环境使用。作为独立服务器使用时,Samba使用Linux用户作为其用户但是需要单独创建密码。当加入Windows域环境使用时,一般使用Windows域用户。Samba有两种安全模式:

  1. User-level 默认安全模式,使用用户名、密码进行认证
  2. Share-level 只需要密码即可访问共享,但可能与部分Windows客户端不兼容,不推荐使用

Samba配置文件

配置文件分为三个部分:

  1. -[global] 定义全局性配置
  2. -[homes] 定义对用户家目录的共享配置
  3. -[printers] 定义打印机共享配置

Global配置

smaba常用的global配置如下:
配置工作组信息:

  1. workgroup = LINUXCAST
  2. server string = This is Linuxcast.netWorkGroup

配置安全模式:

  1. security = user

支持的安全模式:

  1. -user 默认
  2. -share 创建匿名共享
  3. -domain
  4. -ads
  5. -server

用户家目录共享

samba服务配置文件默认配置好了用户家目录共享,每一个Linux用户的家目录均可以使用SMB协议访问

  1. [homes]
  2. comment = Home Dictories
  3. browseable = no
  4. writable = yes

为要通过SMB协议访问家目录的用户创建Samba密码:

  1. smbpassword -a linuxcast

启动Samba服务:

  1. service smb start

通过smbclient登录验证用户共享:

  1. smbclient //192.168.1.100/linuxcast -U linuxcast

创建独立共享

可以通过向/etc/samba/smb.conf添加如下配置

  1. [linuxcast-smb]
  2. comment = This is Linuxcast.net demo samba share
  3. path = /linuxcast-smb
  4. valid users = linuxcast nash_su
  5. public = no
  6. browsable = yes
  7. writable = yes
  8. printable = no
  9. create mask = 0765

创建匿名共享

如果我们需要创建一个不需要用户名密码就可以访问的开放共享,可以使用如下配置:

修改samba的安全级别为share:

  1. [global]
  2. security = share
  3. [linuxcast-pub]
  4. comment = Linuxcast.net Public Readonly share
  5. path = /linuxcast-pub
  6. read only = yes
  7. guest only = yes

注意:使用share安全级别可能会与一些Windows客户端不兼容

其他

检查samba配置文件雨大是否正确:

  1. testparm

查看指定服务器的共享:

  1. smbclient -L 192.168.1.100
  2. smbclient -L 192.168.1.100 -U linuxcast

Web Service

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服务器进行交互,常见方法如下:

  1. -get 从服务器获取一个资源
  2. -post 向服务器提交数据(可能会创建一个新的资源)
  3. -put 向服务器提交数据
  4. -delete 删除指定资源
  5. -head 只请求网页的头部信息

HTTP状态码

通过状态码标识返回信息,常见状态码如下:

  1. 200 正常,请求成功
  2. 301 永久移动,一般用于域名重定向
  3. 304 未修改,一般用于缓存
  4. 401 禁止访问,未授权
  5. 403 精致访问,认证通过,但是没有权限
  6. 404 未找到资源
  7. 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

Apache是最为老牌的Web服务器,几乎支持所有的操作系统。具有以下特点:

虚拟主机:一个物理服务器跑多个网站。

淘宝、阿里巴巴都是使用Apache。

CentOS6/RHEL6默认自带的Apache版本是是2.2

相关命令

  1. yum install -y httpd #安装
  2. 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)。

  1. KeepAlive off
  2. MaxKeepAliveRequests 100
  3. KeepAliveTimeout 15
  4. Listen 80 #监听端口设置,前面加上IP地址
  5. LoadModule auyh_basic_module modules/mod_auth_basic.so
  6. User apache
  7. Group apache
  8. ServerAdmin root@linuxcast.net #网页错误的时候会出现邮箱
  9. DocumentRoot "/var/www/html"
  10. <Directory "/var/www/html">
  11. </Directory>
  12. DirectoryIndex index.html Index.html.var #网页优先级设置

语法检查

  1. service httpd configtest
  2. apachectl configtest
  3. httpd -t

access log:访问记录。
error log:错误信息。

虚拟主机

默认的apache的配置只提供一个网站服务,但是我们可以配置一台apache服务器为多个网站提供服务,称为虚拟主机。

虚拟主机分为:

基于IP的域名主机还需要购买IP地址。

一般使用基于域名的虚拟主机,但是如果需要搭建SSL的虚拟主机,则必须使用基于IP的虚拟主机。因为一般的网站往往不需要一个独立服务器的硬件资源,使用虚拟主机技术在一个服务器上运行多个网站可以大大节省成本、提高服务器资源的使用率。

基于域名的虚拟主机

确保DNS服务器将不同的域名解析到同一个IP地址上。例如www1.linuxcast.net和www2.linuxcast.net都解析到192.168.1.0

使用host或者dig可以判断:

  1. host www1.linuxcast.net
  2. host www2.linuxcast.net

在apache配置文件中添加如下配置:

  1. NameVirtualHost *:80
  2. <VirtualHost *.80>
  3. ServerName www1.linuxcast.net
  4. ServerAdmin root@linuxcast.net
  5. DocumentRoot /var/www/linuxcast-1
  6. </VirtualHost>
  7. <VirtualHost *.80>
  8. ServerName www2.linuxcast.net
  9. ServerAdmin root@linuxcast.net
  10. DocumentRoot /var/www/linuxcast-2
  11. </VirtualHost>

确保apache用户对网页根目录具有访问权限。

Apache认证

只能用在安全性不高的地方,没有使用其他的东西加密。

  1. htpasswd -cm /etc/httpd/.htpasswd linuxcast #创建密码文件
  2. htpasswd -m /etc/httpd.htpasswd nash_su #第二次不需要c参数
  1. <Directory /var/www/linuxcast-1>
  2. AuthName "LinuxCast Auth"
  3. AuthType basic #基本认证类型
  4. AuthUserFile /etc/httpd/.htpasswd #密码文件
  5. Require vaild-user #打开密码功能
  6. </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从邮件服务器上抓取邮件

邮件服务器架构

第1节 邮件服务架构.jpg

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

Postfix是目前LInux下主流的邮件服务器(MTA),主要用来实现SMTP功能。

主要优势:

Postfix工作框架

Postfix工作框架.jpg

常用命令

  1. yum install -y postfix
  2. chkconfig postfix on

Postfix默认启动,但是置为本机提供服务,本机的用户之间可以通过各种MUA相互发送邮件。

用户邮箱目录:/var/spool/mail/root

  1. netstat -tupin | grep master
  2. mail -vs "test mail from linuxcast" root@training.linuxcast.net

postfix配置

主配置文件保存目录:/etc/postfix/main.cf
一般不直接编辑该文件,而是使用postconf命令进行编辑或查看

  1. postconf -d #显示Postfix的默认配置
  2. postconf -n #显示Postfix的当前配置
  3. postconf -e key=value #修改Postfix的配置

Postfix命令会修改内容写入main.cf配置文件,这样的配置方式可以避免因为输入错误导致的问题。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注