linux中的那点事儿
2019-11-25 14:05:50 0 举报
AI智能生成
Linux中的那些事儿知识网络
作者其他创作
大纲/内容
第零章:谈谈学习方法和红帽系统
本书作者简介
学习时间苦差
开源共享精神
为什么要学Linux
1、物联网时代到来,电子及服务器行业成指数增长,供不应求
2、Linux开元免费
3、linux安全、高可用、高性能
热门的开源系统
1、redhat
2、CentOS【目标】
3、Fedora
4、Ubuntu
5、Debian
第一章 部署虚拟环境安装linux系统。
1.1 准备您的工具
1、Vmware Workstation【虚拟机】
2、CentOS7镜像
1.2 安装配置虚拟机
1.3 VM安装RHEL7系统
1.4使用KVM安装系统
1.5 配置VNC服务程序
1.6 重置Root用户密码
1.7 安装虚拟机增加包
1.8 重要的守护进程
(1)crond:计划任务
(2)dhcpd:动态IP地址分配任务
(3)httpd网站服务
(4)lpd:打印服务器
(5)named:域名解析服务(DNS)
(6)nfs:文件共享服务
(7)smb:文件共享与打印服务
(8)syslog:系统日志
(9)gpm:鼠标进程
1.9 红帽软件包管理器
(1)安装软件:rpm -ivh filename.rpm
(2)升级软件:rpm -Uvh filename.rpm
(3)卸载软件:rpm -e filename.rpm
(4)查询软件描述信息:rpm -qpi filename.rpm
(5)列出软件描述信息:rpm -qpl filename.rpm
(6)查询文件属于哪个RPM:rpm -qf filename.rpm
1.10 Yum软件仓库
(1)yum repolist all :列出所有仓库
(2)yum list all:列出仓库中所有软件包
(3)yum info 软件包名称:查看软件包信息
(4)yum install 软件包名称:安装软件包
(5)yum reinstall 软件包名称:重新安装软件包
(6)yum update 软件包名称:升级软件包
(7)yum remove 软件包:移除软件包
(8)yum clean alla:清除所有仓库缓存
(9)yum cheak-update:检查可更新的软件包
(10)yum grouplist:查看系统中已经安装的软件包组
(11)yum groupinstall 软件包组:安装指定的软件包组
(12)yum groupremove 软件包组:移除指定的软件包组
(13)yum groupinfo 软件包组:查询指定的软件包组信息
第二章 新手必须掌握的Linux命令
2.1 强大好用的SHELL
(1)默认保存历史命令(可以上下键翻看)
(2)命令仅输入前几位就可以用Tab键补全 REHL7更牛的是参数补全
(3)强大的批处理脚本
(4)实用的环境变量
2.2 执行命令与查看帮助
(1)Help--man
1)长格式:man -help
2)短格式:man -h
(2)文档分类
1:文档分类:普通的命令
2:内核调用的函数与工具
3:常见的函数与函数库
4:设备文件说明
5:配置文件
6:游戏
7:惯例与协议
8:管理员可用的命令
9:内核相关文件
(3)文档默认结构
1)NAME :命令的名称
2)SYNOPSYS :参数的大致使用方法
3)DESCRIPTION :介绍说明
4)EXAMPLES :演示(附带简单说明)
5)OVERVIEW :概述
6) DEFAULTS :默认的功能
7) OPTIONS :具体的可用选项
8) ENVIONMENT:环境变量
9)FILES :用到的文件
10) SEE ALSO :相关的资料
11) HISTORY : 维护历史与联系方式
(4)man命令的操作按键
1) 空格键:向下翻一页
2)Page Down:向下翻一页
3)Page Up:向上翻一页
4) HOME 直接前往首页
5)END:直接前往尾页
6)/关键词:从上至下搜索关键词,如“Linux”
7)?关键词:自下而上搜索关键词,如“Linux”
8) n:定位到下一个搜索到的关键词
9)N:定位到上一个搜索到的关键词
10)q:退出帮助文档
2.3 常用系统工作命令
(1)echo:在终端显示字符串或变量,格式为:echo string | $PATH
(2)用于显示/设置系统时间或日期:date格式为:date 【选项】 【+指定的格式】
时间格式符
16)%Y:完整的年份
15)%m:月份(01-12)
14)%j:一年中的第几天(001--366)
13)%d:日(0--31)
12)%b:缩写月份(Jan-Dec)
11)%B:完整月份(January-December)
10)%a:星期几(Sun-Sat)
9)%A:星期几(Sunday-Saturday)
8)%p :显示本地AP或PM
7)%z:显示时区
6)%X :相当于%H:%M:%S
5)%S:秒(0--60)
4)%M:分钟(0--59)
3)%I:小时(0--12)
2) %H:小时(0--24)
1)%t :跳格[TAB键]
date实例
(1)查看当前系统时间:date
(2)按照“年-月-日” 小时:分钟:秒的格式显示:date “+%Y-%m-%d %H:%M:%S”
(3)查看当前系统时间:date
(4)设置系统时间为2015年1月1日上午8点半:date -s “20150101 8:30:00”
(5)查看本地系统时区:date “+%Z”
(6)查看星期几:date “+%A”
(7)输入当前是上午还是下午:date “+%p”
(8)判断今天是一年中的第几天:date “+%j”
(3)重启计算器:reboot
(4)使用命令行下载文件:wget
1)命令参数
-b:后台下载模式
-O:下载到指定目录
-t:最大尝试次数
-c:断点续传
-p:下载页面内所有资源,包括图片、视频等
-r:递归下载
2)实例
下载百度页面内容:wget www.baidu.com
(5)纯文本页面浏览器:elinks
安装:yum install elinks
使用方法:elinks www.baidu.com
2.4 系统状态检测命令
(1)查看当前网卡配置与网络状态信息:ifconfig
(2)查看内核版本信息:uname -a
(3)查看当前系统信息:cat /etc/redhat-release
(4)查看系统的负载情况:uptime [watch -n 1 uptime]
(5)显示当前系统中内存使用情况:free [-m/-g],以m为单位显示当前系统中内存使用情况:free -m
(6)查看当前登入主机的用户情况:who
(7)查看所有系统的登入记录:last [参数]
(8)查看当前用户在系统中执行过的命令:history
(9)清空该用户在本机中执行过命令的历史记录:history -c
(10)搜集本地配置信息并诊断:sosreport
2.5 工作目录切换命令
(1)查看当前工作路径:pwd
(2)切换到其他路径:cd
1)切换至/etc目录中:cd /etc
2)切换至/bin目录中:cd /bin
3)返回上一级命令:cd -
4)返回自己家目录:cd ~
(3)查看路径下文件信息:ls
1)格式:ls [选项] [文件]
2)参数
-a 查看全部文件(包括隐藏文件)
-d 仅看目录本身
-h 易读的文件容量
-l 显示文件的详细信息
3)实例
查看/etc下的文件:ls /etc
查看/etc 目录的权限与属性: ls -ld /etc
追加-h 参数,以K/M/G为单位显示容量:ls -ldh /etc
2.6 文本文件编辑命令
(1)查看纯文本文件:cat
用法
cat filename
参数
-n 显示行号
-b 显示行号(不包括空行)
-A 显示出“不可见的符号”,比如:空格,tab键等
(2)查看纯文本文件(较长):more
用法:more filename
参数
-num 预先显示的行数(默认为一页)
-d 显示提示语句与报错信息
(3)查看纯文本文件显示前n行(较长):head
用法
head -n filename
参数
-n 10 :显示10行
-n -10 正常输出(如cat命令,但不显示最后10行)
(4)查看纯文本文档后n行:tail
用法
tail -n 20 filename
参数
-n 10 显示后面10行
-f 持续刷新显示内容
(5)查看特殊格式的文件:od
用法
od [选项] [文件]
参数
-t a :默认字符
-t c :ASCII字符
-t o :八进制
-t d:十进制
-t x:十六进制
-t f:浮点数
(6)转换文文件中字符:tr
用法
tr [原始字符] [目标字符]
实例
将tr.txt文件的内容转换成大写:cat tr.txt | tr [a-z] [A-Z]
(7)用于统计指定文本的行数、字数、字节数:wc
用法:
wc [参数] 文本
参数:
-l: 只显示行数
-w: 只显示单词数
-c: 只显示字节数
实例:
wc -l /etc/passwd
(8)通过列来提取文本字符:cat
用法:
cat [参数] 文本
用法:
cat [参数] 文本
参数:
-d : 分隔符,默认为Tab
-f : 指定显示的列数
-c : 单位改为字符
实例:
获取当前系统中所有用户的名称,参数作用:-d 以“:”来做分隔符,-f参数代表只看第一列内容:cat -d: /etc/passwd
获取root用户的默认shell解释器 grep ^root /etc/passwd | cut -d: -f 7
(9)比较多个文件的差异:diff
用法:
diff [参数] 文件
用法:
cat [参数] 文本
参数:
-b : 忽略空格引起的差异
-B : 忽略空行引起的差异
-q : 仅报告是否存在差异
-c: 使用上下文输出格式
实例:
比较两个文件存在的差异: diff file1 file2
仅显示比较后的结果,即相同或者是不同: diff -q file1 file2
使用上下级输出的格式:diff -c file1 file2
2.7 文件目录管理命令
(1)创建空白文件与修改文件时间:touch
用法:
touch [参数] file
参数:
-a : 近修改“访问时间”(atime)
-m : 近修改“更改时间”(mtime)
-d : 同时修改atime和mtime
-t : 要修改成的时间 [YYMMDDhhmm]
(2)创建空白的文件夹:mkdir
用法:
mkdir [参数] 目录名
参数:
-m=MODE: 默认的文件目录权限,如:-m 755
-p: 连续创建多层目录(若文件已存在则忽略)
-v: 显示创建过程
用法:
创建一个名字为text的目录 : mkdir text
使用ls命令查看该目录的权限属性等信息: ls -ld text
(3)复制文件或目录:cp
用法:
cp [选项] 源文件 目标文件
复制文件3种情况
1) 目标文件是一个目录,会将源文件复制到该目录中
2)目标文件是一个文件,会将源文件覆盖该文件
3)目标文件不存在,将会复制源文件并修改为目标文件的名称(重命名)
参数:
-p : 保留原始文件属性
-d : 若对象为“连接文件”,则保留该“连接文件“的属性
-r : 递归持续复制(用于目录)
-i : 若目标文件存在则询问是否覆盖
-a : 相当于-pdr(p,d,r为上述参数)
作业:1、创建一个名为xiaocizhen.log的文件,将其复制为xcz.log并查看
(4)移动或改名:mv
用法:mv [选项] 文件名 [目标路径|目标文件名]
实例:mv aaa bbb
(5)用于删除文件或目录:rm
用法:
rm [选项] file
参数:
-f : 忽略警告信息
-i :删除前先询问
-r : 删除文件夹
练习:查看当前文件夹下文件并删除(1)需要确认,(2)不需确认
(6)指定大小的拷贝的文件或指定转换文件
用法:
dd [参数]
参数:
if : 输入文件的名称
of : 输出文件的名称
bs : 设置每个块的大小
count : 设置要拷贝“块”的个数
conv=ucase: 将字母从小写转换为大写
conv=lcase: 把字符从大写转换为小写
实例:
将光驱设备拷贝成镜像文件:dd if=/dev/cdrom of=RHEL-server-7.0-x86-Wyc.Com.iso
生成一个560M的空白文件 : dd if=/dev/zero of=560file count=1 bs=560M
将硬盘的MBR信息拷贝出来: dd if=/dev/sda of=sda_image count=1 bs=512k
2.8 用户与组管理命令
(1)创建新的用户:useradd
用法:
useradd [选项] 用户名
参数:
-d : 指定用户的家目录(默认为/home/username)
-D : 展示默认值
-e : 账号有效截至日期,格式:YYYY-MM-DD
-g : 指定一个初始用户组(必须已存在)
-G : 指定一个或多个扩展用户组
-N : 不创建与用同名的用户组
-s : 默认指定的Shell
-u : 指定用户的UID
实例:
创建名为xiaogui的用户,并指定家目录路径,UID及登录解释器(不允许登录):useradd -d /home/linux -u 8888 -s /sbin/nologin xiaogui
查看xiaogui用户的基本信息:id xiaogui
(2)修改用户密码:passwd
用法:
passwd [选项] 用户名
修改当前用户名:password
修改其他用户名:passwd otherusername
参数:
-l: 锁定用户禁止其登录
-u : 解除锁定,允许用户登录
--stdin : 允许从标准输入修改用户密码,如(echo "NewPassWord" | password -stdin UserName)
-d : 使账号无密码
-e : 强制用户登录时修改密码
-S : 显示用户的密码状态
(3)删除用户所有表格:userdel
用法:
userdel [选项] UserName
参数:
-f : 强制删除用户,家目录以及相关文件
-r : 同时删除用户,家目录与其相关文件
(4)修改用户的属性:usermod
用法:
usermod [选项] 用户名
参数;
-c : 填写账号的备注信息
-d -m:-m与-d连用,可重新制定用户的家目录并自动将旧的数据转移过去
-e : 账户到期时间,格式:“YY-MM-DD”
-g : 变更所属用户组
-G: 变更扩展用户组
-L : 锁定用户禁止其登录系统
-U : 锁定用户,允许其登录系统
-s :变更默认终端
-u : 修改用户的UID
(5)创建用户群组:groupadd
格式:
groupadd [选项] 群组名
实例:
创建名称为xiaogui的用户群组:groupadd xiaogui
2.9 打包压缩文件命令
(1)对文件压缩或解压:tar
格式:
tar [选项] 文件
参数:
-c : 创建压缩文件
-x : 解开压缩文件
-t : 查看压缩包内有哪些文件
-z : 用Gzip压缩或解压
-j : 用bzip2压缩或解压
-v : 显示压缩或解压的过程
-f : 目标文件名
-p : 保留原始的权限与属性
-P : 使用绝对路径来压缩
-C : 指定解压到的目录
实例:
1)将/etc目录内的文件打包并通过gzip格式压缩:tar czvf etc.tar.gz /etc
2)将etc.tar.gz解压到/root/etc目录中:mkdir /etc/etc && tar xzvf etc.tar.gz -C /root/etc
2.10 文件查询搜索命令
(1) 对文本进行搜索:grep
格式:
grep [选项] 文件
参数:
-b : 将可执行文件(binary)当做文本文件(text)来搜索
-c : 仅显示找到的次数
-i : 忽略大小写
-n : 显示行号
-v : 反向选择--仅列出没有“关键词”的行
实例:
搜索/etc/passwd中 /sbin/nologin 出现的行,找出系统中不允许登录的用户: grep /sbin/nologin /etc/password
找出文件“/user/share/gedit/plugins/snippets/docbook.xml”中所有包含entry的行并输出到/root/lines: grepentry /user/share/gedit/plugins/snippets/docbook.xml >> /root/lines
(2)查找文件:find
格式:
find [查找路径] 寻找条件 操作
1)"~"代表用户家目录
2)“.”代表当前目录
3)“/”代表根目录
参数:
-name : 匹配名称
-perm : 匹配权限(mode为完全匹配,-mode为包含即可)
-user : 匹配所有者
-group : 匹配所有组
-mtime -n +n :匹配修改内容的时间(-n指n天内,+n指n天前)
-atime -n +n :匹配访问文件的时间(-n指n天内,+n指n天前)
-ctime -n +n :匹配修改权限的时间(-n指n天内,+n指n天前)
-nouser : 匹配无所有者的文件
-nogroup: 匹配无所有组的文件
-newer f1 !f2 : 匹配比f1新却比f2旧的文件
--type b/d/c/p/l/f 匹配文件类型(块设备、目录、字符设备、管道、连接文件、文件文件)
--size : 匹配文件的大小(+50k查找超过50K的文件,而-50K则代表查找小于50K的文件)
-prune : 忽略某个目录
--exec{}\; : 后面可接对搜索到的结果进一步处理的命令(下面会有演示)
实例:
1)搜索/etc/中所有以host开头的文件:其中的“host*”表示所有以host开头的文件: find /etc -name "host" -print
2)搜索整个系统中所有包含SUID的文件(因SUID的数字表示法是4,而减号表示只要包含即可):find / -perm -4000 -print
3)找出用户xiaocizhen的文件并复制到/root/findresults目录,重点是“-exec{}\;”其中的{}代表find命令搜索出的文件,但记住结尾必须是\:find / -user xiaocizhen -exec cp -arf {} /root/findresults\;
第三章:管道符、重定向与环境变量
3.1管道命令符
作用:将前一个命令的标准输出当做后一个命令的标准输入,格式为“cmd1 | cmd2”
书写格式: |
实例:
查找进程中所有含有tomcat的关键词输出: ps -aux | grep tomcat
用翻页的形式查看/etc目录中有哪些文件:ls -l /etc/ | more
用非交互式设置用户密码,将root密码修改为:xiaocizhen:echo "xiaocizhen" | password --stdin root
3.2输入输出重定向
定义:
将一个文件内容导出到另外一个文件中保存,在日常工作中常见状态为写log日志
重定向情况:
标准输入:standard input 0 <,<<
标准输出:STOUT
错误输出: STDERR
对于输出重定向符号情况
命令">"文件 : 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 "2>" 文件 : 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 : 将标准输出重定向一个文件中(追加到原有内容的后面)
命令 2>> 文件 : 将错误准输出重定向一个文件中(追加到原有内容的后面)
命令 >> 文件 2>$1 : 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
对于输入重定向符号情况
命令 < 文件 : 将文件作为命令的标准输入
命令 << 分界符 : 从标准输入中读入,遇见“分界符”才停止
命令 < 文件1 > 文件2 : 将文件1作为命令的标准输入并将标准输出到文件2
实例:
1)将man命令的帮助文档写入到/root/man.txt中: man man > /root/man.txt
2)向readme.txt文件中写入一行文字:echo “Welcome to xiaocizhen ” > readme.txt
3)向readme.txt文件中追加一行文字:echo “Welcome to xiaocizhen ” >> readme.txt
4) 查看内容:cat readme.txt
5)把readme.txt文件作为输入重定向给 wc -l 命令来计算基数,命令等同于“cat readme.txt | wc -l”: wc -l < readme.txt
6)用“ls”命令查看文件信息,若文件不纯在则将报错信息输出到/root/stderr.txt中:ls xiaocizhen 2> /root/stderr.txt
7) 查看文件信息:cat /root/stderr.txt
3.3命令行通配符
一般通配符
通配符:
* : 匹配零个或多个字符
? : 匹配任意单个字符
[0-9] : 匹配范围内的数字
[abc] : 匹配已出的任意字符
实例:
查看sda开头都的所有设备文件: ls /dev/sda*
查看sda后面有一个字符的设备文件: ls /dev/sda*
特殊通配符
通配符:
\(反斜杠) : 转义后面单个字符
''(单引号): 转义所有的字符
“”(双引号): 变量依然生效
''(反引号): 执行命令语句
实例:
定义名称为PRICE的变量值为5: PRICE=5
想要输出“价格是5”:echo“Price is $PRICE”
添加一个反斜杠,将第一个$符号转义:echo “PRICE is \$ $PRICE”
使用单引号,变量将不再被取值:echo 'Preice is \$ $PRICE'
执行uname -a后查看本机内核的版本与架构信息(反引号里面的命令会被执行):echo 'uname -a'
3.4实用的环境变量
1)设置命令别名:alisa
格式:alias 别名=命令
示例:alias cp ="cp -i"
2)取消设置命令别名:unalias
格式:unalias 别名
示例:unalisa cp
3.5重要的环境变量
环境变量
作用
HOME : 用户的主目录“家”
SHELL : 当前的shell是哪个程序
HISTSIZE : 历史命令记录条数
MAIL: 邮件信箱文件
LANG : 语系数据
RANDOM : 随机数字
PS1 : bansh提示符
HISTFILESIZE : history命令存储数量
PATH: 在路径中的目录查找执行文件
EDITOR :默认文本编辑器
HOME :用户主目录
第四章 Vim编辑器与Shell脚本命令
4.1 了解Vim文本编辑器
(1) 了解Vim编辑器
(2)配置主机名称: vim /etc/hostname ==> 查看主机名称:hostname
(3)配置网卡信息:vim /etc/sysconfig/network-scripts
(4)配置yum仓库
4.2 了解shell脚本
(1)shell工作形式
1)交互式:输入一条命令,执行一个种状态
2)批处理式:同时执行多个程序
3)查看系统中可用的shell解释器:cat /etc/shells
(2)编译简单的脚本
脚本组成3要素:
脚本声明:(#!)告知系统用何种shell来解释
注释信息:(#)对可执行语句或程序功能做介绍,可用不写
可执行语句:执行的具体命令
脚本执行3种方式:
脚本执行路径: ./Example.sh
sh脚本文件路径: sh Example.sh
source脚本路径: source Example.sh
实例:
#!/bin/sh \n #这是一条实例 \n ls
(3)接收用户的参数
变量
Shell预定义变量
$0 : 当前执行shell的程序名
$1-9,${10},${11}...... : 参数的位置变量
$# :一共有多少个参数
$* : 所有位置变量的值
$? : 判断上一条命令是否执行成功,0为成功,非0为失败
实例:
执行验证命令:Example.sh one two three four five six
(4)判断用户参数:
测试语句:
文件测试
逻辑测试
整数值比较
字符串比较
文件测试操作符:
-d :测试是否为目录
-e :测试文件或目录是否存在
-f : 判断是否为文件
-r : 测试当前用户是否有权限读取
-w :测试当前用户是否有权限写入
-x :测试当前用户是否有权限执行
文件测试:
测试/etc/fstab是否为目录 : [-d /etc/fatsb]
显示上一条命令的返回值,非0则为失败,即不是目录:echo $?
测试/etc/fstab是否为文件 : [-f /etc/fatsb]
显示上一条命令的返回值为0,即fstab是文件:echo $?
逻辑测试:
用法:逻辑测试: [表达式1] 操作符 [表达式2]
操作符:
&& :逻辑与,“而且”的意思
||:逻辑或,"或者"的意思
!:逻辑否
整数值比较:
用法:
整数1 操作符 整数2
操作符:
-eq :判断是否等于
-ne:判断是否不等于
-gt:判断是否大于
-lt :判断是否小于
-le:判断是否等于或小于
-ge:判断是否大于或等于
字符串比较:
用法:
字符串1 操作符 字符串2
操作符:
=:比较字符串内容是否相同
!=:比较字符串内柔是否不通风
-z:判断字符串内容是否为空
4.3 条件测试语句
if、while、for 等
4.4 计划任务服务
计划任务命令:at
用法:at [参数]
自由主题
参数
at <时间>: 安排一次性任务
atq或at -l:查看任务列表
at -c 序号:预览任务与设置环境
atrm 序号:删除任务
实例:
交互式:
at :23:30 systemctl start httpd
非交互式样:
echo "systemctl start http" | at 23:30
计划任务服务: condtab
作用:创建长期可循环的计划任务
用法:
crontab [参数] [-u 用户名]
实例:
创建编辑计划任务:crontab -e
查看计划任务:crontab -l
删除计划任务:crontab -r
编辑方式:vi && vim
第五章用户身份与文件权限
5.1 用户身份与能力
用户
超级用户:UID0:root用户默认为0
功能权限:
添加/删除用户
启动关闭进程
开启禁用硬件设备
系统用户:UID1-999:系统中服务由不同用户运行,更加安全,默认被限制登录系统
普通用户:UID1000~:即管理员创建的用于日常工作而不能管理系统的普通用户
GID && UID
UID(user IDentification):每个用户都有对应UID值,就像我们的身份证号码
GID(Group IDentification):可将多个用户加入某个组中,方便指派任务或工作
5.2文件权限及归属
文件权限:
读:r
写:w
可执行:e
文件归属:
所有者
所有组
其余的人
5.3文件的特殊权限
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序设置)
在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)
修改文件或目录的权限:chmod
用法:
chomd [参数] 权限 文件或目录名称
实例:
切换至tem目录:cd /tmp
创建工作目录:mkdir testdir
查看该文件夹权限:ls -ald testdir
赋予可读可写可执行权限:chomd -Rf 777 testdir
更改组权限:chmod:-Rf g+s testdir
查看更改后去权限:ls -ald testdir
修改文件或目录的所属主与所属组:chown
用法:chown [参数] 权限 文件或目录名称
实例:
查看当前路径下文件及所属用户:ls -l
将该文件夹所属组更改为xiaocizhen:chown XXX:XXX ./textdir
粘滞位:功能不允许其他用户删除某用户文件
5.4文件的隐藏属性
设置文件隐藏权限:chattr
用法:
chattr [参数] 文件
参数:
i :将无法对文件进行修改,若对目录设置后则仅能修改子文件而不能新建或删除
a :仅允许补充(追加内容),无法覆盖/删除(Append Only)
S :文件内容变更后立即同步到硬盘(sync)
s :彻底从硬盘中删除,不可恢复(用0填充文件所在硬盘区域)
A:不再修改文件或目录的存取时间
b :不再修改文件或目录存取时间
D:检查压缩文件中的错误
d:使用dump命令备份时忽略本文件/目录
c:默认将文件或目录压缩
u:当删除此文件后依然保留其在硬盘中的数据,方便日后恢复
t:让文件系统支持尾部合并(tail-merging)
X:可以直接访问压缩文件的内容
显示文件隐藏权限:lsattr
用法:
lsattr [参数] 文件
参数:
a:显示所有文件和目录
l:显示隐藏属性的全称(默认简写成一个字母)
R:递归处理,将制定目录下的所有文件及子目录一并处理
d:若文件为目录,请加此参数
实例:
写入一个名为xiaocizhen,内容为“for Text”的普通文件:echo "for test" > xiaocizhen
尝试用rm命令删除,结果成功:rm xiaocizhen
再次写入xiaocizhen文件:echo “for test”> xiaocizhen
添加允许追加的隐藏权限(无法删除与覆盖):charrt +a xiaocizhen
再来尝试删除,报错:rm xiaocizhen
用ls查看,无法判定异常部分:ls -al xiaocizhen
用lsattr命令则原型毕露了:lsattr xiaocizhen
去除对xiaocizhen文件设置的隐藏权限:chattr -a xiaocizhen
再来查看xiaocizhen文件权限(没有了):lsattr xiaocizhen
尝试删除改文件(顺利删除):rm xiaocizhen
5.5su命令与sudo命令
切换登录者:
su:
1、root切换至普通用户不需要输入密码
2、其他用户切换至root需要输入root密码
提升权限:
sudo:
临时提高权限
5.6文件访问控制列表
增加或修改ACL规则:setfacl
格式:setfacl [参数] 文件
参数:
-R:递归(对目录使用)
-m:设置文件的acl规则
-b :删除acl规则
显示文件的acl规则:getfacl
格式:getfacl 文件
实例:getfacl /root
实例:
xiaocizhen用户有因工作的原因需要有可能读取root家目录文件权限:su -xiaocizhen
切换至root路径(发现无权限):cd root
返回到root用户设置xiaocizhen对root有rex权限:setfacl -Rm xiaocizhen:xiaocizhen:rwx /root
切换到xiaocizhen用户:su xiaocizhen
切换到root路径下:cd root
查看当前路径下内容,发现完成:ls
第六章存储结构与磁盘划分
6.1 一切从“/”开始
常见的目录定义:
/boot :开机所需文件--内核,开机菜单及所需配置文件等
/dev :任何设备与接口都以文件形式存放在此目录
/etc : 配置文件
/home :用户主目录
/bin :单用户维护模式下还能够被操作的命令
/lib :开机时用到的函数库及/bin与/sbin下面命令要调用的函数
/sbin:开机过程中需要的
/media:一般挂载或删除的设备
/opt:放置第三方的软件
/root :系统管理员文件夹
/srv :一些网络服务的数据目录
/tmp:任何人均可使用的“共享”临时目录
/proc :虚拟文件系统,例如系统内核,进程,外部设备及网络状态等
/usr/local:用户自行安装的软件
/user/sbin :非系统开机时需要的软件/命令/脚本
/user/share:帮助与说明文件,也可放置共享文件
/var :主要存放经常变化的文件,如:日志
/lost+found:当文件系统发生错误时,将一些丢失的文件片段存放在这里
路径问题:
相对路径:
绝对路径:
6.2物理设备的命名规则
硬件命名规则:
硬件设备
文件名称
IDE设备:/dev/hd[a-d]
SCSI/SATA/U盘:/dev/sd[a-p]
软驱:/dev/fd[0-1]
打印机:/dev/lp[0-15]
光驱:/dev/cdrom
鼠标:/dev/mouse
磁带机: /dev/st0或/dev/ht0(IDE设备)
硬件名称分析:
首先/dev目录下的都是硬件
其次sd开头的是存储设备
然后a代表第一个被识别的设备
最后5代表的他是逻辑分区
6.3文件系统与数据资料
文件管理系统分类:
Ext3
Ext4
XFS
inode table:文件表
该文件访问权限
该文件所属主与组
该文件大小
该文件创建或修改时间
该文件的最后一次访问时间
该文件的修改时间
该文件的特殊权限
该文件的真是数据地址
6.4挂载硬件设备
挂载操作:mount
用法:mount 文件系统 挂载目录
参数:
-a:挂载所有在/etc/fatab中定义的文件系统
-t:指定文件系统类型
实例:将光盘文件挂载:mount /dev/cdrom /media/cdrom
6.6添加交换分区
6.7磁盘冗余阵列
6.8裸机卷管理器
第七章Iptables与Firewalld防火墙
7.1了解防火墙管理工具
Iptables
firewalld
7.2Iptables命令
(1)规则链与策略
规则:
ACCEPT:允许通过
Log:记录日志信息,然后传给下一条规则继续匹配
REJECT:拒绝通过,必要时会给出提示
DROP:直接丢弃,不给出任何回应
规则链:
INPUT:处理入站的数据包
OUTPUT:处理出站的数据包
FORWARD:处理转发的数据包
POSTROUTING:在进行路由选择后处理数据包
PREROUTPING:在进行路由选择前处理数据包
规则表:
raw表:为数据设置标记
nat表:修改数据包中的源、目标Ip或端口
filter表:确定是否放行该数据包(过滤)
规则表先后顺序:raw->mangle->nat->filter
规则链先后顺序:
入站顺序:PREROUTING->INPUT
出站顺序:OUTPUT->POSTROUTING
转发顺序:PREROUTING->FORWARD->POSTROUTING
注意:
1)没有指定规则表则默认指filter表
2)不指定规则连则指表内所有的规则连
3)在规则链中匹配规则时会依次检查,匹配即停止(LOG规则例外),若没匹配项则按链的默认状态处理
(2)基本的命令参数:
-P :设置默认策略:iptables -P INPUT (DROP|ACCEPT)
-F:清空规则链
-L:查看规则链
-A:在规则链末尾加入新规则
-I num :在规则链的头部加入新规则
-D num:删除某一条规则
-s:匹配来源地址IP/MASK,加叹号“!”表示除了这个IP外
-d :匹配目标地址
-i:网卡名称:匹配从这块网卡流入的数据
-o:匹配从这块网卡流出的数据
-p:匹配协议,如TCP,udp,icmp
--drop num:匹配目标端口号
--sport num:匹配来源端口号
(3)实例:
将INPUT链的默认策略设置为拒绝iptables -P INPUT DROP
允许所有的ping操作:iptables -I INPUT -p icmp -j ACCEPT
在INPUT链的末尾加入一条规则,允许所有未被其他规则匹配上的数据包:iptables -t filter -A INPUT -j ACCEPT
删除刚加入的那条规则:iptables -D INPUT 2
注意:
若想重启后依然保存规则有效需执行:serveice iptables save
(3)SNAT与DNAT
SNAT:源地址转换技术
作用:能够让多个内网用户通过一个外网地址上网,解决了IP资源匮乏的问题
DNAT:目标地址转换技术
作用:让外网IP用户访问局域网内不同的服务器
(4)端口转发与流量均衡
端口转发
7.3:Firewalld防火墙
(1)区域概念与作用
区域:
默认规则策略
trusted:允许所有的数据包
home:拒绝流入的数据包,除非与流出流量数据包相关或是ssh,mdns,ipp-client,samba-client与dhcpv6-client服务则允许
internal:等同于home区域
work:拒绝流入的数据包,除非与流出流量数据包相关或是ssh,ipp-client与dhcpv6-client服务则允许
public:拒绝流入的数据包,除非与流出流量数据包相关或是ssh,dhcpv6-client服务则允许
external:拒绝流入的数据包,除非与流出流量数据包相关或是ssh服务则允许
dmz:拒绝流入的数据包,除非与流出流量数据包相关或是ssh服务则允许
block:拒绝流入的数据包,除非与流出流量数据包相关
drop:拒绝流入的数据包,除非与流出流量数据包相关
总结:为用户预先准备了几套规则组合,我们可以根据场景的不同选择合适的规矩组合,而默认区域是public
(2)字符管理工具
用法:Firewall-cad [参数]
参数及作用:
--get-default-zone:查询默认的区域名称
--set-default-zone=<区域名称>:设置默认的区域,永久生效
--get-zones:显示可用的区域
--get-services:显示预先定义的服务
--get-active-zones:显示当前正在使用的区域与网卡名称
--add-source=:将来源于此Ip或子网的流量导向某个指定的区域
--remove-source=:不再将此IP与子网的流量导向某个指定区域
--add-interface=<网卡名称>:将来自于该网卡的所有流量导向某个指定区域
--change-interface=<网卡名称>:将某个网卡与区域做关联
--list-all:显示当前区域的网卡配置参数,资源,端口以及服务信息
--list-all-zones:显示所有区域的网卡配置参数,资源,端口以及服务信息
--add-service=<服务名>:设置默认区域允许该服务的流量
--add-service=<端口号/协议>:允许默认区域允许该端口的流量
--remove-service=<服务名>:设置默认区域不再允许该服务的流量
--remove-service=<端口号/协议>:允许默认区域不再允许该端口的流量
--reload:让“永久生效”的默认配置规则立即生效,覆盖当前的
firewalld服务的有两份规则策略配置记录:
RunTime:当前正在生效的
Permanent:永久生效的
实例:
查看当前区域:firewall-cmd --get-default-zone
查询eno16777728网卡的区域:firewall-cmd --get-zone-of-interface=eno16777728
在public中分别查询ssh服务是否被允许:firewall-cmd --zone=public --query-service=ssh
在public中分别查询http服务是否被允许:firewall-cmd --zone=public --query-service=ssh
设置默认规则为dmz:firewall-cmd --zone=public --set-defult-zone-dmz
让“永久生效”的配置文件立即生效:firewall-cmd --reload
(3)图形管理工具:听我的,忘了吧
7.4服务的访问规则表:
允许名单:/etc/hosts.allow
拒绝名单:/etc/hosts.deny
第八章使用ssh服务管理远程主机
(1)进程与服务
1)初始化进程
BootLoader->加载内核->内核初始化->启动初始化进程
2)目标、运行级别、作用表
0 runlevel0.target,poweroff.target 关机
1 runlevel1.target,rescue.target 单用户模式
3……查询《linux该怎么学》:P141
3)实例:
将默认用户改为“多用户,无图形模式”ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.targget
将默认运行级别修改为“图形化模式”ln -sf /lib/systemd/system/graphical-user.target /etc/systemd/system/default.targget
(2)管理服务命令
1)systemctl管理服务的启动、重启、停止、重载、查看状态的命令:
syscinit命令(红帽RHEL6系统) syscinit命令(红帽RHEL7系统) 作用
service foo start systemctl start foo.service 启动服务
service foo restart systemctl restart foo.service 重启服务
service foo stop systemctl stop foo.service 停止服务
service foo reload systemctl reload foo.service 重新加载配置文件(不终止服务)
service foo status systemctl status foo.service 查看服务状态
2)systemctl管理服务的开机启动、不启动、查看各级别瞎启动状态的命令:
syscinit命令(红帽RHEL6系统) syscinit命令(红帽RHEL7系统) 作用
chkconfig foo on syatemctl enable foo.service 开机自动启动
chkconfig foo off syatemctl disenable foo.service 开机不自动启动
chkconfig foo syatemctl is-enable foo.service 查看特定服务是否开机自动启动
chkconfig foo --list syatemctl list-unit-files --type=service foo.service 开机自动启动
3)监视资源与管理进程
系统进程状态
R(运行):正在运行或在运行队列中等待
S(中断):休眠中,在等待某个条件的形成或接受的信号
D(不可中断):收到信号不唤醒或不可运行,知道父进程调用wait4()系统调用后释放
T(停止):进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行
实例:
查看系统中的进程状态:ps
格式:ps [参数]
参数:
-a 显示所有的进程(包括其他用户的)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
实例:
查看进程与状态:ps -aux
查找某个特定的进程信息:ps -aux | grep 进程名
监视进程的活动与系统负载:top
格式:top
查询某个特定程序的进程PID值:pidof
格式:pidof [参数] [程序名称]
实例:查询"sshd"进程的PID值:pidof sshd
终止某个特定PID号码的进程:kill
格式:kill [参数] [进程名称]
实例:强制终止PID为4674的进程:kill -9 4674
终止某个特定名称的所有进程
格式:killall [参数] [进程名称]
实例:终止名称为“sshd”的进程:killall sshd
综合实例:
每秒向家目录中的jobs.txt中追加一个字符串:(while true;do echo -n "working" >> ~/jobs.txt;sleep 1;done;) &
自动刷新查看文件内容变化:tail -f ~/hob.txt
(2)配置网卡连接网络
1)配置网卡参数
自己查看吧
2)查看网卡信息:nmcli
查看网卡配置信息:nmcli connection show
查看网卡连接状态:nmcli device status
网卡多地点配置:自行理解
3)两块网卡绑定:
查看网卡信息:ifconfig | grep flags
编辑网卡信息:通过vim编辑并绑定
4)查看端口状态:ss
用法:ss [参数]
参数:
-a: 显示所有套接字
-l:显示所有连接状态的套接字
-e:显示详细的套接字信息
-m:显示套接字的内存使用情况
-p:显示套接字的进程信息
-4:显示ipv4的套接字信息
-6:显示ipv6的套接字信息
-t:显示tcp的套接字信息
-u:显示udp的套接字信息
-n:不解析主机名(提升速度)
-s:查看概述
实例:
查看监听状态中的套接字:ss -ntl
查看进程名PID号码:ss -s
查看IP数据包从本机到另外一台电脑经过的路由信息:tracepath
用法:tracepath [域名/Ip地址]
实例:
tracepath 103.11.22.111
tracepath www.baidu.com
(3)远程控制服务
1)了解sshd服务
验证方法:
基于口令的安全验证:经过验证账号密码即可登录到远程主机
基于密钥的安全验证:需要在本地生成“蜜月对”后将公钥传送至服务端,进行公共密钥的比较
配置文件解析:
参数:
作用
#Port 默认的sshd服务端口
#ListenAddress 设定sshd服务端监听IP地址
#Protocol 2 SSH协议版本号
更多请查看:P152
2)使用ssh命令
远程管理linux主机:格式:ssh [参数] 主机
参数:
-p: 指定连接端口(默认22)
-v : 显示连接过程的详细信息
实例:
ssh 123.232.114.60
3)安全密钥验证:
按照实例自行探究,运维过程中不常用
4)远程传输命令
在网络中安全的传输文件:scp
格式:scp [参数] 本地文件 远程账户@远程地址 : 远程目录
参数:
-v :显示详细的连接进度
-P:指定远程主机的sshd端口号
-r :传送文件夹时请加此参数
-6:使用ipv6协议
将本地文件/root/out.txt 传送到远程主机的/home目录:scp /root/out.txt 123.232.114.60:/home
将远程主机文件/root/out.txt 传送到本地的/home目录:scp 123.232.114.60:/root/out.txt /home
(4)不间断会话服务
1)了解Screen服务
Screen会话特点:
会话恢复:即便网络中断,也可让会话随时恢复,用户不会丢失对命令行的控制
多窗口:每个会话都是独立运行的,拥有独立的编号,输入输出和窗口缓存
会话恭喜:可以使多个用户从不同中断使用用一个会话,也可让他们看到完全相同的输出
2)掌握命令参数
安装screen程序包
yum install screen
screen命令参数
-A 让所有视窗自动调整适应当前终端机的大小
-d <会话名称>:将制定的screen会话离线
-r <会话名称>:将制定的screen会话恢复
-h<行数>:指定视窗的缓冲区行数
-S<会话名称>:指定screen会话的名称
-x:恢复所有离线的会话
-ls或-list:显示当前的screen会话
--wipe:自动将无法使用的screen会话删除
3)创建与使用会话功能
4)会话共享功能
收藏
0 条评论
下一页