大家好,又见面了,我是你们的朋友全栈君。
Linux 从零开始学习笔记 http://down-ww3.7down.net/pcdown/soft/xiazai/xishuolinux.rar
Linux学习笔记
- 第一章 Linux起源
- 第二章 系统分区
- 第三章 Linux安装与配置
- 第四章 Linux常用命令
-
- 第一节 文件处理命令
-
- 第一讲 命令格式与目录处理命令ls
- 第二讲 目录处理命令
- 第三讲 文件处理命令
- 第四讲 链接命令
- 第二节 权限管理命令
-
- 第一讲 权限管理命令chmod
- 第二讲 其他权限管理命令
- 第三节 文件搜索命令
-
- 第一讲 文件搜索命令find
- 第二讲 其他文件搜索命令
- 第四节 帮助命令
- 第五节 用户管理命令
- 第六节 压缩解压命令
- 第七节 网络命令
- 第七节 挂载命令
- 第八节 关机重启命令
- 第五章 文本编辑器Vim
-
- 第一节 Vim常用操作
- 第二节 Vim使用技巧
- 第六章 软件包管理
-
- 第一节 软件包管理简介
- 第二节 rpm命令管理
-
- 第一讲 包命名与依赖性
- 第二讲 安装升级与卸载
- 第三讲 查询
- 第四讲 校验和文件提取
- 第二节 RPM包管理
-
- 第一讲 yum在线管理
-
- 第一部分 IP地址配置和网络yum源
- 第二部分 yum命令
- 第三部分 光盘yum源搭建
- 第三节 源码包管理
-
- 第一讲 源码包和RPM包的区别
- 第二讲 源码包安装过程
- 第四节 脚本包管理
-
- 第一讲 脚本包安装
- 第七章 用户和用户组管理
-
- 第一节 用户配置文件
-
- 第一讲 用户信息文件/etc/passwd
- 第二讲 影子文件/etc/shadow
- 第三讲 组文件信息/etc/group
- 第四讲 组密码文件/etc/gshadow
- 第二节 用户管理相关文件
- 第三节 用户管理命令
-
- 第一讲 用户添加命令useradd
- 第二讲 修改用户密码passwd
- 第三讲 修改用户信息usermod
- 第四讲 修改用户密码状态chage
- 第五讲 删除用户userdel
- 第六讲 用户切换命令su
- 第四节 用户组管理命令
- 第八章 权限管理
-
- 第一节 ACL权限
-
- 第一讲 ACL权限简介与开启
- 第二讲 ACL权限查看与设定
- 第三讲 ACL权限最大有效权限与删除
- 第四讲 ACL权限默认与递归
- 第二节 文件特殊权限
-
- 第一讲 SetUID
- 第二讲 SetGID
- 第三讲 Sticky BIT
- 第三节 文件系统属性chattr权限
- 第三节 系统命令sudo权限
- 第九章 文件系统管理
-
- 第一节 回顾分区和文件系统
- 第二节 文件系统常用命令
-
- 第一讲 df命令、du命令、fsck命令和dump2fs命令
- 第二讲 挂载命令
- 第三讲 挂载光盘与U盘
- 第四讲 支持NTFS文件系统
- 第三节 fdisk分区
-
- 第一讲 fdisk命令分区过程
- 第二讲 分区自动挂载与fstab文件修复
- 第四节 新建swap分区
- 第十章 Shell基础
-
- 第一节 Shell概述
- 第二节 Shell脚本的执行方式
- 第三节 Bash的基本功能
-
- 第一讲 历史命令与命令补全
- 第二讲 命令别名与常用快捷键
- 第三讲 输入输出重定向
- 第四讲 多命令顺序执行与管道符 多命令顺序执行
- 第五讲 通配符与其他特殊符号
- 第四节 Bash的变量
-
- 第一讲 用户自定义变量
- 第二讲 环境变量
- 第三讲 位置参数变量
- 第四讲 预定义变量
- 第五节 Bash的运算符
-
- 第一讲 数值运算与运算符
- 第二讲 变量测试与内容替换
- 第六节 Bash的运算符
-
- 第一讲 环境变量配置文件简介
- 第二讲 环境变量配置文件作用
- 第三讲 其他配置文件和登录信息
- 第十一章 Shell编程
-
- 第一节 基础正则表达式
- 第一节 字符截取命令
-
- 第一讲 cut字段提取命令
- 第二讲 printf命令
- 第三讲 awk命令
- 第四讲 sed命令
- 第三节 字符处理命令
- 第四节 条件判断
- 第五节 流程控制
-
- 第一讲 if语句
- 第二讲 case语句
- 第三讲 for循环
- 第四讲 while循环与until循环
- 第十二章 Linux服务管理
-
- 第一节 服务简介与分类
- 第二节 RPM包安装服务的管理
-
- 第一讲 独立服务的管理
- 第二讲 基于xinetd服务的管理
- 第三节 源码包安装服务的管理
- 第四节 服务管理总结
- 第十三章 Linux系统管理
-
- 第一节 进程管理
-
- 第一讲 进程查看
- 第二讲 进程管理
- 第二节 进程管理
- 第三节 系统资源查看
- 第四节 系统定时任务
- 第十四章 日志管理
-
- 第一节 日志管理简介
- 第二节 rsyslogd日志服务
- 第三节 日志轮替
- 第十五章 启动管理
-
- 第一节 CentOS 6.x启动管理
-
- 第一讲 系统运行级别
- 第二讲 系统启动过程
- 第二节 启动引导程序grub
-
- 第一讲 Grub配置文件
- 第二讲 Grub加密与字符界面分辨率调整
- 第三节 系统修复模式
- 第十六章 备份与恢复
-
- 第一节 备份概述
- 第二节 dump和restore命令
第一章 Linux起源
unix,C语言,TCP-IP 可以看作三胞胎,他们结合在一起相互诞生,其他具体自行可以看:计算机组成原理,计算机网络,以及C语言。可以结合在一起来学习,效果更佳。
第二章 系统分区
Linux与Windows一样,它的主分区和拓展分区加起来不能超过四个,而且拓展分区最多一个且不能放入数据文件以及它不能格式化,拓展分区里放的逻辑分区可以放数据和格式化。 Linux 硬件全为文件 这一点与Windows不一样,下面介绍一些Linux的主要硬件文件名已经存放路径。
- IDE硬盘 /dev/hd[a-d]
- SCSI/SATA/USB硬盘 /dev/sd[a-p]
- 光驱 /dev/cdrom或/dev/sr0
- 软盘 /dev/fd[0-1]
- 打印机(25针) /dev/lp[0-2]
- 打印机(USB) /dev/usb/lp[0-15]
- 鼠标 /dev/mouse 分区:把大硬盘分为小的逻辑分区 格式化:写入文件系统 分区设备文件名:给每个分区定义设备文件名 挂载:给每个分区分配挂载点 注意:根分区 “/ ” 以下的子分区可以单独使用硬盘 在虚拟机安装中 swap 的大小为内存的两倍但是超过2G没有意义,建议1000MB合适 /boot路径是为了让Linux系统可以顺利运行 里面最好不要存放数据 在虚拟机安装中分配200M左右大小就可以了
安装教程可以观看一下视频,新手学习建议安装CentOS
链接: Linux安装.
第三章 Linux安装与配置
在Linux远程登录管理配置IP时,需要的一些简单命令:
代码语言:javascript复制ifconfig 查询当前网卡信息
ifconfig eth0 配置网卡
ifconfig eth0 后 VmNAT8的网络IP
df 查看系统分区
ls /bin/ 里面存放的为Linux命令文件
注意:这些配置都是临时配置,在重启之后IP会丢,永久修改需要在配置文件中修改 VmNAT8为VMware虚拟中虚拟网卡 可以自行查询IP
具体操作看以下视频:
链接: VMware环境配置.
第四章 Linux常用命令
第一节 文件处理命令
第一讲 命令格式与目录处理命令ls
- 以下为不同文件的不同后缀 压缩包:.gz .bz2 .tar.bz2 .tgz 二进制软件包:.rpm 网页文件:.html .php 脚本文件:.sh 配置文件:.conf
- 注意: Linux不靠扩展名区分文件信息,而且所有存储设备必须挂载后方可使用(硬盘,U盘,光盘)
- 一些主要目录 /bin/ ( bin的意思是二进制可执行文件) /sbin/ /usr/bin/ /usr/sbin/ /boot/:系统启动相关数据。需要备份时 /boot目录(也需备份) /dev:硬件信息 设备文件保存文字 /etc :(也需备份) 配置文件保存位置 如账 户,密码 /lib/ :系统函数保存位置 (也需备份) /lost found/:意外关机或者系统崩溃产生的碎片文件 可以复原 家目录 /media/: 挂载目录 软盘或光盘 /mnt/: 挂载U盘或者移动硬盘
- 空目录才可以作为挂载点 例如:/mnt/cdrom 挂载光盘 /mnt/usb 挂载U盘 /opt/ :第三方软件保存位置 不过保存到/usr/local/里更好 为约定俗成的 /proc/ :保存系统内核 进程的 例如CPU信息不能存放文件没有意义 内存占满死机 没满重启消失 /sys/ :与proc一样 是在内存里的 不可以写东西 放内核信息 /tmp/ :临时目录 做练习 /usr/:系统软件资源目录(也需备份) /var/: 动态数据保存 保存缓存,日志以及软件运行产生的文件(也需备份) 文中标记(也需备份)的为在服务器中使用进行安全备份时主要的备份目录 非常重要
- 常用命令 ls -a 查看隐藏文件 ls -l 长显示,显示文件或者目录详细信息包括大小 修改时间 ls -d 显示目录 ls -h 更加人性化显示 比如字节转换为MB,GB 不用自己算 ls -i 查询文件inode号(inode存储文件的详细信息) 信息编号,类似于人的身份证号码
- 用户有三类 第一类:所有者(只有一个) 第二类:所属组 第三类:其他人 在 ls -l 查询文件详细信息后,第一列会出现类似:-rwxr-xr-x 这样的字符,其中开头的 – 便是代表这个文件是二进制文件的意思,以下为其他开头的含义: -:二进制文件 d:目录 l :软链接文件 r 代表可以读 w 代表可以写 x代表可以执行 -rwxr-xr-x -(rwx)(r-x)(r-x ) Linux中的文件以这种方式来显示不同用户的不同权限 u g o u 所有者 g 所属组 o 其他人 -(rwx)(r-x)(r-x )说明这个文件:所有者可以读,写,执行;所属组可以读和执行,但是不能写;其他人可以读和执行,但是不能写。
第二讲 目录处理命令
- mkdir 创建目录 在/tmp/目录下创建临时文件 只能创建/tmp/***** 二级目录 mkdir -p 可以递归创建 在没有一级目录的情况下新创建二级目录 pwd 显示当前所在路径 cd . . 返回上一级目录(两个点连着) rmdir 删除空目录 只能删除没有文件的空目录 (不经常使用) cp 复制文件 cp [原文件路径][需要复制到的路径] cp -r 复制目录 cp -p 保留原文件属性复制目录 比如保留创建时间 日志文件的复制需要用到 cp -rp 复制目录并且保留原文件属性 mv 剪切 改名(在同一个目录下为改名) rm 删除文件 rm -f 强制删除 不再询问 rm -r 删除目录 一般是rm -rf 连着用 control C退出选项 注意: rm -rf 使用时一定要谨慎 切记 !!! 使用时一定要谨慎 切记 !!! 使用时一定要谨慎 切记 !!! rm -rf /* 系统直接全部被删除!!!
第三讲 文件处理命令
- touch [文件名] 在当前目录下创建空文件 touch[绝对路径 文件名]。 指明绝对路径,在绝对路径处创建文件 “Program files” 加双引号创建带空格的文件名 不推荐使用 以后的查询,操作都需要用到 除了代表根分区的/ 以外 其他符号都可以
- cat [文件名] 显示文件内容 只适合短的文件内容 cat -n [文件名] 显示行号 给文件内容的每一行标号 cat -A [文件名] 显示隐藏字符 tac [文件名] 逆序显示文件内容 倒着来 不支持-n
- more [文件名] 一页一页显示文件内容 适合长的文件内容 空格或者f 翻页 回车(Enter)一行一行翻,换行 q或者Q ,退出
- less [文件名] 一页一页显示文件内容,只不过这条命令可以往回翻页,查看翻过的文件内容 page up向上翻页,↑箭头向上翻一行 其他操作和more命令一样 在less命令中 可以按/ 需要查找文件内容的关键字查询内容,高亮内容即为含有关键字的内容,按n(表示next)可以查看下一个含有关键字的内容
- head [文件名] 显示文件最前几行 具体几行加n head -n 行数 [文件名] 没有指定 默认10行
- tail [文件名] 显示文件最后几行 具体几行加n tail -n 行数 [文件名] 没有指定 默认10行 tail -f 动态显示文件末尾内容
第四讲 链接命令
首先给大家介绍一下软链接: 软链接的作用和Windows中的快捷方式是差不多的。他只不过是指向源文件安装路径的符号链接,所以大小也很小 而且它的文件类型是lrwxrwxrwx 看似三种用户都可以拥有所有权限。其实,真正拥有的权限是源文件所决定的权限 ,所以这中显示也是软链接的一大特征之一。
- ln -s [原文件] [目标文件] 创建软链接
硬链接: 硬链接就是把源文件拷贝到目标位置,而他与cp -p 最大的一点区别就是他可以同步更新,源文件有变化 硬链接文件也会同时发生变化,但是如果源文件丢失或者被删除,硬链接也并不会消失。可以通过i节点来区分,源文件和硬链接文件的i节点是一样的,所以他们会同步更新,但是他不能跨分区放置硬链接比如:/分区 硬链接 不能放到/boot 分区 ,而且不能对目录使用。
- ln [原文件] [目标文件] 创建硬链接
第二节 权限管理命令
第一讲 权限管理命令chmod
这一部分主要说明一下如何修改文件或者目录的权限。
- chmod [{u,g,o,a}{ ,-,=}{r,w,x}] [文件或者目录] u :所有者 g :所属组 o :其他人 a :所有用户 例如:chomd g x,o r /tmp/testfile 就是把testfile文件的所有组增加执行权限,其他人增加读权限 chomd a=rwx /tmp/testfile 就是testfile文件的所有用户增加读写执行权限
权限位的数字表示:
- chmod [rwx的和,rwx的和,rwx的和]] [文件或者目录] 首先需要知道 r=4 w=2 x=1 例如:rwxrw-r- – 它的权限位数字表示就是 764 具体算法: r w x=4 2 1=7 r w=4 2 0=6 r=4 0 0=4
- chmod -R [rwx的和,rwx的和,rwx的和][文件或目录] 这条命令与mkdir -p递归创建目录一样 这个命令把一个目录下的所有子目录的操作权限全部修改为同样的
- 创建用户命令 useradd [用户名] 创建普通用户 passwd [用户名] 用户密码 su – [用户名] 切换普通用户**
我们仍需注意在文件与目录中的不同权限,他们具体可以实施的操作是什么!这一点非常重要,有许多人到现在也不太清楚,认为对文件有写权限就可以删除文件。这一点是非常错误的。
附下表以供参考:
代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 可以cat/more/head/tail/less | 可以列出目录中的内容 可以ls |
w | 写权限 | 可以修改文件内容 可以vim | 可以在目录中创建,删除文件 可以touch/mkdir/rmdir/rm |
x | 执行权限 | 可以执行文件 可以script(脚本) command(命令) | 可以进入目录 可以cd |
第二讲 其他权限管理命令
改变文件或者目录所有者
- chown [所有者] [文件或者目录]
改变所有组
- Groupadd [所有组组名] 添加组
- chgrp [所有组][文件或者目录] 默认组为创建文件的所有者的缺省组
- umask -S 以rwx形式显示新建文件缺省权限
改变文件或者目录所有者和所属组
- chown [所有者]:[所属组] [文件或者目录]
但是在mkdir 一个目录之后 进行ls -ld 发现他的权限为 drwxr-xr-x 但是在touch 一个文件之后 进行ls -l 发现他的权限为-rw-r- -r- – 这是因为在Linux系统里面把任何新建的文件都会把可执行权限去掉,其实umask值还没变,只不过是因为他是文件,木马病毒入侵之后没有可执行权限,就没有作用了。
- umask
umask 指令直接输入之后会显示 0022 其中 0代表特殊权限 022代表 777与022之间的一种逻辑与的关系 他会进行逻辑比对,两者重复的不能保留,把没有的写下来
777 rwx rwx rwx 022 — -w- -w- ————————— 755 rwx r-x r-x 目录 rw- r— r— 二进制文件 如果想把默认创建的文件改为700 700 rwx — — 目录 rw- — — 二进制文件 这样运算 进行逻辑与比对 777 rwx rwx rwx X ————————— 700 rwx — — 这就像一个解方程 求X X=— rwx rwx 077
可以使用umask 077 修改缺省创建文件权限,但是不推荐修改。
第三节 文件搜索命令
第一讲 文件搜索命令find
- find [搜索范围][匹配条件] 用于文件搜索
- find [搜索范围] -name [关键字] 在特定路径下搜索文件名作为关键字的文件或者目录
- find [搜索范围] -name [关键字]* 这样为带有关键字开头的任何文件都可以被搜索出来
- find [搜索范围] -name * [关键字] * 这样为带有关键字的任何文件都可以被搜索出来 匹配任意字符 加通配符*
- find [搜索范围] -name [关键字]??? 这样搜索的是关键字后带三个字符的 几个问号为几个字符
- find [搜索范围] -iname [关键字] 不区分大小写搜索 注意:不能在服务区高峰时候使用查找命令。太占内存资源,搜索的范围路径越小越好,搜索条件越精准越好
- find [搜索范围] -size [数据块] 根据文件大小查找 数据块前面加 表示查找大于这个大小的文件,-表示查找小于这个大小的文件,不加表示查找等于这个大小的文件(一般不常用) 1个数据块=512字节=0.5K size后接的数据只能为数据块 需要换算,比如需要查找大于100MB的文件 100MB=102400KB=204800 find /etc -size 204800 数据块为Linux存储文件最小单位
- find [搜索范围] -user [所有者名] 根据所有者查找
- find [搜索范围] -group [所属组名] 根据所属组查找
- find [搜索范围] -amin [时间] 查找时间以内被访问过的文件和目录 a:access
- find [搜索范围] -cmin [时间] 查找时间以内被修改过属性的文件和目录 c:change
- find [搜索范围] -mmin [时间] 查找时间以内被修改过内容的文件和目录 m:modift :超过多长时间 -:多长时间以内
- find [搜索范围] -size [数据块] -a -size [数据块] -a:两个条件同时满足 -o:两个条件满足任意一个即可 find /etc -size 163840 -a -size -204800 在/etc下查找大于80MB小于100MB的文件
- find [搜索范围] -name [关键字] -a -type f 在特定路径下搜索文件名作为关键字的文件 -type 根据不同类型查找 f:文件 d:目录 l:软链接
- find [搜索范围] -name [关键字] -exec ls -l {} ; 查找到文件之后并且对其进行查看ls操作。 -exec:查找到文件之后并且对其进行各种操作 {} ;不能丢 -ok:用于询问确认 一般在删除操作的时候使用,比如: find -user yangyang -ok rm {} ; 删除yangyang用户的文件 他会挨个询问你是不是确定删除
- find [搜索范围] -inum [i节点值] 根据i节点查询 find /etc -inum 12345 -exec rm {} ; 删除这个i节点文件 非常方便 也可以用来查询一个文件的硬链接 find /etc inum 12345 -exec ls -l {} ; 因为硬链接和文件肯定在同一个分区,并且i节点一样
第二讲 其他文件搜索命令
- locate [文件名] 在文件资料库中查找 速度更快 updatedb 更新文件资料库 因为locate并不是实时的 如果存放的文件在/tmp 临时文件存放处下面 locate就找不到,文件资料库不存储临时文件内容 注意:在使用的Linux系统为Linux(CentOS7)的时候,使用命令locate时发现系统显示:-bash: locate: 未找到命令,遇到错误。它的原因是:在CentOS 7 系统中默认没有安装该命令。 以下为解决办法: 链接: 解决locate命令未找到问题.
- locate -i 不区分大小写查找
- which 查找命令存放位置,可以看到命令可以使用的使用者是谁,也可以查看命令别名 which rm 会显示 alias rm=’rm -i’ 我们所使用的rm只不过是别名 不是真正的rm命令,其实是rm -i命令,所以才会询问是否真的删除,真正的rm是不会询问的,比如: /bin/rm /tmp/yangyang 文件直接删除不会询问是否删除 相当于加了 -f
- whereis 也可以找到命令的绝对路径,还可以找到查询命令的帮助信息文档所在位置
- grep 在文件内查询字符串或者关键字列出来
- grep -i 不区分大小写查找
- grep -v 排除指定字符串 比如: grep -v ^# /etc/inittab 查找排除#开头的注释行文件信息 ^代表行首 文件中#开头的行 为配置文件信息,脚本信息
第四节 帮助命令
- man [命令名称或者配置文件名称] 获得命令或者配置文件的帮助信息 man后面直接写命令或者配置文件的名称就好,不能加绝对路径。进入里面之后操作和more,或者less一样。 如过使用CentOS服务器,没有man命令,需要输入下面命令来下载: sudo yum install man-pages 配置文件帮助文档第一步看他是干什么用的,第二步看配置文件的格式。 man services service-name | port/protocol | [aliases …] 服务名称 | 端口/传输协议 | [别名] 就可以看懂more /etc/services里的配置文件了 man passwd 他会把命令,命令的帮助,配置文件,全部找到 通过whereis passwd 可以发现 /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz 有三个路径 他们分别为命令的路径,命令的帮助的路径,配置文件的帮助路径 其中man1代表命令的帮助,man5代表配置文件的帮助 所以我们可以通过man 5 passed就可以直接找到配置文件的帮助
- whatis ls [命令] 查询简短的命令的作用
- apropos [配置文件名称] 查询简短的配置文件的作用
- [命令] – -help 找到命令的主要选项
- date 查询系统当前时间 如果想修改提前用man date 查看一下时间格式 例如: date 051910272020.18 修改完毕 man与info作用大同小异,没有本质区别,依照个人习惯使用
- help 查询shell内置命令的帮助信息 在CentOS7之前的版本 直接which 命令是找不到所在路径的,因为: Shell是一个命令解释器 它里面有内置命令比如cd,umask 他们使用which后找不到命令所在路径,他们就不能使用man 命令 ,他会把所有的内置命令全列出来 可以直接使用help help用于内置命令的帮助和shell编程查看语法规则
第五节 用户管理命令
- useradd 添加新用户
- passwd [新用户名称] 给新用户填加密码
- who 查看登陆用户信息 第一列 登陆用户名 第二列 登陆终端 tty表示本地终端 pts表示远程登陆终端 第三列 登陆时间 第四列 登陆主机的IP地址 如果没有写表示本机登陆
- w 查看登陆用户详细信息 第一行显示 17:04:55 up 22 days, 21:32, | 2 users,| load average: 0.02, 0.02, 0.05 第一个表示当前时间 第二个表示服务区系统连续运行时间没有重启或者关机,衡量服务区稳定性 第三个表示当前总共有多少个用户登陆 第四个表示负载均衡指数,分别记录了过去一分钟,五分钟,十五分钟系统的负载情况,加起来除以三就是平均负载指数,系统的负载情况主要是指 CPU和内存的负载情况,数字大表示负载严重 uptime 命令也可以显示此项数据 第二行显示 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 其中IDLE表示用户登陆过来后空闲多久 PCPU表示用户登陆后执行的操作占用的CPU的时间 CPU时间 JCPU表示累计占用的CPU时间 WHAT表示执行的操作
第六节 压缩解压命令
- gzip [文件名] 压缩文件 只能压缩文件不能压缩目录,而且不保留原文件 压缩后格式为:.gz
- gunzip [压缩包名] 解压缩.gz文件
- gzip -d [压缩包名] 也是一样的作用,解压缩.gz文件
- tar [选项] [压缩后文件名] [目录] -c 打包 -v 显示详细信息 -f 指定文件名 -z 打包同时压缩 例子: tar -cfv Japan.tar Japan 打包目录Japan 并且以Japan.tar命名 tar -zcfv Japan.tar.gz Japan 打包并且压缩 目录Japan 以Japan.tar.gz命名 一步到位
- tar [选项] [压缩文件名] [目录] -x 解包 -v 显示详细信息 -f 指定解压文件名 -z 解压缩 tar -xfv Japan.tar Japan 解包目录Japan.tar并且以Japan命名 tar -zxfv Japan.tar.gz 解压缩并且解包目录Japan.tar.gz以Japan命名
- zip [选项] [压缩后文件或目录名] [文件或目录] 原文件会保留 而且提示压缩比 deflated 没有gzip压缩比大,不常用 压缩后格式为:.zip zip -r 压缩目录
- unzip [压缩文件] 解压zip文件
- bzip2 [选项] [文件名] 压缩文件,大型文件一般用这个压缩 例子: bzip2 -k Japan -k:保留原文件 如果不需保留可去掉 生成Japan.bz2压缩文件 他还可以与tar结合使用 tar -cjfv Japan.tar.bz2 Japan
- bunzip2 [选项] [压缩文件名] 解压文件 -k:保留压缩包 与tar结合使用 tar -xjfv Japan.tar.bz2 Japan
第七节 网络命令
- write <用户名> 给在线用户发信息,按Ctrl D保存结束 只能给在线用户发 可以用w查询用户在线情况 不在线发不出去
- wall [信息] 发广播信息 群发所有在线用户
- ping [IP地址] 测试网络连通性 ping -c 指定发送次数
- ifconfig 查看网卡信息 主要功能是查询当前本机IP地址
- mail <用户名> 给不在线的用户发送邮件 例子:mail yangyang 进入之后: Subject:输入标题 下面输入正文,按Ctrl D保存结束并发送 按mail查询收到的邮件 N 表示未读邮件 想看第几封邮件就按前面的标号数字 h键查看邮箱列表 d [n] 删除第n封邮件 q 退出 在CentOS7服务器中,比如阿里云ESC服务器中运行的CentOS7中,就会出现mail命令无法使用:Linux CentOS7 命令错误:send-mail: fatal: parameter inet_interfaces: no local interface found for ::1 解决办法写在了我的另一片博文上: 链接: mail命令错误解决办法. 以供大家解决问题。
- last 列出目前与过去登陆系统的用户信息
- lastlog 检查某特定用户上次登陆的时间
- lastlog -u [uID] 检查uID用户上次登陆的时间
- traceroute 显示数据包到主机间的路径 这里CentOS7用户也会出现traceroute命令不能使用的问题,直接下载traceroute就好了 yum install -y traceroute 安装
- traceroute [网站网址] 可以检查网络哪个节点出现问题
- netstat [选项] 显示网络相关信息 -t TCP协议:传输控制协议 -u UDP协议:用户数据报 -l 监听 -r 路由:网关 -n 显示IP地址和端口号 netstat -tlun :查询本机监听的端口 netstat -an :查看本机所有的网络连接 netstat -rn :查看本机路由(网关)
- setup 配置网络 redhat专有命令 ,在其他版本不存在,他是永久生效的 和刚开始介绍的ifconfig命令不一样 CentOS7使用 nmtui命令代替setup,不过是在虚拟机中调试
第七节 挂载命令
- mount [-t 文件系统] 设备文件名 挂载点
- mount 设备文件名/挂载点 卸载光盘,设备文件名和挂载点两者任选其一 第一步:放入光盘,虚拟机中放入,或者服务器下载ios文件 第二步:创建一个空目录,设为挂载点 mkdir /media/cdrom /media用来做光盘挂载的,/mnt 也可以 第三部:输入命令 mount -t iso9660 /dev/sr0 /media/cdrom 设备文件名默认就是/dev/sr0,文件系统为iso9660 它是国际标准的cd文件格式,它告诉mount命令,我要挂载的是一个标准的cd。需要死记!!! /dev/cdrom也可以写 /dev/sr0 /dev/cdrom是sr0的软链接。 第四步:进入挂载后的盘符 cd /media/cdrom 第四步:卸载光盘 先退出/media/cdrom,输入命令:cd;然后再输入命令:umount /dev/sr0 注意:如果之前挂载过其他盘,需要卸载之后才能挂载,输入命令: umount /dev/sr0
第八节 关机重启命令
- shutdown [选项] 时间 时间选项里可以填具体时间比如: now 现在关机 20:30 八点半关机 -c:取消前一个关机命令 -h:关机 -r:重启 例子: shutdown -h now 关机 shutdown -c 取消上一次设定的关机时间 在服务器上重启需要谨慎,需要先停掉服务,否则物理内存会坏 而且远程服务器只能重启,关机后需要管理员手动开机
- 其他关机命令: halt poweroff 相当于直接断电 init 0 推荐使用shutdown关机,会保存正在运行的服务 其他重启命令: reboot init 6 系统的运行级别: init 0-6 0:关机 1:单用户 进入选项菜单 只有root用户登陆进去 相当于Windows安全模式F8,只不过没有图形界面 2:不完全多用户,不含NFS服务,没有图形界面 NFS网络文件系统,Linux之间文件传输共享方式,除了NFS服务,和3一样。 3:完全多用户,没有图形界面 4:未分配,没有图形界面 5:图形界面 6:重启
- runlevel 查询系统运行级别
- logout 退出登陆命令 注意:在服务器中一定要在操作完成之后退出登陆,否则其他人会直接进入你的服务器,造成非常大的损失。最基本的安全意识一定要有!!!
第五章 文本编辑器Vim
第一节 Vim常用操作
Vim没有菜单,只有命令 Vim的工作模式有三种:
- 第一种:命令模式 vi/vim 文件名 进入命令模式 不可以输入文字,只能识别命令 插入命令: a:在光标所在字符后插入 A:在光标所在行尾插入 i:在光标所在字符前插入 I:在光标所在行行首插入 o:在光标下插入新行 O:在光标上插入新行
- 第二种:插入模式 按i/a/o进入,可以继续输入文字,按Esc退出
- 第三种:编辑模式 在命令模式下按:,即可进入 编辑模式 可以输入编辑命令 比如:保存并退出,加行号
定位命令:
- :set nu 设置行号
- :set nonu 取消行号
- gg 到第一行
- G 到最后一行
- nG 到第n行
- : n 到第n行 和上面一样的格式
- $ 移动到行尾
- 0 移动到行首
- 删除命令:
- x 删除光标所在处的字符
- nx 删除光标所在处后n个字符
- nd 删除光标所在行
- ndd 删除n行
- dG 删除光标所在行到文件末尾的内容
- D 删除光标所在处到行尾内容
- :n1,n2d 删除指定范围的行 n1-n2的行全部被删除
- 复制和剪切命令:
- yy 复制当前行
- nyy 复制当前行一下n行
- dd 剪切当前行
- ndd 剪切当前行以下n行
- p 粘贴在当前光标所在行下
- P 粘贴在当前光标所在行上
- 替换或取消命令:
- r 替换光标所在处字符
- R 从光标所在处开始替换字符,按Esc结束
- u 取消上一不操作
- 搜索和搜索替换命令:
- /string 搜索指定字符串string 与less命令操作类似 搜索时忽略大小写:set ic 搜索时不忽略大小写:set noic
- n 搜索指定字符串的下一个出现位置
- :%s/要替换的字符串/替换的新的字符串/g 不询问 把/g换成/c 进行询问确认 全文替换指定字符串
- :n1,n2s/要替换的字符串/替换的新的字符串/g 在一定范围内替换指定字符串
- 保存和退出命令: :w 保存修改 :w new_filename 另存为指定文件 :wq 保存修改并退出 ZZ 快捷键,保存修改退出 :q! 不保存修改退出 :wq! 保存修改并退出(只有文件所有者以及root可以使用)适合保存root只有只读权限的文件
第二节 Vim使用技巧
在Vim中有许多黑科技小技巧便于我们操作,我总结了以下几天最为方便的操作,以供大家学习:
- :r !命令 当前的Vim文档导入命令执行结果 例子: :r !date 直接把当前时间导入当前的Vim文档
- map [快捷键] [触发命令] 定义快捷键 其中快捷键需要按ctrl v 需要设定的键位,设定好之后颜色会变,比如想设定ctrl p为快捷键那么就按ctrl v p 会出现^P ,不能按shift 6出现的^,这两个虽然看起来一样但是颜色不一样 触发命令按需要执行的命令的先后顺序来排列,比如给脚本加注释#键就可以把[触发命令]设为I# 例子: map ^P I# 给脚本行首加#注释
- :n1,n2s/^/#/g 替换行首字符为#,连续行的注释,不过需先设置行号 :set nu
- :n1,n2s/^#/ /g 取消注释
- :n1,n2s/^/ / //g 给行首加// 需先设置行号 :set nu 因为系统无法识别太多的,所以需要在//每一条/前都加转义符,表达命令的正在含义,比如ls /etc 里面的文件会有颜色,但是ls 就没有,他是表达执行ls真正含义不执行ls别名
- ab [a内容][b内容] 例子: ab mymail 1771566679@qq.com 替换命令,当你在vim文档中输入mymail时按回车或者空格会自动变1771566679@qq.com 即:会自动把b内容替换成a 非常实用的小技巧
有些时候在重启服务器之后,定义的快捷键会消失,这时候我们需要在用户的家目录下写配置文件,保存快捷键 root用户在 /root/.vimrc 其他用户在 /home/username/.vimrc在里面进行编辑,永久生效
第六章 软件包管理
第一节 软件包管理简介
源码包:可以看到源代码,但是安装时间较慢,脚本安装包 类似Windows安装软件, 他是写了安装界面的源码包
- 优点:
- 1.开源,如果有足够的能力,可以修改源代码
- 2.可以自由选择所需的功能
- 3.软件是编译安装,所以更适合自己的系统,使用更加稳定也效率更高
- 4.卸载方便,直接删除安装目录
- 缺点:
- 1.安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
- 2.编译过程时间较长,安装比二进制安装时间长
- 3.因为是编译安装,安装过程中一旦报错新手很难解决
二进制包:RPM包,系统默认包,厂商已经进行了编译,看不到源代码,但是安装时间较快
- 优点:
- 1.包管理系统简单,只通过几个命令就可以实现包的安装,升级,查询和卸载
- 2.安装速度比源码包安装快得多
- 缺点:
- 1.经过编译,不再可以看到源代码
- 2.功能选择不如源码包灵活
- 3.依赖性 依赖性指的是要想安装A包就得先安装B包,要想安装B包又得先安装C包,所以只能以CBA的顺序安装RPM包,删除的时候得按ABC顺序删除安装包,基本上所有的RPM包全有依赖性
第二节 rpm命令管理
第一讲 包命名与依赖性
RPM包命名规则 例子: Httpd-2.2.15.el6.centos.1.i686.rpm 其中:
- Httpd 软件包包名
- 2.2.15 软件版本
- 15 软件发布的次数
- el6.centos 适合的Linux平台
- i686 适合的硬件平台 noarch 表示任何硬件平台都可以安装
- rpm rpm包扩展名
如果自己组建rpm包,都以rpm结尾,这样更加清晰,其他管理员可以明白 注意:Httpd-2.2.15.el6.centos.1.i686.rpm为包全名,Httpd 为包名是有区别的,Linux系统命令严格区分两者 RPM包依赖性
- 树形依赖:a→b→c
- 环形依赖:a→b→c→a
- 环形依赖需要把a,b,c三个同时安装 模块依赖:模块依赖查询网站:www.rpmfind.net ==如果安装时遇到问题,出现依赖性错误 被依赖文件以.so.[数字]结尾的为库依赖,需要直接安装这个软件,错误会自动解决 安装这个包时需要进入网站 www.rpmfind.net. 查询被依赖文件
第二讲 安装升级与卸载
包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径 包名:操作以及安装的软件包时,使用包名。是默认在搜索/var/lib/rpm中的数据库
- rpm -ivh 包全名 RPM安装 -i 安装(install) -v 显示详细安装信息(verbose) -h 显示进度(hash) –nodeps 不检测依赖性 一般不用,安装时都得显示依赖性 注意:安装一定要用包全名
- rpm -Uvh 包全名 RPM包升级 -U 升级(upgrade) rpm -e 包名 -e 卸载(erase) –nodeps 不检查依赖性
第三讲 查询
- rpm -q 包名 查询是否安装 -q 查询(query) rpm -qa 查询所有安装的包 -a 所有(all)
- rpm -qa | grep [关键字] 查询所有含义关键字的包,| 为管道符 。作用是管道符左边命令的输出就会作为管道符右边命令的输入 注意: 1、管道命令只处理前一个命令正确输出,不处理错误输出。 2、管道命令右边命令,必须能够接收标准输入流命令才行。
- rpm -qi 包名 查询安装过软件包详细信息 -i 查询软件信息(information) -p 查询未安装包信息(package)
- rpm -qip 包全名 查询没安装过软件包详细信息 因为包没有安装所以得加包全名,因为包在生产好的时候他的信息就已经生成,所以可以查到没安装好的包的信息
- rpm -ql 包名 查询包中文件安装位置 -l 列表(list) -p 查询未安装包信息(package)
- rpm -qf 系统文件名 查询系统文件属于哪个RPM包 -f 查询系统文件属于哪个软件包(file)
- rpm -qR 包名 查询软件包的依赖性 -R 查询软件包的依赖性(requires) -p 查询未安装包信息(package)
第四讲 校验和文件提取
- rpm -V 已安装的包名 RPM包校验
-V 校验指定RPM包中的文件(verify)
例子:rpm -V httpd 显示:
S.5……T. c /etc/httpd/conf/heepd.conf
- 验证内容中的8个信息的具体内容: S:文件大小是否改变 M:文件的类型或文件的权限(rwx)是否被改变 5:文件MD5校验和是否改变(可以看成文件内容是否改变) MD5是进行文件完整性验证的 D:设备的中,从代码是否改变 L:文件路径是否改变 U:文件的属主(所有者)是否改变 G:文件的属组是否改变 T:文件的修改时间是否改变
- 文件类型: c:配置文件(config file) d:普通文档(documentation) g:“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含 l:授权文件(license file) r:描述文件(read me)
- rpm2cpio 包全名 | cpio -idv.文件绝对路径 rpm2cpio 将rpm包转换为cpio格式的命令 cpio 是一个标准工具,他用于创建软件档案文件和从档案文件中提取文件
第二节 RPM包管理
第一讲 yum在线管理
第一部分 IP地址配置和网络yum源
IP地址配置 红帽使用setup 命令配置IP,子网掩码,网关,DNS 然后service network restart 重启网络服务 CentOS7使用nmtui命令配置IP,子网掩码,网关,DNS 然后service network restart 重启网络服务 云服务器进阿里云/腾讯云远程登陆端口配置 如果还没有联网 输入命令: vi/etc/sysconfig/network-scripts/ifcfg-eth0 进入Vim编辑器后把ONBOOT=“no”改为ONBOOT=“yes” ,接着需要使用命令service network restart,重新启动网卡 网络yum源 vi /etc/yum.repos.d/CentOS-Base.repo 其中:
- CentOS-Base.repo为网络yum源
- CentOS-Media.repo为本地磁盘yum源
进入yum内部配置文件中可以看到以下内容:
- [base]:容器名称,一定要放在[]中
- name:容器说明,可以自己随便写
- mirrorlist:镜像站点,这个可以注释掉
- baseurl:我们的yum源服务器的地址。默认是CentOS的官方的yum源服务器,是可以使用的,如果觉得慢可以改成你喜欢的yum镜像源地址
- enabled:此容器是否生效 如果不写或者写成enable=1都是生效的,写成enable=0就是不生效
- gpgcheck:如果1是指RPM的数字证书生效,如果是0则不生效
- gpgkey:数字证书的公钥文件保存位置。不用修改
第二部分 yum命令
- yum list 查询所有可用软件包列表
- yum search [关键字(包名)] 搜索服务器上所有和关键字相关的包
- yum -y install [包名] 安装软件包 install 安装 -y 自动回答yes
- yum -y update [包名] 升级软件包 update 升级 -y 自动回答yes 注意:yum -y update 后必须加包名,否则就是全盘更新,包括Linux内核也会更新,Linux内核在更新完成之后需要在本地进行配置,内核才可以启动,如果你是在服务器上跑这条命令,服务器直接崩溃,永远无法连接,再也不能启动!!!
- yum -y remove 包名 卸载包 remove 卸载 -y 自动回答yes 注意:yum -y remove卸载会把包所有的依赖包都会卸载,有时候会把系统文件也同时卸载,小心使用,尽量不要多用!!!
Linux 服务器安装软件包原则: 最小化安装,不安装多余软件,使用什么软件安装什么软件,手工装,尽量不卸载,尤其yum卸载尽量不要用!!!
yum软件组管理命令
- yum grouplist 列出所有可用的软件组列表
- yum groupinstall “软件组名” 安装指定软件组,组名可以由grouplist查询出来,如果组名之间有空格,用双引号扩起来
- yum groupmove 软件组名 卸载指定软件组
第三部分 光盘yum源搭建
光盘yum源搭建步骤:
- 第一步:挂载光盘 mount /dev/sr0 /mnt/cdrom
- 第二步:让网络yum源失效 把/etc/yum.repos.d/文件里除了CentOS-Media.repo文件的其他文件全部改名,把repo后缀改了,随便改一个,比如.bak 还可以让每个文件里面的enabled=0
- 第三步:修改光盘yum源文件 vim CentOS-Media.repo [容器] 改为c6-media 叫什么都可以 name=CentOS-$releaserver – Media 名称叫什么都可以 baseurl=file:///mnt/cdrom 地址为自己的光盘挂载地址 file:// 为固定格式不能省略 /mnt/cdrom为光盘挂载地址 把下面两个多余地址用#注释了 然后把enabled=0改为enabled=1 让源配置文件生效 注意:千万不要随意改配置文件格式,加注释,加空格缩紧 都会造成命令错误!!!!!
第三节 源码包管理
第一讲 源码包和RPM包的区别
安装之前的区别:概念上的区别 安装之后的区别:安装位置不同
- RPM包默认安装路径(绝大部分软件文件安装位置)
- /etc 安装文件安装目录
- /usr/bin/ 可执行的命令安装目录
- /usr/lib 程序所使用的函数库保存位置
- /usr/share/doc/ 基本的软件使用手册保存位置
- /usr/share/man 帮助文件保存位置
- 源码包安装位置: 安装在指定位置当中,一般是 /usr/local/软件名/
- 安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的Apache的启动方法是:
- /etc/rc.d/init.d./httpd start
- service httpd start (红帽系列专有命令,如果没有只能靠/etc/rc.d/init.d./启动)
RPM包的启动文件全在/etc/rc.d/init.d./里,servic会搜索RPM包所有的安装路径,所以service才能启动RPM包软件,但是启动不了源码包软件,因为源码包在/usr/local里,和RPM包不一样
- 源码包启动使用绝对路径加start
第二讲 源码包安装过程
这里举例(安装Apache)说明一下:
- 1.安装准备 安装C语言编译器 使用命令: yum -y install gcc gcc-c autoconf pcre pcre-devel make automake 下载源码包 http://mirror.bit.edu.cn/apache/httpd/ 选择任何版本,比如: httpd-2.4.43.tar.bz2 版本
- 2.注意事项 源码包保存位置:/usr/local/src 软件安装位置:/usr/local 然后确定安装过程报错: 安装过程停止,并出现error,warning或者no提示,即发生错误 把电脑本机下载好的源码包传输到Linux系统或者服务器上 Windows下载WinSCP软件进行本机与虚拟机或者远程传输 Mac连接远程阿里云服务器,终端使用命令 scp进行传输: scp -r localfile.txt username@192.168.0.1:/home/username/ 其中, 1)scp是命令,-r是参数 2)localfile.txt 是文件的路径和文件名 3)username是服务器账号,一般为root 4)192.168.0.1是要上传的服务器ip地址 5)/home/username/是要拷入的文件夹路径,一般为/root 家目录 例子: scp -r /Users/yangyangyang/Desktop/httpd-2.4.43.tar.bz2 root@47.95.5.171:/root
- 3.解压下载到源码包 使用命令 tar -jxvf httpd-2.4.43.tar.bz2 如果是tar.gz压缩包可以使用 tar -zxvf 命令
- 4.进入解压缩目录 输入命令:cd httpd-2.4.43 INSTALL:安装说明 README:使用说明 进入安装说明:vi INSTALL ./configure –prefix=PREFIX 编译前准备 make 进行编译 make install 编译安装 PREFIX/bin/apachectl star 启动命令 这些为详细的安装步骤,其中: ./configure为软件配置与检查 我们也称编译前准备 1.定义需要的功能选项。 2.检测系统环境是否符合安装要求 3.把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
- 4.定义安装路径 退出之后 输入命令:./configure –prefix=/usr/local/apache2 如果报错显示: 进以下网址寻求解决办法 http://www.cnblogs.com/yuzhaokai0523/p/4382974.html
- 5.完成定义: 输入命令:make 进行编译
- 6.完成编译: 输入命令:make install 编译安装
- 7.启动: 输入命令:/usr/local/apache2/bin/apachectl start PREFIX/bin/apachectl star中 PREFIX为软件安装路径 启动apache遇到错误:httpd: Could not reliably determine the server’s fully qualified domain name 解决办法: 1.cd /usr/local/apache2/conf 2.vi httpd.conf 找到#ServerName www.example.com:80 并且在下面一行添加 ServerName localhost:80 localhost可以换成阿里云的IP 3.保存并退出 4.再重新启动apache /usr/local/apache2/bin/apachectl start
阿里云服务器的Linux需要关闭防火墙,然后在控制台里面的实例添加一个安全组,端口号为80的,协议是TCP 如果还是不行的话联系我的QQ:1771566679
如果在以后碰到 ./configure这一步编译错误,问题解决不了 自己输入命令:make clear 自己清除所有编译产生的临时文件,因为在输入make instal之后软件才真正开始安装。
第四节 脚本包管理
第一讲 脚本包安装
脚本包:
- 脚本安装包并不是独立的软件包类型,常见安装的是源码包。
- 是人为把安装过程写成了自动安装的脚步,只要执行脚本,定义简单的参赛,就可以完成安装。
- 非常类似于Windows下软件的安装方式。
安装程序以.sh结尾 下一步点回车 再输入的时候如果想删除字符按ctrl 退格键 比如安装Webmin 网页系统用户管理,图形化工具管理
第七章 用户和用户组管理
第一节 用户配置文件
第一讲 用户信息文件/etc/passwd
- 用户管理简介:
- 越是对服务器安全性要求高的服务器,越需要建立合理的用户权限登记制度和服务器操作规范
- 在Linux中主要是通过用户配置文件来查看和修改用户信息 /etc/passwd 通过命令:man 5 passwd 来查看passwd配置文件帮助信息 5代表配置文件
- passwd配置文件分为七个字段:
- 第一个字段:用户名称
- 第二个字段:密码标志 x代表用户有密码,真正的密码放在/etc/shadow里,它里面进行了SHA512加密,如果没有x,代表没有密码,只能进行本地登陆,远程登陆会被禁止,SHA协议禁止
- 第三个字段:UID(用户ID)
- 0:超级用户
- 1-499:系统用户(伪用户)
- 500-65535:普通用户
- 第四个字段:GID(用户初始组ID)
- 初始组:就是指用户一登陆就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组
- 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个
- 第五个字段:用户说明
- 第六个字段:家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
- 第七个字段:登陆之后的Shell Shell就是Linux的命令解释器 在/etc/passwd当中,除了标准Shell是/bin/bash之外。还可以写如/sbin/nologin,普通用户全为/sbin/nologin /bin/bash为可以登陆,/sbin/nologin为禁止登陆,修改之后便可以禁止普通用户登陆
第二讲 影子文件/etc/shadow
Shadow配置文件分为个字段:
- 第一个字段:用户名
- 第二个字段:加密算法 加密算法升级为SHA512散列加密算法 如果密码是“!!”或者“0”代表没有密码,不能登陆 可以用感叹号禁用用户密码
- 第三个字段:密码最后一次修改日期 使用1970年1月1日作为标准时间,每过一天时间戳加1 时间戳换算: 时间戳换算日期: date -d “1970-01-01 [时间戳] days” 日期换算时间戳: echo ( ( (( ((date –date=“年/月/日” %s)/[时间戳] 1))
- 第四个字段:两次密码的修改时间间隔时间(和第三个字段相比)
- 第五个字段:密码有效期(和第三个字段相比)
- 第六个字段:密码修改到期前的警告天数(和第五个字段相比)
- 第七个字段:密码过期后的宽限天数(和第五个字段相比) 0:代表密码过期后立即失效 -1:代表密码永远不会失效
- 第八个字段:账号失效时间 要用时间戳表示
- 第九个字段:保留
第三讲 组文件信息/etc/group
组文件信息配置文件分为个字段:
- 第一个字段:组名
- 第二个字段:组密码标志
- 第三个字段:GID
- 第四个字段:组中附加用户
第四讲 组密码文件/etc/gshadow
组密码文件配置文件分为个字段:
- 第一个字段:组名
- 第二个字段:组密码
- 第三个字段:组管理员用户名
- 第四个字段:组中附加用户
第二节 用户管理相关文件
- 用户的家目录
- 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
- 超级用户:/root/,所有者和所属组都是root用户,权限是550
普通用户变为超级用户家目录不会变
- 用户的邮箱 /var/spool/mail/用户名/
- 用户模板目录 /etc/skel 在/etc/skel里创建了文件的话,在创建新用户时会自动出现在新用户家目录的默认隐藏信息里(用于写警告信息)
第三节 用户管理命令
第一讲 用户添加命令useradd
useradd命令格式
- useradd[选项] 用户名
- -u UID:手工指定用户的UID号
- -d 家目录:手工指定用户的家目录
- -c 用户说明:手工指定用户的说明
- -g 组名:手工指定用户的初始组
- -G 组名:手工指定用户的附加组
- -s shell:手工指定用户的登陆shell。默认是/bin/bash
例子: useradd yangyang grep yangyang /etc/passwd grep yangyang /etc/shadow grep yangyang /etc/group grep yangyang /etc/gshadow ll -d /home/yangyang ll /var/spool/mail/yangyang 里面都有新用户信息
- 用户默认值文件
里面定义了建立用户的默认信息
- /etc/default/useradd
- GROUP=100 用户默认组
- HOME=/home 用户家目录
- INACTIVE=-1 密码过期宽限天数(shadow文件第七个字段)
- EXPIRE= 密码失效时间(shadow文件第八个字段)
- SHELL=/bin/bash 默认shell
- SKEL=/etc/skel 模板目录
- CREATE_MALL_SPOOL=yes 是否建立邮箱
- /etc/login.defs
- PASS_MAX_DAYS 99999 密码有效期shadow文件第五个字段)
- PASS_MIN_DAYS 0 密码修改间隔shadow文件第四个字段)
- PASS_MIN_LEN 5 密码最小5位(PAM) 现在为PAM生效,5位密码不生效
- PASS_WARN_AGE 7 密码到期警告shadow文件第六个字段)
- UID_MIN 500
- UID_MAX 60000 最小和最大UID范围
- ENCRYPT_METHOD SHA512 加密模式
- /etc/default/useradd
第二讲 修改用户密码passwd
passwd [选项] 用户名
- -S 查询用户密码的密码状态。仅root用户可以
- -l 暂时锁定用户/仅root用户可用
- -u 解锁用户。仅root用户可用
- –stdin 可以通过管道符(|)输出的数据作为用户的密码 例子:echo“123” | passwd —stdin [用户名 ]
第三讲 修改用户信息usermod
usermod [选项] 用户名
- -u UID:修改用户的UID号
- -c 用户说明:修改用户的说明信息
- -G 组名:修改用户的附加组
- -L:临时锁定用户(Lock)
- -U:解锁用户锁定(Unlock)
第四讲 修改用户密码状态chage
chage [选项] 用户名
- -l:列出用户的详细密码状态
- -d [日期] :修改密码最后一次更新时间(shadow文件第三个字段) 例子重要用法: chage -d 0 [用户名] 这个命令其实是把密码修改日期归0了,这样用户一登陆就要修改密码(学校,公司身份系统修改初始密码)
- -m [天数]:两次修改密码间隔(shadow文件第四个字段)
- -M [天数]:密码有效期(shadow文件第五个字段)
- -W [天数]:密码过期前警告天数(shadow文件第六个字段)
- -I [天数]:密码过期后宽限天数(shadow文件第七个字段)
- -E [日期]:账号失效时间(shadow文件第八 个字段)
第五讲 删除用户userdel
userdel [-r] 用户名
- -r:删除用户的同时删除用户家目录
- Id 用户名 查看用户ID,UID,GID
第六讲 用户切换命令su
su [选项] 用户
- – :选项只使用“-”代表连带用户的环境变量一起切换
- env:查看用户环境变量
- -c:仅执行一次命令,而不切换用户身份 例子: su – root -c “useradd yangyang” 不切换成root,但是执行useradd命令添加yangyang用户
第四节 用户组管理命令
groupadd [选项] 组名
- -g GID:指定组ID
groupmod [选项] 组名 修改用户组
- -g GID:修改组ID
- -n 新组名:修改组名
groupdel 组名:删除用户组 gpasswd 选项 组名 :把用户添加入组或者从组中删除
- -a 用户名 :把用户加入组
- -d 用户名 :把用户从组中删除
第八章 权限管理
第一节 ACL权限
第一讲 ACL权限简介与开启
ACL权限是为了解决所有者,所属组,其他人三个权限用户身份分配不足的问题
- dumpe2fs -h [分区] dumpe2fs命令是查询指定分区详细文件系统信息的命令
- -h :仅显示超级块中信息,而不显示磁盘块组的详细信息
临时开启分区ACL权限 mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限 永久开启分区ACL权限 vim /etc/fstab 显示:UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults 1 1 在ext4后面的 defaults加,acl 成为 UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults,acl 1 1 然后输入:mount -o remount / 重新挂载文件系统或重启系统,使修改生效 Linux现在一般所有分区全部默认开启ACL,不用修改配置
第二讲 ACL权限查看与设定
- getfacl 文件名 查看ACL命令 查看ACL权限
- setfacl [选项] 文件名
- -m:设定ACL权限
例子:
- setfacl -m u:st:rx /tmp/project 给用户设定ACL权限读和操作
- setfacl -m g:tg1:rwx /tmp/project 给用户组设定ACL权限读,写和操作
- -x:删除指定的ACL权限
- -b:删除所有的ACL权限
- -d:设定默认的ACL权限
- -k:删除默认ACL权限
- -R:递归设定ACL权限
- -m:设定ACL权限
例子:
第三讲 ACL权限最大有效权限与删除
最大有效权限mask mask是用来指导最大有效权限的。如果给用户赋予了ASL权限,是需要和mask 的权限“相与”才能得到用户的真正权限
- setfscl -m m:rx 文件名 设定mask权限为r-x。使用“m:权限”格式 为了防止用户或者用户组给的权限过高,提前设定
权限的删除
- setfacl -x u:用户名 文件名 删除指定用户的ACL权限
- setfacl -x g:组名 文件名 删除指定用户组的ACL权限
- setfacl -b 文件名 会删除文件的所有ACL权限
第四讲 ACL权限默认与递归
递归ACL权限 递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限 命令:
- setfacl -m u:用户名:权限 -R 目录名 -R必须在这个位置
默认ACL权限 默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有新建的子文件和子目录都会继承父目录的ACL权限 命令:
- Setfacl -m d:u:用户名:权限 目录名 可以在权限后面加-R来进行递归
第二节 文件特殊权限
第一讲 SetUID
- 只有可以执行的二进制程序才能设定SUID权限,普通文件或者目录没有意义
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
例子: passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
- 设定SetUID的方法
- chmod 4755 文件名 4代表SUID权限
- chmod u s 文件名
- 取消SetUID的方法
- chmod 755 文件名
- chmod u-s 文件名
如果用户对文件没有执行权限,就会报错,此时给他加特殊权限,就会显示大S 危险的SetUID 关键目录应当严格控制写权限。比如:“/”,“/usr”等 用户的密码设置要严格遵守密码三原则 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限
第二讲 SetGID
SetGID针对文件
- 只有可以执行的二进制程序才能设定SGID权限
- 命令执行者要对该程序拥有x(执行)权限
- 命令执行在执行程序的时候,组身份升级为该程序文件的所属组SetGID权限同只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
例子: locate 命令拥有SetGID权限,所以普通用户可以使用locate来查询
- 设定SetUID的方法
- chmod 2755 文件名 2代表SGID权限
- chmod g s 文件名
- 取消SetUID的方法
- chmod 755 文件名
- chmod g-s 文件名
SetGID针对目录 普通用户必须对此目录拥有r和x权限,才能进入此目录 普通用户在此目录中的有效组会变成此目录的所属组 若普通用户对此目录拥有w权限时,新建的文件的默认所属组是这个目录的所属组
第三讲 Sticky BIT
SBIT粘着位作用
- 粘着位目前只对目录有效
- 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
- 如果没有粘着位,因为普通用户拥有w权限,使用可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有了w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件
- 设定粘着位的方法
- chmod 1755 目录名 1代表粘着位
- chmod o t 目录名
- 取消粘着位的方法
- chmod 755 目录名
- chmod o-t 目录名
第三节 文件系统属性chattr权限
chattr命令格式
- chattr [ – =] [选项] 文件名或者目录名
- :增加权限
- -:删除权限
- =:等于某权限
- i:如果对文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但是不允许建立和删除文件
- a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除或者修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件
查看文件系统属性
- lsattr [选项] 文件名
- -a:显示所有文件和目录
- -d:若目标是目录,仅列出目录本身的属性,而不是子文件的
第三节 系统命令sudo权限
sudo权限
- root把本来只能超级用户执行的命令赋予普通用户执行
- sudo的操作对象是系统命令
sudo使用
- visudo 实际修改的是/etc/sudoers文件
- root ALL=(ALL) ALL 用户名 被管理主机的地址=(可使用身份) 授权命令(绝对路径)
- %wheel ALL=(ALL) ALL %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径) 被管理主机的地址:本机IP或者ALL,限制的不是来源IP,而是访问IP
例子: 授权用户可以可以重启服务器 visudo yangyang ALL= /sbin/shutdown –r now
sudo -l 查看可用的sudo命令 sudo [授权命令的绝对路径] 普通用户执行sudo赋予的命令 例子: sudo /sbin/shutdown -r now
第九章 文件系统管理
第一节 回顾分区和文件系统
分区类型
- 主分区:总共最多只能分四个
- 扩展分区:只能有一个,也算作主分区的一种 ,也就是说主分区加扩展分区最多有四个。但 是扩展分区不能存储数据和格式化,必须再划 分成逻辑分区才能使用。
- 逻辑分区:逻辑分区是在扩展分区中划分的, 如果是IDE硬盘,Linux最多支持59个逻辑分区 ,如果是SCSI硬盘Linux最多支持11个逻辑分区 可以这样分区:
分区 | 位置 |
---|---|
主分区1 | /dev/sda1 |
主分区2 | /dev/sda2 |
主分区3 | /dev/sda3 |
扩展分区 | /dev/sda4 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
不过就是主分区只有一个,第一个逻辑分区也只能从5开始编号
分区 | 位置 |
---|---|
主分区1 | /dev/sda1 |
扩展分区 | /dev/sda2 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
其中sda6中的sd代表SATA硬盘接口,hd代表IDE硬盘接口,abcd代表第几块硬盘,1234代表主分区,5678代表逻辑分区
文件系统
- ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2 文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件(1TB=1024GB=1024*1024KB)
- ext3: ext3文件系统是ext2文件系统的升 级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性 。支持最大16TB的分区和最大2TB的文件
- ext4:它是ext3文件系统的升级版。ext4 在性能 、伸缩性和可靠性方面进行了大量改进。它的变化可以说是翻天覆地的,比如向下兼容 EXT3、最大1EB文件系统和16TB文件、无限数 量子目录、Extents连续数据块概念、多块分配 、延迟分配、持久预分配、快速FSCK、日志校 验、无日志模式、在线碎片整理、inode增强、 默认启用barrier等。是CentOS 6.3的默认文件系统 (1EB=1024PB=1024*1024TB)
第二节 文件系统常用命令
第一讲 df命令、du命令、fsck命令和dump2fs命令
文件系统查看命令df
- df [选项] [挂载点]
- -a 显示所有的文件系统信息,包括特殊文件系统,如 /proc、/sysfs
- -h 使用习惯单位显示容量,如KB,MB或GB等
- -T 显示文件系统类型
- -m 以MB为单位显示容量
- -k 以KB为单位显示容量。默认就是以KB为单位
统计目录或文件大小
- du [选项] [目录或文件名]
- -a 显示每个子文件的磁盘占用量。默认只统计 子目录的磁盘占用量
- -h 使用习惯单位显示磁盘占用量,如KB,MB 或GB等
- -s 统计总占用量,而不列出子目录和子文件的 占用量
du命令与df命令的区别
- df命令是从文件系统考虑的,不光要考虑 文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除 ,但是程序并没有释放空间)
- du命令是面向文件的,只会计算文件或目录占用的空间
文件系统修复命令fsck
- fsck [选项] 分区设备文件名
- -a: 不用显示用户提示,自动修复文件系统
- -y:自动修复。和-a作用一致,不过有些文件系统只支持-y
注意:知道就行,不必操作,有可能弄崩溃系统
显示磁盘状态命令dumpe2fs
- dumpe2fs 分区设备文件名
第二讲 挂载命令
查询与自动挂载
- mount 查询系统中已经挂载的设备
- mount -l 查询系统中已经挂载的设备并会显示卷标名称
- mount –a 依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式 mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
- -t 文件系统:加入文件系统类型来指定挂载的类型,如果文件系统是硬盘,分区就写ext3、ext4 ,如果是光盘,就写iso9660
- -L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
- -o 特殊选项:可以指定挂载的额外选项
参数 | 说明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件 的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount –a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认 是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载 默认是不允许,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
注意:针对的都是分区
第三讲 挂载光盘与U盘
挂载光盘 例子: mkdir /mnt/cdrom/ 建立挂载点 mount -t iso9660 /dev/cdrom /mnt/cdrom/
- 挂载光盘 mount /dev/sr0 /mnt/cdrom/
- 卸载命令 umount 设备文件名或挂载点
挂载U盘
- fdisk –l 查看U盘设备文件名
- mount -t vfat /dev/sdb1 /mnt/usb/
- 卸载命令 umount 设备文件名或挂载点
注意:
- Linux默认是不支持NTFS文件系统的
- 格式化就是重新写入文件系统
- fat16分区识别为fat fat32分区识别为vfat
第四讲 支持NTFS文件系统
- 下载NTFS-3G插件 tar wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
- 解压 tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz cd ntfs-3g_ntfsprogs-2013.1.13 进入解压目录
- 安装NTFS-3G ./configure 编译器准备。没有指定安装目录,安装到默认位置中 make 编译 make install 编译安装
- 使用 mount -t ntfs-3g 分区设备文件名 挂载点
第三节 fdisk分区
第一讲 fdisk命令分区过程
- 通过虚拟机加入新硬盘
- 查看新硬盘 fdisk -l
- 使用fdisk命令分区 fdisk /dev/sdb 后面不能加数字 因为此时硬盘还没有分区 通过交互进行分区,交互指令如下:
命令 | 说明 |
---|---|
a | 设置可引导标记 |
b | 编辑bsd磁盘标签 |
c | 设置DOS操作系统兼容标记 |
d | 删除一个分区 |
l | 显示已知的文件系统类型。82为Linux swap分区,83为Linux分区 |
m | 显示帮助菜单 |
n | 新建分区 |
o | 建立空白DOS分区表 |
p | 显示分区列表 |
q | 不保存退出 |
s | 新建空白SUN磁盘标签 |
t | 改变一个分区的系统ID |
u | 改变显示记录单位 |
v | 验证分区表 |
w | 保存退出 |
x | 附加功能(仅专家) |
- 重新读取分区表信息
- partprobe
- 格式化分区
- mkfs -t ext4 /dev/sdb1
- 建立挂载点并挂载
- mkdir /disk1
- mkdir /disk5
- mount /dev/sdb1 /disk1/
- mount /dev/sdb5 /disk5/
第二讲 分区自动挂载与fstab文件修复
上一节说的挂载操作在重启之后便会消失,每次重启都得重新挂载,使用我们需要把它写入系统挂载命令文件中,每次开机都会自动扫描挂载,使用/etc/fstab文件,将挂载信息写入文件
- /etc/fstab文件
- 第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
- 第二字段:挂载点
- 第三字段:文件系统名称
- 第四字段:挂载参数
- 第五字段:指定分区是否被dump备份,0代表不备份,1 代表每天备份,2代表不定期备份
- 第六字段:指定分区是否被fsck检测,0代表不检测,其 他数字代表检测的优先级,那么当然1的优先级比2高
注意:在写入文件之后先不要着急重启,我们可以先用mount -a命令来实现系统自动重新挂载,如果出现错误会提示,不至于系统崩溃
/etc/fstab文件修复 如果一旦写错了,出现了报错,可以在开机显示之后出现一个让你输入root用户密码的界面,再输入密码之后,可以使用vim /etc/fstab进入fstab文件修改错误,如果出现文件只有只读权限,不能修改,强制保存也不行,退出文件输入命令:mount -o remount,rw / ,重新把根分区挂载读写权限,就可以保存了,而且只能在根分区没有错误,在本机登陆,不能使用服务器或者远程连接的情况下才能修复。
第四节 新建swap分区
swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。
- free命令
free 查看内存与swap分区使用状况
- -m:按MB字节显示
cached(缓存):是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程 buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘, 减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程
新建swap分区
- fdisk /dev/sdb 进行交互式操作 别忘记把分区ID改为82 ,记得保存,然后重启 格式化
- 分区完之后需要格式化 mkswap /dev/sdb1 这里不能使用mkfs进行格式化
- 加入swap分区 swapon /dev/sdb1 加入swap分区
- 如果不想用了使用以下命令取消: swapoff /dev/sdb1 取消swap分区
- swap分区开机自动挂载 vi /etc/fstab /dev/sdb1 swap swap defaults 0 0 注意:swap前面没有/,他不是根分区下的 修改之后使用mount -a 命令来检测错误
第十章 Shell基础
第一节 Shell概述
- Shell是什么
- Shell是一个命令行解释器,它为用户提供 了一个向Linux内核发送请求以便运行程 序的界面系统级程序,用户可以用Shell来 启动、挂起、停止甚至是编写一些程序。
- Shell还是一个功能相当强大的编程语言, 易编写,易调试,灵活性较强。Shell是解 释执行的脚本语言,在Shell中可以直接调 用Linux系统命令。
- Shell的分类
- Bourne Shell:从1979起Unix就开始使用 Bourne Shell,Bourne Shell的主文件名为 sh。
- C Shell: C Shell主要在BSD版的Unix系 统中使用,其语法和C语言相类似而得名 Shell的两种主要语法类型有Bourne和C, 这两种语法彼此不兼容。Bourne家族主要 包括sh、ksh、Bash、psh、zsh;C家族主 要包括:csh、tcsh Bash: Bash与sh兼容,现在使用的Linux 就是使用Bash作为用户的基本Shell。
- Linux支持的Shell /etc/shells 会显示: /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh 都是Linux支持的Shell
第二节 Shell脚本的执行方式
echo输出命令 echo [选项] [输出内容] -e: 支持反斜线控制的字符转换 下表为控制符的作用:
控制字符 | 作用 |
---|---|
输出本身 | |
a | 输出警告音 |
b | 退格键,也就是向左删除键 |
c | 取消输出行末的换行符。和“-n”选项一致 |
e | ESCAPE键 |
f | 换页符 |
n | 换行符 |
r | 回车键 |
t | 制表符,也就是Tab键 |
v | 垂直制表符 |