01 Linux基础知识--基础命令&安装wps

01 Linux基础知识–基础命令&安装wps

添加系统语言设置

Application —> System Tools —> Settings —> Region & Language

点击加号选择添加的输入法,找到中文输入法后,选择点击右上角的添加即可。

01语言设置

进入虚拟控制台

Ctrl + Alt + F1/F7进入图形界面

Ctrl + Alt + F2 ~ F6进入图形界面

通过man init 可以查看系统运行的等级。

命令补齐Tab

linux的神兵利器,不仅可以提高打印命令的效率,还可以提高命令的正确率。

按一下Tab,如果补齐结果唯一那么直接补齐,如果不唯一则需要按两下显示所有的可能结果。

linux虚拟机

对vmware虚拟机操作的命令,通过rht-vmctl --help获取帮助信息

  • `view`  :launches console viewer of VMNAME
    
  • `start`:obtain and start up VMNAME
    
  • `stop` :stop a running VMNAME
    
  • `poweroff`:if running, force stop VMNAME
    
  • `reset`: poweroff, return to saved or original state, start VMNAME
    
  • `save`: stop, save image, start VMNAME (to DATETIME)
    
  • `restore`:poweroff, restore to save (to DATETIME), start VMNAME
    
  • `listsaves`:list the saves of VMNAME
    
  • `status` :display libvirt status of VMNAME
    
  • `get`:if not here, obtain VMNAME from server
    
  • `remove`:remove VMNAME from system
    
  • `fullreset`:poweroff, reobtain from server, start VMNAME (bad save/image)
    

linux命令控制

  • mkdir:创建一个空目录

    • -p:递归创建目录
  • rmdir:移除一个空目录

    • -p:递归移除一个目录

      02mkdir_rmdir

  • rm:移除一个文件

    • -r:递归移除
    • -f:强制移除
    • -d:移除一个目录
  • touch:改变一个文件的时间戳,但是常常用来创建一个文本文件

    • touch file:创建一个文件

      03touch_rm

  • cdchange directory改变工作路径

    • ~:进入当前用户的家目录
    • ..:进入当前目录的上一级目录
    • -:进入上一个工作目录
  • pwdprint work directory打印当前工作路径

    04cd_pwd

  • lslist查看当前目录下的文件内容

    • -a:列出所有内容,包含隐藏文件,linux 的隐藏文件是以.开始的
    • -l:长格式查看文件详细信息
    • -d:查看目录的信息
    • -S:按照文件大小排序打印
    • -h:按照人类习惯的方式显示文件的大小
  • cat:查看文件的内容

    05cat

  • less :分页浏览文件的内容

    q退出,空格下一屏,b上一屏

    06less

  • head:查看文件内容的前几行

    • -n:指定打印的行数,如果不指定那么就默认打印10
      • head -n 20:查看文件的前20行
  • tail :查看文件内容的后几行

    • -n:制订打印的行数,与head对应

    • -f:实时监控文件的内容

      07head_tail

  • wc:统计文件字符数

    • -llines统计行数

    • -wworld单词数

    • -cbytes字节数目

    • -mchars字符数,中文汉字的时候和上一个参数就有不同的结果了

      08wc

  • cp:拷贝文件

    • cp 目标文件 副本文件
  • mv:移动文件

    • mv 源地址文件名 目标路径,将文件从源地址移动到目标地址

    • mv 源地址文件名 目标路径名和文件名 ,移动文件并重新命名为新的文件名

    • mv 源文件文件名 新文件名,对文件进行重新命名

      09cp_mv

  • whatis:查看某一个命令的功能

    • whatis ls:查看ls命令的功能
  • history:查看系统的历史命令

    • -c:清空当前shell的命令历史,不会真正清除,打开其他终端仍然可以查看到。

    • !num:感叹号加数字,调用命令历史中的第num个命令

    • !string:感叹号加字符串,调用命令历史中最近一次以这些字符开头的命令。

    • 模糊查找:命令终端输入一字符串,然后Ctrl + r,查找包含这个字符串的命令。

      10whatis_history

  • suswitch user切换用户

    • su - 用户名:切换到某用户
  • exit :退出当前用户

  • whoami:查看当前用户

    11su_exit_whoami

  • file:查看文件类型

    • file filename:查看文件类型
  • find:查找文件

    • find /etc/ -name passwd:在/etc/目录下查找名字为passwd的文件
  • who:查看当前在线用户

    12file_find_who.png

linux通配符

  • 不存在的文件使用{}
  • 存在的文件使用[]
  • *:匹配任意字符,匹配任意次
  • ?:匹配任意字符,匹配一次
  • [[:alpha:]]:匹配单个大小写字母
  • [[:lower:]]:匹配单个小写字母
  • [[:upper:]]:匹配单个大写字母
  • [[:digit:]]:匹配单个数字
  • [[:alnum:]]:匹配单个数字或字母
  • [1-9]:匹配1到9的任意数字
  • ^/!:表示不匹配括号内的任何一个字符
    • [^123]:不匹配1、2、3字符

13通配符

中断程序

如果一个程序正在运行使用Ctrl + c中断一个程序的运行

获取命令的帮助信息

linux中有很多的命令,如果需要获取一个命令的帮助信息可以通过以下命令

  • man cmd:通过man手册查询命令的用法
    • []:表示可选参数
    • ...:选项加入的个数可以加多个
    • <>:选项是必须要加的
    • man num cmd:在man手册的第num个手册查看cmd命令
  • whatis cmd:查看命令的功能
  • cmd --help :查看命令的基本用法
    • Usage:标出命令用法

vim编辑器

转载链接,点击查看所有的vim的命令和快捷键,vimlinux上一个十分强大的编辑器,用过的都知道。嘻嘻嘻嘻。。。

linux快捷键

  • 方向键左右:一个字符一个字符移动

  • Ctrl + 左右 :一个字一个字移动

  • Ctrl + a :光标移动到行首

  • Ctrl + e :光标移动到行尾

  • Ctrl + u :光标所在位置删除到行首

  • Ctrl + k :光标所在位置删除到行尾

  • Ctrl + r + 关键字:调出最近一条含有关键字的命令

  • Ctrl + c :撤销以输入的命令

  • Ctrl + d :关闭当前环境

  • Ctrl + L :清空屏幕

  • Ctrl + shift + c :复制

  • Ctrl + shift + v :粘贴

  • Ctrl + shift + t :在现有shell中重新打开一个table

  • Ctrl + shift + n :在shell中打开一个新的shell

  • Ctrl + shift + pageup|pagedown :切换table

  • Ctrl + alt + l : 锁屏

linux目录结构

  • 一级目录:
    • /:根目录
  • 二级目录:
    • /bin:二进制可执行文件也就是系统命令
    • /sbin:系统管理命令存放位置
    • /boot:启动分区,负责系统启动
    • /dev:设备管理文件
    • /etc:大多数系统管理文件markdownpad插入本机图片
    • /home:普通用户的家目录
    • /lib:32位系统库文件存放位置
    • /lib64:64位系统库文件存放位置
    • /media:系统临时设备挂载点
    • /mnt:系统临时设备挂载点
    • /run:系统临时设备挂载点
    • /opt:第三方软件安装位置
    • /proc:系统信息
    • /root:超级用户家目录
    • /srv,/var:系统数据
    • /sys:系统管理,主要是关于内核的
    • /tmp:系统临时文件存放位置
    • /usr:系统用户相关信息数据及用户自定义软件存放位置

14tree

系统输入输出

  • 输出重定向>

    使用>标准输入(0)标准输出(1)标准错误(2)

    标准输入:程序的输入

    标准输出:程序正确的输出

    标准错误:程序错误的输出

    • 1> / >:对标准输出进行重定向输出
    • 2>:对标准错误进行重定向输出
    • &>:标准输出和标准错误都进行重定向输出
    • >>:在输出文件的末尾进行追加输出
    • >:在输出文件的内容先清空再输出

    15stdout

    16stdout_stderr

  • 管道|,把前一条命令的输出变成后一条命令的输入

    • cmd_1 | cmd_2cmd_1的命令输出作为cmd_2的输入,管道只允许正确输入

      find /etc/ -name passwd 2>&1 | wc -l将错误的信息重定向到正确的输出中,所有信息就可以通过管道了。

    • tee:保存输出到文件中

      find /etc/ -name passwd 2>&1 | tee filename | wc -ltee保存信息到文件中

  • 输入重定向<

    • cat > filename << EOF,当输入EOF的时候结束输入,中间输入的内容全部重定向到了,filename文件中

redhat安装wps

网上有很多就不写了随便找个链接放在上面吧。。。。。。

下载地址

安装教程地址,出现问题一般都是依赖问题,自行解决

redhat使用QQ等win软件

请自行了解wine,官网链接地址

02 Linux基础知识--vim&用户管理

02 Linux基础知识–vim学习&用户管理

vim模式

  • 普通模式:浏览文件
  • 插入模式:对文件内容进行编辑,输入i
  • 命令模式:临时更改vim的工作方式,对字符批量处理,输入:
  • 视图模式
  • 选择模式
  • Ex模式

vim配置文件

vim的个人配置文件是~/.vimrc,即在家目录下的一个隐藏文件,如果这个文件不存在那么就新建一个,这个配置文件是当前用户的不会影响到其他用户,如果是想要影响所有的用户的vim配置那么就要修改/etc/vimrc文件,修改文件只需要在文件的最后添加就可以了。

  • set shiftwidth=4:配置自动缩进4个空格,当然要设自动缩进先.
  • set sts=4 :即配置softtabstop为4.输入tab后就跳了4格
  • set tabstop=4 :实际的tab即为4个空格,而不是缺省的8个Q
  • set expandtab:在输入tab后,vim用恰当的空格来填充这个tab
  • 普通模式下按g跳到文件尾

调整工作方式

  • set nu:设置行号
  • set nonu:取消行号
  • set mouse=a:设置鼠标
  • set c:显示行线

字符搜索

  • /:从上向下搜索
  • ?:从下向上搜索

复制/粘贴/删除/剪切/进入视图模式

  • y操作

    • yy:复制一行
    • y3y:复制三行
    • yl:复制字符
    • y4l:复制四个字符
    • yw:复制一个单词
    • y5y:复制五行
    • y + G:复制从光标的当前行到文件结束
  • p操作

    • p:粘贴
  • d操作:与y操作类似,删除的内容在剪切版上

    • dd:删除一行
    • d3d:删除三行
    • dl:删除字符
    • d4l:删除四个字符
    • dw:删除一个单词
    • d5d:删除五行
    • x:在视图模式下删除一个字符
    • d + G:删除光标当前行到最后
  • 命令模式

    • 5,10 move 15:移动5到10行到15行,类似剪切+复制
    • 5,10 delete:删除5到10行
  • c操作:剪切,与y操作和d操作一样,不再赘述

    • 剪切之后vim会进入插入模式,要粘贴需要按Esc退出插入模式
  • o操作:在当前行的下一行插入一个空行

  • u操作:撤销操作,在win上是Ctrl + z

  • Ctrl + r:撤销的撤销,在win上是Ctrl + y

  • vim可视化模式

    • 字符可视化:在普通模式下按小写v,并且可对选中的内容操作
    • 行可视化:在普通模式下按大写V,并且可对选中的内容操作
    • 块可视化:在普通模式下按Ctrl + v,选择块,按大写I键,输入字符,Esc退出。

字符替换

  • :%s/old/new/g:替换oldnew的全部的内容
  • :1,5s/old/new/g:替换1到5行替换
  • :1,5 s/^/words/g:在1到5行行首添加words
  • :1,5 s/$/words/g:在1到5行行尾添加words

编辑多个文件/分屏

  • sp filename:在当前的vim,打开另一个文件
  • 分屏
    • Ctrl + w v:左右分屏
    • Ctrl + w s:上下分屏
    • Crtl + 上/下:上下切屏,用于上下分屏
    • Crtl + 左/右:左右切屏,用于左右分屏
    • Ctrl + w + c:关闭当前的屏幕

光标移动

  • g:跳到文件的行尾
  • gg:跳到文件的行首
  • 命令行模式下直接输入输入,跳到指定行

插入

  • 小写i:光标所在位置插入
  • 大写I:行首插入
  • 小写o:在当前行的下一行插入一个空行
  • 大写O:在当前行的上一行插入一个空行
  • 小写a:光标所在字符的下一个字符插入
  • 大写A:光标所在行的行尾进行插入
  • 小写s:光标所在字符删除并插入
  • 大写S光标所在行删除并插入
  • D:删除当前光标所在位置到行尾

保存退出

  • q:退出
  • w:写入
  • !:强制执行命令,如果没有权限写入则不会保存。
  • x:保存并退出
  • 普通模式下按两下大写Z保存退出

用户管理

用户查看

  • whoami:查看用户
  • id查看用户信息
    • id user:查看用户id
    • -u :查看用户UID
    • -g:查看用户GID
    • -G:查看用户所在的所有组ID
    • -n:需要和-ugG配合使用

用户切换

  • su - user
    • -:切换用户的同时切换shell
  • 只有root切换到其他用户不用输入密码,其他都需要输入密码。
  • 退出用户
    • Ctrl + d:退出当前用户
    • 输入exit退出当前用户

用户的存储

  • /etc/passwd用户信息文件

    用户名密码UIDGID用户说明用户的家目录用户的解释shell

  • /etc/group用户的组id

    组名组密码GID组成员

  • /etc/shadow用户的密码

    认证信息文件

  • /etc/gshadow用户组的密码

    登陆组认证信息

用户增/删等操作

  • useradd username:添加用户,kali如果需要创建用户需要加参数-m

    • -d:指定家目录
    • -G:指定附加组ID
    • -u:指定UID
    • -g:指定GID
    • -M:不创建家目录
    • -p:创建用户的时候设置用户登陆密码
    • -c:指定用户的说明文字,使用双引号"引起来
    • -s:指定用户的默认登陆shell
  • userdel username:删除用户默认不删除家目录

    • -r:删除用户的同时删除用户的家目录,邮箱等参数。彻底删除

    用户创建如果没有设置密码需要设置密码否则不能登陆

    passwd username:设置/修改用户的密码。

组的增/删等操作

  • groupadd:组的添加
    • -g:指定GID
    • -p:设置用户组的密码
  • groupdel:删除用户组
  • usermod:修改用户
    • -L:锁定用户
    • -U:解锁用户
    • -l:更改用户名称
    • -u:更改用户的UID
    • -g:更改用户的所属组
    • -G:更改用户的附加组
    • -G "":删除用户的所有附加组
    • -c string:指定用户说明文字
    • -md path:更改用户的shell
    • -s:更改用户的shell

用户认证信息

文件路径信息/etc/shadow

用户名称用户密码用户密码最后一次被更改的时间用户密码最短有效期用户密码最长有效期密码警告期限用户非活跃天数用户自定义列

修改用户密码

passwd :修改用户密码

  • -l:锁定用户
  • -u:解锁用户
  • -d:清空密码
  • -n:密码的最短有效期
  • -x:密码的最长有效期
  • -w:密码警告期
  • -i:用户的非活跃期
  • -e:使一个密码过期,普通用户再次登陆时需要修改密码
  • -E:设置用户密码到期时间

修改密码注意

  • 普通用户修改密码的时候必须知道永久原始密码
  • 密码不能和帐号类似
  • 密码不能是纯数字
  • 密码不能是有序的数字和字母的组合

文件属性

  • 文件类型

    • -:空文件,或者文本
    • d:目录
    • l:链接
    • b:块设备
    • s:socket文件
    • c:字符设备,鼠标键盘
  • 权限

    • 所有者权限(u):读(r)、写(w)和执行(x)

    • 所属组权限(g):读(r)、写(w)和执行(x)

    • 其他人权限(o):读(r)、写(w)和执行(x)

      文件权限

      • r:读权限,4
        • 普通文件查看文件内容
        • 目录查看目录内的文件列表
      • w:写权限,2
        • 普通文件修改文件内容
        • 目录内的文件的属性修改
      • x:执行权限,1
        • 对文件是否可以通过文件名调用文件内记录的程序
        • 对目录是否能进入
  • 文件的硬链接数

    • 文件来说是硬链接数
    • 目录来说是子目录的个数,包含...
  • 文件属者

  • 文件属组

  • 大小

    • 文件来说是文件大小
    • 目录来说记录的文件的信息,大小是位数+文件名长度
  • 最后一次被修改的时间

  • 文件名

修改文件信息

  • chmod:修改文件权限
  • chown:修改文件属主
    • -R:修改目录本身的所有者,还递归修改内部文件的所属者
  • chgrp:修改文件属组

别名

alias别名,需要添加到配置文件中,否则只会在当前shell有效

03 Linux基础知识--权限控制&进程管理

03 Linux基础知识-权限控制&进程管理

umask

当用户的UID小于199,并且用户名和用户组名相同时,umaks的值为022。否则的话umask的值为002,当创建文件夹时默认的权限为0777 - umask,当创建文件时默认的权限为0777 - umaks - 0111,文件默认取消执行权限,因为执行权限对文件影响大

配置文件

  • 系统配置文件:/etc/profile
  • shell配置文件:/etc/bashrc
  • 某一个用户的shell配置文件:~/.bashrc
  • 使配置文件生效:source 要生效的文件,即让系统重新读取该文件,否则需要内核自举。

特殊权限

  • 粘滞位(sticky)
    • 只针对目录生效,当一个目录有sticky权限时,在这个目录中的文件只能被文件的所有者删除。
    • 设置:chmod o+t 目录chmod 1xxx 目录
  • 强制位(sgid)
    • 对文件作用:只针对二进制可执行文件,当文件有sgid时,任何人执行此文件产生的进程都属于文件的组
    • 对目录:当目录有sgid时,任何人在此目录中建立的文件都属于目录。
    • chmod g+s 二进制文件/目录chmod 2xxx 二进制文件/目录
  • 冒险位(suid)
    • 对文件,任何人执行二进制文件,进程都属于进程的所有人。对文件的权限进行降级操作,避免rm -rf /*的误操作,对rm文件的权限进行降级。
    • chmod u+s 文件chmod 4xxx 文件

acl权限

学会使用man setfcal

设置:setfcal -m u:username:rwx dir

设置:setfcal -m g:groupname:rwx dir

查看:getfacl filename

作用:让特定的用户对特定的文件拥有特定的权限

acl列表查看:

​ 权限位+号表示acl权限开启

查看文件acl开启的权限:getfacl 文件命名

1
2
3
4
5
6
7
8
# file:文件名称
# owner:文件所有者
# group:文件所属组
use::所有者权限
user:用户:指定用户的权限
group::文件所有组的权限
maks::能赋予用户最大的权限
other::其他用户
  • mask

    在权限列表中mask表示能生效的权利值,当用chmod减少开启acl的文件权限后,mask值会发生变化

  • 恢复mask值

    setfacl -m m:rwx filename

  • acl默认权限

    只针对目录设定,且只针对设定完之后新建的文件或目录生效,不会对已存在的文件生效

    setfacl -m d:u:username:rwx dir

系统进程及服务的控制

  • 图形查看进程

  • 命令查看(ps)

    • -A:显示所有进程

    • -a:当前环境中运行的进程,不显示管理信息与当前终端的进程信息

    • -u:有效使用者和相关的进程

    • a:当前环境中的进程,包含管理信息与当前终端的进程信息

    • x:通常与-a参数一起使用,列出系统中所有运行包含tty输出设备

    • -f:显示进程父子关系

    • -e:经常与-f一起使用,显示详细信息,显示系统的资源调用和进程的详细信息

    • -o:显示指定信息

      • comm:显示命令
      • user:进程所有用户
      • group:进程所有组
      • %cpu:进程cpu使用率
      • %mem:进程使用内存使用率
      • pid:进程id号
      • nice:查看优先级
      • stat:状态

      例:ps -o comm,user,group,%cpu,%mem,pid,nice,不要加多余的空格

  • 进程排序

    • ps ax --sort=+%cpu

      • +%cpu:按照CPU使用率正序输出,小 —> 大
      • -%cpu:按照CPU使用率反序输出,大 —> 小

      也可以使用mem进行排序。

  • 进程优先级:范围[-20, 19],数值越小优先级越高。

    • S:表示进程状态
    • l:内存中有锁定空间
    • N:表示优先级低
    • <:表示优先级高
    • +:表示前台运行
    • s:顶级进程
  • 修改优先级

    • renice -n -5 pid,修改进程pid的优先级为-5
    • renice -n -5 程序,开启进程并设置优先级为-5
  • 进程前后台调用

    • Ctrl + z:把占用终端的进程切入后台,释放终端
    • jobs:查看被打入环境后台的进程
    • bg job号:把后台程序运行到后台,不占用终端
    • fg job号 :把程序运行到前台,占用终端
    • fg:调用优先+ > ->什么都么有
    • 在程序最后加&,进程直接后台运行
  • 进程信号:kill -signal pid

    signal信号类型

    • 1:进程重新加载配置
    • 2:删除进程在内存中的数据
    • 3:删除鼠标在内存中的数据,Ctrl + \
    • 9:强行结束单个进程(不可被阻塞)
    • 15:正常关闭进程(可能会被阻塞)
    • 18:运行暂停的进程
    • 19:暂停某个进程(不能被阻塞)
    • 20:把进程打入后台(可以被阻塞)

    例:kill -9 pid,使用kill -l查看所有信号

    killall -9 程序名,根据程序名,批量关闭程序

    pkill -u student -9,根据条件发出信号,踢出用户

  • 常用组合

    • ps ef:显示进程详细信息并显示进程父子关系
    • ps aux:显示系统中所有进程和显示进程用户
    • ps ax:显示当前系统中的所有进程

06 Linux基础知识–-虚拟机安装

06 Linux基础–-虚拟机安装

虚拟机的安装

关于这部分我不想写,个人觉得没必要,多踩坑多百度,自然就能解决。本人装系统已经装吐了,所以真的不想写了,请自行百度。

虚拟机管理命令

  • virt-manager:超级用户执行,开启虚拟机管理器

  • virsh list:查看正在运行的虚拟机

    • virsh list --all:查看所有的虚拟机状态
  • virsh start 虚拟机名:打开一个虚拟机

  • virt-viewer 虚拟机名:查看一个虚拟机

  • virsh shutdown 虚拟机名:关闭一个正在运行的虚拟机,需要进入系统后才可以关闭

  • virsh desroy 虚拟机名:虚拟机直接断电关机

  • virsh undefine 虚拟机名:删除虚拟机

复制/移动虚拟机

  • 第一步拷贝系统文件/var/lib/libvirt/images/目录下的.qcow2的文件,不同的名字表示不同的虚拟机
  • 第二部拷贝配置文件/etc/libvirt/qemu目录下对应的虚拟机的配置文件
  • 第三步创建创建虚拟机:要求拷贝完母盘和配置文件,virsh create 配置文件,需要将母盘移动到/var/lib/libvirt/images目录中否则会提示找不到文件,这个恢复是一次性的
  • 第四步恢复虚拟机virsh define 虚拟机名.xmlxml文件是虚拟机的配置文件

脚本安装虚拟机

.sh结尾

第一行#!/bin/bash指定解释器

  • 自动安装虚拟机脚本,所有的命令都是在一行上,所以需要加 \

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash

    virt-install \
    --cdrom /镜像路径 \
    --ram 1024 \
    --cpus 1 \
    --disk /var/lib/libvirt/images/test.qcow2,bus=virtio,size=10 \
    --name test \
    --network bridge=br0,model=virtio
    • --cdrom:镜像的路径
    • --ram:内存分配的大小
    • cpus:分配的CPU的个数
    • disk:生成的母板的位置,bus:接口的io类型为虚拟iosize:硬盘大小10GB
    • --name:虚拟机的名字
    • --network:网络模式,bridge=br0:从物理网卡br0上桥接,model:模式为虚拟io

脚本制作虚拟机快照

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
qemu-img create -f qcow2 -b \
/var/lib/libvirt/images/$1.qcow2 \
/var/lib/libvirt/images/$2.qcow2

virt-install \
--name $2 \
--ram 1024 \
--cpus 1 \
--disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
--network bridge=br0,model=virtio \
--import &

脚本

$1:脚本的第一个参数

$2:脚本的第二个参数

reset脚本实现

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

virsh destroy $1
rm -rf /var/lib/libvirt/images/$1.qcow2
qemu-img create -f qcow2 \
-b /var/lib/libvirt/images/$2.qcow2 \
/var/lib/libvirt/images/$1.qcow2

virsh start $1
virt-viewer $1 &

07 Linux基础知识–-硬盘挂载&yum管理

07 Linux基础–-硬盘挂载&yum管理

netstat命令

常用组合netstat -antlpe

  • -a:显示所有信息
  • -n:显示数字地址
  • -t:只显示TCP协议
  • -l:只显示监听状态的端口
  • -p:显示进程ID
  • -e:显示额外信息

挂载/取消挂载

  • mount -t type dev dir

    • -t:指定挂载的设备类型,和type类型,可以不指定
    • dev:要挂载的设备
    • dir:挂载的目录点,一般为/mnt,最好是一个空目录
  • umount -t type dir

    • -t:同上,非必选
    • dir:已经挂载的点

yum本地仓库配置

  • 使用mount将系统镜像挂载到/mnt/ISO,如果/mnt/ISO目录不存在则新建/mnt/ISO目录

  • 配置yum仓库文件

    1
    2
    3
    4
    5
    [rhel7.3]

    name=rhel 7.3
    baseurl=file:///mnt/ISO
    gpgcheck=0
    • 第一行:[rhel7.3]:不能有空格,否则会报错
    • 第二行:name:仓库名
    • 第三行:baseurl:路径名
    • 第四行:gpgcheck:是否校验

yum远程仓库

  • 第一步:安装httpd服务,然后使用systemctl start httpd启动服务,使用systemctl enable httpd注册到开机自启中。

  • 第二步:服务器默认加载路径/var/www/html/,可以在该目录下写自己的测试页面。

  • 第三步:增加防火墙策略,否则别的主机无法访问,要么暂时关掉。。。。。。

  • 第四步:在/var/www/html/新建一个目录yum,将镜像挂载到/var/www/html/yum/目录下。

  • 第五步:修改baseurl=http://IP/DIRIP就是远程仓库的IP记得加路径,配置文件和本地仓库一样,只是baseurl的不同。

    例:baseurl不同的主机和不同的路径

1
2
3
4
5
[rhel7.3]

name=rhel7.3
baseurl=http://172.25.254.208/yum/yum_iso/
gpgcheck=0
  • 使用yum clean all yum makecache测试是否配置好了

开机自动挂载

  • 方法一:按照格式修改/etc/fstab即可,可参考点击链接
  • 方法二:/etc/rc.d/rc.local,将挂载文件的命令写进去就可以了,需要绝对路径。然后给该文件加执行权限chmod +x /etc/rc.d/rc.local

yum命令

  • install softwarename:安装softwarename命令
  • reinstall softwarename:重新安装软件softwarename
  • repolist:列出设定yum源信息
  • remove softwarename:卸载软件softwarename
  • list package_name:查看软件源中是否有软件package_name
  • list all:查看所有的软件包
  • list installd softwarename:查看安装的软件名
  • list available:列出可用的软件安装
  • clean all:清空yum的缓存
  • search keyword:根据软件信息搜索软件名
  • yum whatprovides filename:在yum源中查找filename文件的软件包
  • yum update software:更新指定的软件software,不接最后一个参数表示更新所有
  • history list all:查看安装历史
  • history undo ID:撤销安装软件包,ID号通过history list all查询
  • --downloadonly:从yum下载安装包

rpm

rpm -ivh,常用

  • -i:安装
  • -v:显示安装过程信息
  • -h:进行加密方式为hash
  • -e:卸载
  • -qa:查询系统中安装的所有软件名称,使用管道查询软件
  • -pq name.rpm:查询软件包安装后的名字
  • -ql name:查看软件安装生成的文件,不要加.rpm后缀
  • -qlp name.rpm:查看软件安装后生成的文件
  • --force:强制安装,不能忽略依赖性
  • --nodeps:忽略软件的依赖性
  • -qi :查看软件的信息,由软件的开发商写
  • --scripts:检测软件在安装或者卸载过程中执行的动作

第三方源的搭建

学会man createrepo-v显示过程

把所有的rpm软件包放到一个文件夹中,执行createrepo -v /Software/,生成第三方的仓库,该目录下会生成一个repodata的文件,修改yum.repo将生成的第三方的仓库路径添加到配置文件中

04 Linux基础知识--进程监控&ssh&文件传输

04 Linux基础–进程监控&ssh&文件传输

进程动态监控

top:动态查看进程

  • 1显示CPU每个核的负载
  • s修改刷新频率
  • c依照CPU负载排序
  • m依照内存大小排序
  • h获取帮助
  • u查看指定用户的进程,需要输入用户名
  • k对指定用户进程发起信号
  • q退出
PID USER PR NI VIRT
进程id 进程用户 人物优先级 优先级值 进程使用的虚拟内存
RES SHR %CPU %MEM TIME COMMAND
进程使用的未被换出的物理内存大小 共享内存 CPU使用率 内存使用率 使用CPU的时间总计 命令名

控制服务systemctl

C/S:server、client

  • pstree:查看进程树
  • systemd系统初始化进程
  • 进程控制命令systemctl
    • sshclient ===> sshdserver
    • status:查看服务状态
    • start:开启服务
    • restart:重启服务
    • stop:停止服务
    • reload:重新加载服务配置
    • disable:设置服务,开机不自启动
    • enable:设置服务,开机自启动
    • mask:设置无法启动,注销服务
  • 查看端口
    • netstat -antulpe | grep :22,查看22端口的程序

linux查看本机ip

  • ip addr show,推荐使用,可以查到所有的ip地址
  • ifconfig,只能查看到一个ip地址

修改hostname

hostnamctl set-hostname yourhostname,将yourhostname改成你要设置的名字即可。

ssh服务

ssh username@ip,文本方式链接

  • username:登陆的用户名
  • ip:目标主机ip
  • -X:在链接成功后可以打开图形,比如摄像头cheese… …

sshd,表示服务,在服务器端使用

ssh,客户端使用,连接远程服务。

  • sshd = secure shell

第一次链接会在家目录下生成~/.ssh/known_hosts`认证文件

  • key认证

    • 第一步:ssh-keygen,在~/.ssh/生成公钥和密钥,三次回车,不设置就回车。

    • 第二步:进入~/.ssh/,有两个文件id_rsa(私钥)id_rsa.pub(公钥)

    • 第三步:使用公钥加密主机ssh-copy-id -i id_rsa.pub root@ip

    • 第四步:把id_rsa发送给目标主机,且需要放在~/.ssh目录下。

      1
      2
      3
      4
      ssh-keygen
      cd ~/.ssh/
      ssh-copy-id -i id_rsa.pub root@172.25.254.108
      scp ./id_rsa root@172.25.254.108:/root/.ssh/

      ssh远程连接目标主机就不需要再输入密码,完成所有操作了。。。

  • 访问控制

    配置文件:/etc/ssh/sshd_config

    • 字段:PasswordAuthentication yes,是否允许用户通过密码登陆
    • 字段:PermitRootLogin yes,是否允许root登陆
    • 字段:Allowusers username1 username2,允许登陆的白名单,多个用户用空格分隔开
    • 字段:Denyusers username1 username2,不允许登陆的黑名单,多个用户用空格分隔开
  • 配置文件生效需要重启sshd服务

  • 查看配置文件的写法:man 5 sshd_config

  • 登陆信息:vim /etc/motd,在用户登陆的时候提示信息,文件内容就是登陆后的显示信息。

  • 用户审计:

    • w -i:查看正在登陆系统用户,显示ip
    • w -f:查看使用来源,显示主机名
    • last:查看谁登录过你的shell
    • lastb:试图登录但是没有成功

scp服务

scp sendfile username@ip:absolute_path,上传文件

scp username@ip:absolute_path_file dir ,下载文件

  • -r:下载/上传目录时会用到,递归下载/上传文件
  • -p:保存文件的信息(时间戳…)下载/上传到目的主机
  • absolute_path绝对路径

忘记root密码???

  • 第一步:重启电脑,进入系统选择界面按e
  • 第二步:找到倒数第二行把ro当前行的后面的内容删掉。并把ro改为rw rb.break,再按Ctrl + x,启动系统。
  • 第三步:进入系统后,chroot /sysroot/进入系统分区,并使用passwd root修改root用户密码。
  • 第四步:在根目录下创建touch /.autorelabel,如果不创建系统启动会出问题。
  • 第五步:使用两次exit来重启电脑,使用修改后的密码登录。

rsync 远程同步

速度快,默认会忽略文件属性,链接文件,设备文件

参数:

  • -r:同步目录
  • -p:同步权限
  • -o:同步文件所有人
  • -g:同步文件所有组
  • -t:同步文件时间戳
  • -l:同步链接文件
  • -D:同步设备文件

查看文件大小

du -sh dir

参数:

  • -s:显示总的文件大小
  • -h:人类容易辨别的字节大小单位

打包文件 tar

-x:解包

-c:创建一个压缩包

-v:显示过程详情信息

-f:指定打包后的名字

-t:查看归档文件内容

-r:添加文件到归档,第一个为归档,后面的是要添加的文件

--get:解挡指定文件,tar f etc.tar --get file

--delete:删除归档指定的文件,tar f etc.tar --delete file

-C:指定解档目录

-z:使用gzip压缩

-J:使用xz压缩

-j:使用gzip2压缩

压缩

  • zip压缩,压缩效率高,推荐使用
    • zip -r filename.tar.zip etc.tar
    • unzip filname.tar.zip
  • gzip压缩,压缩效率高,推荐使用+1
    • gzip filname.tar
    • gunzip filname.tar.gz
  • bzip2压缩,压缩效率低
    • bzip2 filname.tar
    • bunzip2 filname.tar.bz2
  • xz压缩,压缩效率最高,很慢
    • xz filname.tar
    • unxz filname.tar.xz

08 Linux基础知识–-延时任务&邮件管理

08 Linux基础知识–-延时任务&邮件管理

kickstart自动安装系统脚本

  • 第一步:yum install -y system-config-kickstart httpd安装服务
  • 第二步:system-config-kickstart,配置安装文件
  • 第三步:给ks.cfg添加安装的脚本,即安装系统基础安装包和配置yum等
  • 第三步:使用ksvalidator对配置文件进行检测
  • 第四步:共享配置文件,使用httpd服务共享文件
1
2
3
4
5
6
7
8
9
10
#!/bin/bash

virt-install \
--name $1 \
--ram 1024 \
--cpus 1 \
--disk /var/lib/libvirt/images/$1.qcow2,bus=virtio,size=10 \
--network bridge=br0,model=virtio \
--location http://172.25.254.8/yum/ \
--extra-args ks=http://172.25.254.8/ks.cfg &

ks.cfg的配置文件,需要添加安装包文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$Jpz4OVkL$kzqAMWU4j3iXUZMZOX.nA.
# Use network installation
url --url="http://172.25.254.8/yum/"
# System language
lang en_US
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System timezone
timezone Africa/Abidjan
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --fstype="swap" --size=1024
part /boot --fstype="xfs" --size=400
part / --fstype="xfs" --grow --size=1

%packages
@base
lftp
%end

%post
cat >> /etc/yum/yum.repo.d/rhel.repo << EOF
[rhel]

nam=pip
baseurl=http://172.25.254.8/yum/
gpgcheck=0
%end

延时任务

  • at 14:27:定时任务,在某一格式执行什么命令,Ctrl + d发起任务
  • at now+1min:一分钟后执行任务
  • at -l:查看任务列表
  • at -c ID:查看任务的内容
  • at -r ID:取消任务执行
  • 当任务有输出时,输出会以邮件的形式发送给at任务的发起者,例echo hello
  • at的黑白名单
    • /etc/at.denyat命令的黑名单中的用户无法执行定时任务
    • /etc/at.allowat命令的白名单,之有名单中出现的用户才可以执行at命令,优先级高于黑名单,当白名单存在黑名单失效。如果 不存在则新建。

定时任务

systemctl status crond,查看定时任务控制服务

  • crontab -e -u root:编辑定时任务
  • 定时任务格式:分、时、日、月、周
  • * * * * * 表示每分钟执行一次
  • */2 * * * *:每两分钟执行一次
  • */2 09-17 * * *:每9点到17点每隔两分钟执行一次
  • */2 */2 * * *:每过两小时零两分钟执行一次
  • */2 09-17 1 3,5 5:三月和五月的每周周五和三月一日、五月一日,9点到17点每两分钟执行一次
  • */2 09-17 * * 5:每周周五09点到17点每隔两分钟执行一次
  • 当程序开启时定时任务生效

配置文件路径/var/spool/cron/username最后一个为用户名

  • crontab
    • crontab -e -u:编辑指定用户的定时任务表
    • crontab -l -u:查看指定用户的定时任务
    • crontab -r -u:删除指定用户的定时任务
  • 自定义定时配置文件,该方式的定时任务使用crontab -l不能查看
    • /etc/cron.d/在该目录下新建文件就可* * * * * root action
  • 黑白名单
    • /etc/cron.deny:黑名单中的用户无法执行定时任务
    • /etc/cron.allow:命令的白名单,之有名单中出现的用户才可以执行at命令,优先级高于黑名单,当白名单存在黑名单失效。如果 不存在则新建。
    • 这两个名单都不会影响/etc/cron.d/目录中的定时任务的发起和执行

查看邮件

  • mail -u root:查看指定用户的邮件,不指定则查看当前用户的邮件
  • 1:查看第一封邮件
  • q:退出
  • > /var/spool/mail/root:清空邮箱

系统临时文件的管理

  • 临时文件的存储位置:/tmp/
  • 临时文件的配置文件:/usr/lib/tmpfile.d/tmp.conf
    • 自定义清理文件westosd /mnt/westos 777 root root 5s
  • 生成文件的systemd-tmpfiles --create /usr/lib/tmpfile.d/读取目录里所有文件并按照其规则去建立
  • 清理文件的systemd-tmpfiles --clean /usr/lib/tmpfile.d/tmp.conf

05 Linux基础知识–-日志&网络配置

05 Linux基础–-日志&网络配置

日志采集服务

查看日志状态:systemctl status rsyslog.service

获取配置文件的帮助信息:man 5 rsyslog.conf

日志:*.*:第一个*表示什么类型,第二个*表示该服务程序的日志级别

  • 日志的位置:/var/log/

    • /var/log/messages:服务信息日志
    • /var/log/secure:系统登录日志
    • /var/log/cron:定时任务日志
    • /var/log/maillog:邮件日志
    • /var/log/boot.log:系统启动日志
  • 日志的类型:

    • auth:pam产生的日志
    • authpriv:ssh,ftp等登录信息的验证信息
    • cron:时间任务相关
    • kern:内核
    • lpr:打印
    • mail:邮件
    • mark(syslog)-rsyslog:服务内部的信息,时间标识
    • news:新闻组
    • user:用户程序产生的相关信息
    • uucp:unix tounix copy,unix主机之间相关的通讯
    • local 1-7:自定义的日志系统
  • 日志级别:记录的内容逐次减少

    1. debug调试信息:有调式信息的,日志信息最多
    2. info重要事件 :一般信息的日志,最常用
    3. notice重要通知:最具有重要性的普通条件的信息
    4. warning警报:警告级别
    5. err错误:错误级别,阻止某个功能或者模块不能正常工作的信息
    6. crit临界:严重级别,阻止整个系统或者整个软件哎能不能正常工作的信息
    7. alert:需要立即修改的信息
    8. emerg系统不可用:内核崩溃等严重信息
    9. none:什么都不记录
  • 例:*.*;mail.none /var/log/message,把所有服务的所有日志信息保存到/var/log/meesage文件中,不保存mail的信息。

日志同步

配置文件/etc/rsyslog.conf,修改完重启服务systemctl restart rsyslog

  • 客户端(日志发送方):*.* @ipaddr:一个@表示使用udp协议,两个@表示使用tcp协议
  • 服务端(日志接收方):$ModLoad imudp$UDPServerRun 514,开启接收的模块,并且打开接收的端口
  • 设置防火墙可以通过客户端的日志 / 关闭防火墙

日志采集的格式:/etc/rsyslog.conf

  • $template LOGFMT, "%timegenerated% %FROMHOST-IP% %syslogtag% %msg% \n"
    *.*    /var/log/test;LOGFMT
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    * `LOGFMT`:相当于定义了一个变量

    * `%timegenerated%`:显示日志时间

    * `%FROMHOST-IP%`:显示主机IP

    * `%syslogtag%`:日志记录目标

    * `%msg%`:日志内容

    ## 时间同步

    配置文件`/etc/chrony.conf`、服务程序

    * 服务端(时间源):

    allow 172.25.254.0/24 ##允许那些客户端来同步本机时间,在配置文件的22行 local stratum 10 ##本机不同步任何主机的时间,本机作为时间源,在配置文件的29行
    1
    2
    3

    * 客户端(同步时间源):

    server 172.25.254.100 iburst ##本机立即同步172.25.254.100这台主机的时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93

    设置完后需要重启同步时间服务:`systemctl restart chronyd.service`

    查看时间同步源:`chronyc sources -v`

    ## 查看系统时间

    `timedatectl`:查看系统详细

    `timedatectl list-timezones `:查看时区列表

    `timedatectl set-timezones Asia/Shanghai`:设置时区

    `timedatectl set-time "2018-11-11 11:11"`:设置时间

    `timedatectl set-local-rtc 0/1` :是否使用UTC时间

    * `0`设置为UTC时间,`1`设置为LOCAL时间

    `cat /etc/adjtime`:查看时间

    ## 日志查看

    `journalctl`:日志查看工具

    * `-n 3`:查看最近三条日志
    * `-p err`:查看错误日志
    * `-o verbose _PID=pid _COMM=command`:查看指定pid的日志,该进程可以是已经死亡的
    * `--since "2018-10-13 12:00"`:查看从什么时间开始的日志
    * `` --until "2018-10-14 12:00" `:查看从什么时间结束的日志

    使用`systemd-journal`保存系统日志

    1. `mkdir /var/log/journal`建立一个目录保存`journal`日志
    2. `chgrp systemd-journal /var/log/journal`
    3. `chmod g+s /var/log/journal`
    4. `ps aux | grep systemd-journald`
    5. `killall -1 systemd-journald-pid`
    6. `ls /var/log/journal`,查看保存的文件

    ## 网络配置

    1. IP:由32位bit位组成

    2. 子网掩码:用来划分网络区域。

    3. IP通信判定:网络位一致,主机位不一致

    4. 网络通信工具:`ping`

    5. `ifconfig`

    * `ifconfig device ip/24`:设置ip地址和子网掩码


    * 关闭网卡接口:`ifconfig 网卡名 down`
    * 开启网卡接口:`ifconfig 网卡 up`
    * 查看网卡所有的`ip`:`ip addr show`

    6. 修改ip

    * 图形修改

    * 图形界面设置` nm-connection-editor `
    * 命令模式下图形修改`nmtui`

    * 命令修改

    * `nmcli `:后面可以加参数对网卡进行配置和连接与断开,`NetworkManager`服务必须开启,`device_name`为网卡名
    * `nmcli device show`:查看网卡信息
    * `nmcli device status device_name`:查看网卡服务接口状态信息
    * `nmcli device connect device_name`:启用网卡
    * `nmcli device disconnect device_name`:关闭网卡接口
    * `nmcli connection show`:查看网卡配置信息
    * `nmcli connection down device_name`:关闭网卡
    * `nmcli connection up device_name`:开启网卡
    * `nmcli connection delete device_name`:删除网卡信息

    * 修改配置文件:`/etc/sysconfig/network-scripts/device_name`,`device_name`为网卡的配置文件名字,自行替换`redhat7/centos7`一般为`ifcfg-eth0`,配置的文件名为`ifcfg-`开头。

    * `DEVICE=eth0`:网卡的设备名
    * `ONBOOT=yes`:开机是否自启
    * `BOOTPROTO=dhcp/static/none`:三个中的一个,`dhcp`动态分配,`static`静态IP,`none`类似`static`
    * `IPADDR=172.25.254.108`:`IP`地址
    * 配置多个`IP`,`IPADDR0`、`IPADDR1`、... ...
    * `PREFIX=24`/`NETMASK=255.255.255.0`:子网掩码
    * 配置多个子网掩码对应`IP`,`PREFIX0`、`PREFIX1`、... ...
    * `NAME=eth0`:配置名字

    示例:

    单个IP配置

    DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=172.25.254.108 #IP设置仅供参考,不同情况,不同IP PREFIX=24 GATEWAY=172.25.254.111 # 网关配置,见下面 NAME=eth0
    1
    2
    3

    多个IP配置

    DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR0=172.25.254.108 #IP设置仅供参考,不同情况,不同IP PREFIX0=24 GATEWAY0=172.25.254.111 # 网关配置,见下面 IPADDR1=172.25.0.108 #IP设置仅供参考,不同情况,不同IP PREFIX1=24 GATEWAY1=172.25.254.222 # 网关配置,见下面 NAME=eth0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52

    7. lo回环接口

    > 可以用来测试本机的通信协议是否完好,用于本机内部的通信。

    8. 网关配置

    > `vim /etc/sysconfig/network`,全局网关,针对没有设定网关的网卡配置文件
    >
    > 查看防火墙策略:`firewall-cmd --list-all`
    >
    > 添加防火墙策略:`firewall-cmd --permanent --add-masquerade`,主机作路由转换
    >
    > 重新加载服务:`firewall-cmd --list-all`

    9. DNS解析配置

    > `vim /etc/resolv.conf`,配置文件位置,`DNS`服务器`nameserver 114.114.114.114`,也可以在网卡的配置文件中设置`DNS1=IP`。
    >
    > `/etc/hosts`,本机暂存域名和IP的键值对,本地解析文件`IP 域名`
    >
    >
    >
    > 在网络配置文件中可以添加`DNS1=8.8.8.8`或者其他的`IP`地址
    >
    > 如果远程的`dns`和本地的`host`域名解析冲突,通过修改`/etc/nsswitch.conf`来设置优先级别,在第39行。

    10. dhcp服务设置自己的DNS

    > 当网卡使用`dhcp`模式的时候网卡会使用`dhcp`服务器的`DNS`,如果不需要`dhcp`的DNS提供的信息,把`/etc/sysconfig/network-scripts/ifcfg-eth0`里面加上`PEERDNS=no`,使用自己的`DNS`不使用`dhcp`提供的服务

    11. man手册的帮助文档

    > `/usr/share/doc/initscripts-9.49.37/sysconfig.txt`,其中的数字会不同版本号的原因,按`Tab`补齐就可以了。

    ## dhcp服务

    配置文件`/etc/dhcp/dhcpd.conf`拷贝模板配置文件`cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf`

    * `yum install -y dhcp`,安装`dhcp`服务

    * `cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf`

    * `vim /etc/dhcp/dhcpd.conf`,编辑配置文件

    * `subnet`:分配的IP地址
    * `netmark`:子网掩码
    * `range IP1 IP2;`:分配的IP池范围
    * `option routers IP;`:网关

    * 完整配置文件示例

    # dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # Use this to enble / disable dynamic dns updates globally. #ddns-update-style none; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. # This is a very basic subnet declaration. subnet 172.25.254.0 netmask 255.255.255.0 { range 172.25.254.50 172.25.254.80; option routers 172.25.254.250; }

*   服务端:`/var/lib/dhcpd/dhcpd.leases`

*   客户端:`/var/log/message`

09 Linux基础知识--磁盘管理

09 Linux基础–磁盘管理

磁盘管理

  • df -h:查看已经挂载的设备
  • fdisk -l:查看系统中所有的设备,包括未识别的
  • cat /proc/partitions:参看系统已经挂载的硬盘
    • sda:第一块硬盘,adb第二块分区,… …
    • sr0:光驱
  • blkid:系统可以使用的设备

设备的挂载和卸载

  • 设备名称
    • /dev/*d*:例/dev/hd0/dev/hd1/dev/sda/dev/sdb/dev/sda1/dev/sdb1
    • /dev/sr0:光驱
    • /dev/mapper/*:虚拟设备(用软件模拟出来)
  • 设备的挂载
    • mount:查看挂载信息
    • mount 设备 挂载点,使用-t指定挂载格式
    • mount -o ro 设备 挂载点:只读挂载
    • umount 挂载点:卸载挂载
    • mount -o remount,rw /mnt/,对设备重新挂载,改变其挂载点的属性
  • 解决设备正忙问题
    • lsof 设备:查看谁正在使用设备
    • fuser -vm 设备:查看谁在用设备
      • -k:查看并踢出谁正在用设备
  • 手动同步分区表
    • partprobe:同步分区表

磁盘分区

  • dd if=/dev/zero of=/dev/vda bs=446 count=1:从if截取446个字节,拷贝到of所指向的位置,bs字节大小,count写入次数。
  • fdisk 磁盘
    • n:创建新分区
      • p:主分区
      • e:拓展分区里面分的区叫逻辑分区
    • w:写入分区
    • p:打印分区表
  • 第一步:fdisk -l
  • 第二步:fdisk /dev/vdb
    • d:删除
    • n:新建分区
    • p:显示分区信息
    • q:退出
    • t:修改分区id,使用L查看分区标签
      • swap:格式化交换分区mkswap /dev/vdb6
    • w:保存
  • 第三步:建立主分区,主分区最多四个,所以第四个分区默认为拓展分区。
    • n新建
    • p主分区
    • 默认id
    • 分区起始默认
    • 分区大小自己指定

格式化分区

  • mkfs.*:使用.后面的参数,选择不同的格式进行格式化
  • mount -a:挂载/etc/fstab的文件重新执行

SWAP分区管理

  • 划分分区:t
  • 设置标签:交换分区为82号标签
  • 格式化:mkswap /dev/vdb6
  • 挂载:swapon -a /dev/vdb6
  • 卸载:swapoff /dev/vdb6
  • 查看挂载分区:swapon -s
  • 修改/etc/fstab进行开机自启动

用户参数配额

mount -o usrquota /dev/sdb7 /public挂载时激活参数

edquota -u USER:修改第一个hard的值,单位为kb

Filesystem blocks soft hard inodes soft hard
文件系统 块大小 软限制(超过警告) 硬限制(客观限制,超过丢失) inode节点个数 软限制(超过警告) 硬限制(客观限制,超过丢失)

/etc/fstab配置文件添加内容:/dev/vdb2 /public/user xfs.userquota 0 0

磁盘加密

cryptsetup加密文件,加密时需要在格式化的时候进行加密

  • 加密:cryptsetup lucksFormat /dev/vdb8,输入大写YES和密码
  • 打开:cryptsetup open /dev/vdb8 namename名字可以自己取
  • 格式化mkfs.xfs /dev/mapper/name
  • 挂载mount /dev/mapper/name /mnt
  • 关闭:cryptsetup close name,挂载原始设备也不能查看其中内容

10 Linux基础知识–LVM卷&ftp&防火墙

10 Linux基础知识–LVM卷&ftp&防火墙

LVM逻辑卷

  • pv物理卷,被lv命令处理过的物理分区
  • vg物理卷组,被组装到一起的物理卷
  • pe物理扩展,lvm设备的最小单元,lvmpe的最小单元
  • lvm逻辑卷,直接使用的设备,可以增大缩减并保持原有数据不变
  • 创建LVM
    1. pvcreate /dev/vdb1,创建一个分区,前提需要一个分区,使用fdisk分区,标签为LVM
    2. ``vgcreate vg0 /dev/vdb1`,后面的参数是,vg的名字和要组合的硬盘内存
    3. lvcreate -L 20M -n lv0 vg0
    4. mkfs.xfs /dev/vg0/lv0,格式化分区
    5. mount /dev/vg/lv0 /mnt,挂载

查看信息

  • pvs:查看pv列表信息
  • lvs:查看lv列表信息
  • vgs:查看vg列表信息

LVM减小和扩容

xfs格式

  • 当vg剩余容量充足
    • 扩展:lvextend -L 80M /dev/vg0/lv0
    • 文件系统拉伸:xfs_growfs /dev/vg0/lv0
  • 当vg不足时,需要拓展vg大小
    • pvcreate /dev/vdb2
    • vgextend vg0 /dev/vdb2
    • lvextend -L 200M /dev/vg0/lv0
    • xfs_growfs /dev/vg0/lv0

ext格式

针对ext文件系统的设备拉伸和缩减,只能热拉伸不能热缩减

1
2
3
umont /mnt
mkfs.ext4 /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
  • 拉伸分区大小

    • 需要一块格式化为ext4的文件系统
    • lvextend -L 250M /dev/vg0/lv0
    • resize2fx /dev/vg0/lv0
  • 缩减分区大小

    • umont /dev/vg0/lv0
    • e2fsck -f /dev/vg0/lv0
    • resize2fs /dev/vg0/lv0 100M
    • lvreduce -L 100M /dev/vg0/lv0
    • mount /dev/vg0/lv0 /mnt
  • 缩减vg

    • vgreduce vg0 /dev/vdb2
    • vgextend vg0 /dev/vdb2
  • 数据迁移

    • pvmove /dev/vdb1 /dev/vdb2

    • vgreduce vg0 /dev/vdb1

    • pvremove /dev/vdb1

LVM快照

  • 创建快照:lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0
  • 重新挂载:mount /dev/vg0/lv0-backup /mnt
  • PS:如果截取数据大于10M,会损坏设备,自动卸载
  • 恢复快照
    • lvremove /dev/vg0/lv0-backup
    • lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0,相当于reset
  • 删除LVM
    • lvremove /dev/vg0/lv0-backup
    • lvremove /dev/vg0/lv0
    • vgremove vg0
    • pvremove /dev/vdb1

ftp服务

  • 服务程序

    • 安装yum install -y vsftpd
    • systemctl start vsftpd
    • systemctl enable vsftpd
    • 访问数据的端口:21
    • 数据传输端口:> 1024的随机端口
    • 默认发布目录
      • 匿名用户登录lftp 172.25.254.100,默认目录/var/ftp
      • 用户登录:lftp 172.25.254.100 -u username,默认在家目录下
    • 配置文件:/etc/vsftpd/vsftpd.conf
    • 查看配置文件:rpm -qc vsftpd
  • 客户端yum install lftp

ftp的安全部署

  • 报错信息和命令
    • ?:查看命令
    • 500报错:权限过大
    • 530报错:认证失败
    • 550报错:服务本身不允许
    • 553报错:文件系统权限过小
    • 上传文件命令put

ftp匿名用户配置

  • 匿名用户登录:anonymous_enable=YES
  • 匿名用户上传文件:anon_upload_enable=YES,针对匿名用户
    • 修改权限:chmod 775 /var/ftp/pub
    • 修改属组:chgrp ftp /var/ftp/pub
  • 匿名用户新建目录:anon_mkdir_write_enable=YES
  • 匿名用户删除目录:anon_other_write_enable=YES
  • 修改匿名用户的家目录:anon_root=/westos,重新指定匿名用户登录的家目录。
  • 匿名用户下载文件:anon_world_readable_only=NO,针对匿名用户
  • 匿名用户的umaskanon_umask=066
  • 匿名用户上传文件的身份:
    • chown_uploads=YES,打开上传身份设置
    • chown_username=student,设置用户名
  • 最大上传速率
    • anon_max_rate=102400 单位:字节
  • 最大连接个数
    • client_connects=5

ftp本地用户配置

  • 本地用户:local_enable=YES
  • 上传文件:write_enable=YES,针对本地用户
  • local_root=/westos:本地用户的默认家目录
  • local_umask=xxx,本地用户上传软件权限
  • chroot_local_user=YES,禁止本地用户登录后锁定到家目录,PS:需要去掉对家目录的写权限,chmod u-x /home/kiosk,否则会报错
  • 切换路径黑/白名单设置
    • chroot_local_user=NO,需要自己新建/etc/vsftpd/chroot_list
      • 设置为NOchroot_list_file=/etc/vsftpd/chroot_list是黑名单
      • 设置为YESchroot_list_file=/etc/vsftpd/chroot_list是白名单
    • chroot_list_enable=YES
    • chroot_list_file=/etc/vsftpd/chroot_list
  • /etc/vsftpd/ftpusers:永久黑名单
  • /etc/vsftpd/user_list:临时黑名单
    • 需要设置userlist_enable=YES下面的才会生效
    • 设置/etc/vsftpd/vsftpd.confuserlist_deny=NO/etc/vsftpd/user_list变成了白名单
    • 设置/etc/vsftpd/vsftpd.confuserlist_deny=YES/etc/vsftpd/user_list变成了黑名单

ftp虚拟用户配置

  • 用户列表创建,假设为westos,可以加多个

    1
    2
    3
    4
    username1
    password1
    username2
    password2
  • 加密db_load -T -t hash -f /etc/vsftpd/westos /etc/vsftpd/westos.db

  • pam配置文件/etc/pam.d/westos,创建一个文件内容如下

    1
    2
    account required pam_userdb.so db=/etc/vsftpd/westos
    auth required pam_userdb.so db=/etc/vsftpd/westos

    账户和验证信息,db=/etc/vsftpd/westos会自动默认加db后缀,所以不需要加

  • 设置配置文件vim /etc/vsftpd/vsftpd.conf

    • pam_service_name=westos,pam的加密文件名
    • guest_enable=YES,允许访客模式登录
  • 虚拟用户的独立家目录/etc/vsftpd/vsftpd.conf

    • 家目录:local_root=/ftphome/$USER,设置每个用户的家目录$USER指代用户名是shell的一个全局变量,让配置文件可以识别这个shell变量user_sub_token=$USER
  • 独立配置用户权限/etc/vsftpd/vsftpd.conf

    • 配置文件添加内容user_config_dir=/etc/vsftpd/userconf,在该目录下创建该用户的配置文件,文件名为用户名,上传下载的配置,例如:anon_upload_enable=YES

防火墙

  • firewall-cmd --list-all,列出防火墙策略
  • firewall-cmd --permanent --add-service=ftp,永久添加ftp到防火墙策略,选项--permanent表示永久生效
  • firewall-cmd --reload,重新加载配置文件

SELinux内核级别的加强防火墙

配置文件:/etc/selinux/config

临时修改:setenforce 0

  • 0:警告模式
  • 1:强制模式