鸟哥的linux私房菜2

第九章 vim 程序编辑器 总结: 1. Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑;  vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字;  vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速;  vi 有三种模式,一般指令模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换;  常用的按键有 i, [Esc], :wq 等;  vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式;  数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 列之意;  光标的移动中,大写的 G 经常使用,尤其是 1G, G 移动到文章的头/尾功能!  vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来;  小数点『 . 』为重复进行前一次动作,也是经常使用的按键功能!  进入编辑模式几乎只要记住: i, o, R 三个按钮即可!尤其是新增一列的 o 与取代的 R  vim 会主动的建立 swap 暂存档,所以不要随意断线!  如果在文章内有对齐的区块,可以使用 [ctrl]-v 进行复制/贴上/删除的行为  使用 :sp 功能可以分区窗口  若使用 vim 来撰写网页,若需要 CSS 元素数据,可透过 [crtl]+x, [crtl]+o 这两个连续组合按键来取得关 键词  vim 的环境设定可以写入在 ~/.vimrc 文件中;  可以使用 iconv 进行文件语系编码的转换  使用 dos2unix 及 unix2dos 可以变更文件每一列的行尾断行字符。 第十章 认识与学习 BASH 总结: 1. 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的指令与 Kernel 沟通,好 让 Kernel 可以控制硬件来正确无误的工作  学习 shell 的原因主要有:文字接口的 shell 在各大 distribution 都一样;远程管理时文字接口速度较快; shell 是管理 Linux 系统非常重要的一环,因为 Linux 内很多控制都是以 shell 撰写的。  系统合法的 shell 均写在 /etc/shells 文件中;  用户默认登入取得的 shell 记录于 /etc/passwd 的最后一个字段;  bash 的功能主要有:命令编修能力;命令与文件补全功能;命令别名设定功能;工作控制、前景背景控制; 程序化脚本;通配符  type 可以用来找到执行指令为何种类型,亦可用于与 which 相同的功能;  变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据  变量主要有环境变量与自定义变量,或称为全局变量与局部变量  使用 env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量;  set 可以观察目前 bash 环境下的所有变量;  $? 亦为变量,是前一个指令执行完毕后的回传值。在 Linux 回传值为 0 代表执行成功;  locale 可用于观察语系资料;  可用 read 让用户由键盘输入变量的值  ulimit 可用以限制用户使用系统的资源情况  bash 的配置文件主要分为 login shell 与 non-login shell。login shell 主要读取 /etc/profile 与 ~/.bash_profile, non-login shell 则仅读取 ~/.bashrc  在使用 vim 时,若不小心按了 [crtl]+s 则画面会被冻结。你可以使用 [ctrl]+q 来解除冻结  通配符主要有: *, ?, [] 等等  数据流重导向透过 >, 2>, < 之类的符号将输出的信息转到其他文件或装置去;  连续命令的下达可透过 ; && || 等符号来处理  管线命令的重点是:『管线命令仅会处理 standard output,对于 standard error output 会予以忽略』 『管线 命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行。』  本章介绍的管线命令主要有:cut, grep, sort, wc, uniq, tee, tr, col, join, paste, expand, split, xargs 等。 第十一章 正规表示法与文件格式化处理 总结: 1. 正规表示法就是处理字符串的方法,他是以行为单位来进行字符串的处理行为;  正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字符串的处理程 序;  只要工具程序支持正规表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用;  正规表示法与通配符是完全不一样的东西!通配符 (wildcard) 代表的是 bash 操作接口的一个功能, 但正 规表示法则是一种字符串处理的表示方式!  使用 grep 或其他工具进行正规表示法的字符串比对时,因为编码的问题会有不同的状态,因此, 你最好 将 LANG 等变量设定为 C 或者是 en 等英文语系!  grep 与 egrep 在正规表示法里面是很常见的两支程序,其中, egrep 支持更严谨的正规表示法的语法;  由于编码系统的不同,不同的语系 (LANG) 会造成正规表示法撷取资料的差异。因此可利用特殊符号如 [:upper:] 来替代编码范围较佳;  由于严谨度的不同,正规表示法之上还有更严谨的延伸正规表示法;  基础正规表示法的特殊字符有: *, ., [], [-], [^], ^, $ 等!  常见的支持正规表示法的工具软件有: grep , sed, vim 等等  printf 可以透过一些特殊符号来将数据进行格式化输出;  awk 可以使用『字段』为依据,进行数据的重新整理与输出;  文件的比对中,可利用 diff 及 cmp 进行比对,其中 diff 主要用在纯文本文件方面的新旧版本比对  patch 指令可以将旧版数据更新到新版 (主要亦由 diff 建立 patch 的补丁来源文件) 第十二章、学习 Shell Scripts 总结: 1. shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的 语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想 要的处理目的  shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上, 就不够好了,因为 Shell scripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。  在 Shell script 的文件中,指令的执行是从上而下、从左而右的分析与执行;  shell script 的执行,至少需要有 r 的权限,若需要直接指令下达,则需要拥有 r 与 x 的权限;  良好的程序撰写习惯中,第一行要宣告 shell (#!/bin/bash) ,第二行以后则宣告程序用途、版本、作者等  对谈式脚本可用 read 指令达成;  要建立每次执行脚本都有不同结果的数据,可使用 date 指令利用日期达成;  script 的执行若以 source 来执行时,代表在父程序的 bash 内执行之意!  若需要进行判断式,可使用 test 或中括号 ( [] ) 来处理;  在 script 内,$0, $1, $2..., $@ 是有特殊意义的!  条件判断式可使用 if...then 来判断,若是固定变量内容的情况下,可使用 case $var in ... esac 来处理  循环主要分为不定循环 (while, until) 以及固定循环 (for) ,配合 do, done 来达成所需任务!  我们可使用 sh -x script.sh 来进行程序的 debug 第十三章、Linux 账号管理与 ACL 权限设定 总结: 1. Linux 操作系统上面,关于账号与群组,其实记录的是 UID/GID 的数字而已;  使用者的账号/群组与 UID/GID 的对应,参考 /etc/passwd 及 /etc/group 两个文件  /etc/passwd 文件结构以冒号隔开,共分为七个字段,分别是『账号名称、密码、UID、GID、全名、家目录、 shell』  UID 只有 0 与非为 0 两种,非为 0 则为一般账号。一般账号又分为系统账号 (1~999) 及可登入者账号 (大于 1000)  账号的密码已经移动到 /etc/shadow 文件中,该文件权限为仅有 root 可以更动。该文件分为九个字段,内 容为『 账号名称、加密密码、密码更动日期、密码最小可变动日期、密码最大需变动日期、密码过期前警 告日数、密码失效天数、 账号失效日、保留未使用』  使用者可以支持多个群组,其中在新建文件时会影响新文件群组者,为有效群组。而写入 /etc/passwd 的第 四个字段者, 称为初始群组。  与使用者建立、更改参数、删除有关的指令为:useradd, usermod, userdel 等,密码建立则为 passwd;  与群组建立、修改、删除有关的指令为:groupadd, groupmod, groupdel 等;  群组的观察与有效群组的切换分别为:groups 及 newgrp 指令;  useradd 指令作用参考的文件有: /etc/default/useradd, /etc/login.defs, /etc/skel/ 等等  观察用户详细的密码参数,可以使用『 chage -l 账号 』来处理;  用户自行修改参数的指令有: chsh, chfn 等,观察指令则有: id, finger 等  ACL 的功能需要文件系统有支持,CentOS 7 预设的 XFS 确实有支持 ACL 功能!  ACL 可进行单一个人或群组的权限管理,但 ACL 的启动需要有文件系统的支持;  ACL 的设定可使用 setfacl ,查阅则使用 getfacl ;  身份切换可使用 su ,亦可使用 sudo ,但使用 sudo 者,必须先以 visudo 设定可使用的指令;  PAM 模块可进行某些程序的验证程序!与 PAM 模块有关的配置文件位于 /etc/pam.d/* 及 /etc/security/*  系统上面账号登入情况的查询,可使用 w, who, last, lastlog 等;  在线与使用者交谈可使用 write, wall,脱机状态下可使用 mail 传送邮件! 第十四章、磁盘配额(Quota)与进阶文件系统管理 Quota 可公平的分配系统上面的磁盘容量给用户;分配的资源可以是磁盘容量(block)或可建立文件数量 (inode);  Quota 的限制可以有 soft/hard/grace time 等重要项目;  Quota 是针对整个 filesystem 进行限制,XFS 文件系统可以限制目录!  Quota 的使用必须要核心与文件系统均支持。文件系统的参数必须含有 usrquota, grpquota, prjquota  Quota 的 xfs_quota 实作的指令有 report, print, limit, timer... 等指令;  磁盘阵列 (RAID) 有硬件与软件之分,Linux 操作系统可支持软件磁盘阵列,透过 mdadm 套件来达成;  磁盘阵列建置的考虑依据为『容量』、『效能』、『资料可靠性』等;  磁盘阵列所建置的等级常见有的 raid0, raid1, raid1+0, raid5 及 raid6  硬件磁盘阵列的装置文件名与 SCSI 相同,至于 software RAID 则为 /dev/md[0-9]  软件磁盘阵列的状态可藉由 /proc/mdstat 文件来了解;  LVM 强调的是『弹性的变化文件系统的容量』;  与 LVM 有关的组件有: PV/VG/PE/LV 等组件,可以被格式化者为 LV  新的 LVM 拥有 LVM thin volume 的功能,能够动态调整磁盘的使用率!  LVM 拥有快照功能,快照可以记录 LV 的数据内容,并与原有的 LV 共享未更动的数据,备份与还原就 变的很简单;  XFS 透过 xfs_growfs 指令,可以弹性的调整文件系统的大小 第十五章、例行性工作排程(crontab) 总结: 1. 系统可以透过 at 这个指令来排程单一工作的任务!『at TIME』为指令下达的方法,当 at 进入排程后, 系 统执行该排程工作时,会到下达时的目录进行任务;  at 的执行必须要有 atd 服务的支持,且 /etc/at.deny 为控制是否能够执行的使用者账号;  透过 atq, atrm 可以查询与删除 at 的工作排程;  batch 与 at 相同,不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作排程;  系统的循环例行性工作排程使用 crond 这个服务,同时利用 crontab -e 及 /etc/crontab 进行排程的安排;  crontab -e 设定项目分为六栏,『分、时、日、月、周、指令』为其设定依据;  /etc/crontab 设定分为七栏,『分、时、日、月、周、执行者、指令』为其设定依据;  anacron 配合 /etc/anacrontab 的设定,可以唤醒停机期间系统未进行的 crontab 任务! 第十六章、进程管理与 SELinux 初探 总结: 1. 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等),为实体文 件的型态存在;  进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操 作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。  程序彼此之间是有相关性的,故有父进程与子进程之分。而 Linux 系统所有进程的父进程就是 init 这个 PID 为 1 号的进程。  在 Linux 的进程呼叫通常称为 fork-and-exec 的流程!进程都会藉由父进程以复制 (fork) 的方式产生一个 一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序,最终就成为一 个子进程的存在。  常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序就会 被我们称为:服务 (daemon)。  在工作管理 (job control) 中,可以出现提示字符让你操作的环境就称为前景 (foreground),至于其他工作就 可以让你放入背景 (background) 去暂停或运作。  与 job control 有关的按键与关键词有: &, [ctrl]-z, jobs, fg, bg, kill %n 等;  进程管理的观察指令有: ps, top, pstree 等等;  进程之间是可以互相控制的,传递的讯息 (signal) 主要透过 kill 这个指令在处理;  进程是有优先级的,该项目为 Priority,但 PRI 是核心动态调整的,用户只能使用 nice 值去微调 PRI  nice 的给予可以有: nice, renice, top 等指令;  vmstat 为相当好用的系统资源使用情况观察指令;  SELinux 当初的设计是为了避免使用者资源的误用,而 SELinux 使用的是 MAC 委任式存取设定;  SELinux 的运作中,重点在于主体进程 (Subject) 能否存取目标文件资源 (Object) ,这中间牵涉到政策 (Policy) 内的规则, 以及实际的安全性本文类别 (type);  安全性本文的一般设定为:『Identify:role:type』其中又以 type 最重要;  SELinux 的模式有: enforcing, permissive, disabled 三种,而启动的政策 (Policy) 主要是 targeted  SELinux 启动与关闭的配置文件在: /etc/selinux/config  SELinux 的启动与观察: getenforce, sestatus 等指令  重设 SELinux 的安全性本文可使用 restorecon 与 chcon  在 SELinux 有启动时,必备的服务至少要启动 auditd 这个!  若要管理预设的 SELinux 布尔值,可使用 getsebool, setsebool 来管理!

2018-06-11 · 5 分钟 · 895 字 · 王站站

鸟哥的linux私房菜1

第零章 计算器概论 总结: 1. 计算器的定义为:『接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或储 存成有用的信息』; 2. 计算机的五大单元包括:输入单元、输出单元、控制单元、算数逻辑单元、记忆单元五大部分。其中 CPU 占有控制、算术逻辑单元,记忆单元又包含主存储器与辅助内存; 3. 数据会流进/流出内存是 CPU 所发布的控制命令,而 CPU 实际要处理的数据则完全来自于主存储器; 4. CPU 依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统; 5. 关于 CPU 的频率部分:外频指的是 CPU 与外部组件进行数据传输时的速度,倍频则是 CPU 内部用来加速 工作效能的一个倍数, 两者相乘才是 CPU 的频率速度; 6. 新的 CPU 设计中,已经将北桥的内存控制芯片整合到 CPU 内,而 CPU 与主存储器、显示适配器沟通的 总线通常称为系统总线。 南桥就是所谓的输入输出(I/O)总线,主要在联系硬盘、USB、网络卡等接口设备; 7. CPU 每次能够处理的数据量称为字组大小(word size),字组大小依据 CPU 的设计而有 32 位与 64 位。 我们 现在所称的计算机是 32 或 64 位主要是依据这个 CPU 解析的字组大小而来的! 8. 个人计算机的主存储器主要组件为动态随机存取内存(Dynamic Random Access Memory, DRAM),至于 CPU 内部的第二层快取则使用静态随机存取内存(Static Random Access Memory, SRAM); 9. BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中, 这个内存芯 片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM); 10. 目前主流的外接卡界面大多为 PCIe 界面,且最新为 PCIe 3.0,单信道速度高达 1GBytes/s 11. 常见的显示适配器连接到屏幕的界面有 HDMI/DVI/D-Sub/Display port 等等。HDMI 可同时传送影像与声 音。 12. 传统硬盘的组成为:圆形磁盘盘、机械手臂、 磁盘读取头与主轴马达所组成的,其中磁盘盘的组成为扇区、 磁道与磁柱; 13. 磁盘连接到主板的界面大多为 SATA 或 SAS,目前桌机主流为 SATA 3.0,理论极速可达 600Mbytes/s。 14. 常见的文字编码为 ASCII,繁体中文编码主要有 Big5 及 UTF8 两种,目前主流为 UTF8 15. 操作系统(Operating System, OS)其实也是一组程序, 这组程序的重点在于管理计算机的所有活动以及驱动 系统中的所有硬件。 16. 计算机主要以二进制作为单位,常用的磁盘容量单位为 bytes,其单位换算为 1 Byte = 8bits。 17. 最阳春的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要透过应用软件或者是壳程序(shell)的功 能, 来呼叫操作系统操纵硬件工作。目前称为操作系统的,除了上述功能外,通常已经包含了日常工作所 需要的应用软件在内了。 第一章 Linux 是什么与如何学习 总结: 1. 操作系统(Operation System)主要在管理与驱动硬件,因此必须要能够管理内存、管理装置、 负责行程管理 以及系统呼叫等等。因此,只要能够让硬件准备妥当(Ready)的情况, 就是一个阳春的操作系统了。 2. Unix 的前身是由贝尔实验室(Bell lab.)的 Ken Thompson 利用汇编语言写成的, 后来在 1971-1973 年间由 Dennis Ritchie 以 C 程序语言进行改写,才称为 Unix。 3. 1977 年由 Bill Joy 释出 BSD (Berkeley Software Distribution),这些称为 Unix-like 的操作系统。 4. 1984 年由 Andrew Tanenbaum 开始制作 Minix 操作系统,该系统可以提供原始码以及软件; 5. 1984 年由 Richard Stallman 提倡 GNU 计划,倡导自由软件(Free software), 强调其软件可以『自由的取得、 复制、修改与再发行』,并规范出 GPL 授权模式, 任何 GPL(General Public License)软件均不可单纯仅贩卖 其软件,也不可修改软件授权。 6. 1991 年由芬兰人 Linus Torvalds 开发出 Linux 操作系统。简而言之,Linux 成功的地方主要在于:Minix(Unix), GNU, Internet, POSIX 及虚拟团队的产生。 7. 符合 Open source 理念的授权相当多,比较知名的如 Apache / BSD / GPL / MIT 等。 8. Linux 本身就是个最阳春的操作系统,其开发网站设立在 http://www.kernel.org,我们亦称 Linux 操作系统最 底层的数据为『核心(Kernel)』。 9. 从 Linux kernel 3.0 开始,已经舍弃奇数、偶数的核心版本规划,新的规划使用主线版本 (MainLine) 为依 据, 并提供长期支持版本 (longterm) 来加强某些功能的持续维护。 10. Linux distributions 的组成含有:『Linux Kernel + Free Software + Documentations(Tools) + 可完全安装的程序』 所制成的一套完整的系统。 11. 常见的 Linux distributions 分类有『商业、社群』分类法,或『RPM、DPKG』分类法 12. 学习 Linux 最好从头由基础开始学习,找到一本适合自己的书籍,加强实作才能学会 第二章 主机规划与磁盘分区 总结: 1. 新添购计算机硬件配备时,需要考虑的角度有『游戏机/工作机』、『效能/价格比』、『效能/消耗瓦数』、『支持 度』等; 2. 旧的硬件配备可能由于保存的问题或者是电子零件老化的问题,导致计算机系统非常容易在运作过程中出 现不明的当机情况 3. Red Hat 的硬件支持:https://hardware.redhat.com/?pagename=hcl 4. 在 Linux 系统中,每个装置都被当成一个文件来对待,每个装置都会有装置文件名。 5. 磁盘装置文件名通常分为两种,实际 SATA/USB 装置文件名为/dev/sd[a-p],而虚拟机的装置可能为 /dev/vd[a-p] 6. 磁盘的第一个扇区主要记录了两个重要的信息,分别是: (1)主要启动记录区(Master Boot Record, MBR): 可以安装开机管理程序的地方,有 446 bytes (1)分区表(partition table):记录整颗硬盘分区的状态,有 64 bytes; 7. 磁盘的 MBR 分区方式中,主要与延伸分区最多可以有四个,逻辑分区的装置文件名号码,一定由 5 号开 始; 8. 如果磁盘容量大于 2TB 以上时,系统会自动使用 GPT 分区方式来处理磁盘分区。 9. GPT 分区已经没有延伸与逻辑分区槽的概念,你可以想象成所有的分区都是主分区! 10. 某些操作系统要使用 GPT 分区时,必须要搭配 UEFI 的新型 BIOS 格式才可安装使用。 11. 开机的流程由:BIOS-->MBR-->-->boot loader-->核心文件; 12. boot loader 的功能主要有:提供选单、加载核心、转交控制权给其他 loader 13. boot loader 可以安装的地点有两个,分别是 MBR 与 boot sector 14. Linux 操作系统的文件使用目录树系统,与磁盘的对应需要有『挂载』的动作才行; 15. 新手的简单分区,建议只要有/及 swap 两个分区槽即可 第三章 安装 CentOS7.x 总结: 1. 不论你要安装什么样的 Linux 操作系统角色,都应该要事先规划例如分区、开机管理程序等; 2. 建议练习机安装时的磁盘分区能有/, /boot, /home, swap 四个分区槽; 3. 安装 CentOS 7.x 的模式至少有两种,分别是图形接口与文字接口; 4. CentOS 7 会主动依据你的磁盘容量判断要用 MBR 或 GPT 分区方式,你也可以强迫使用 GPT; 5. 若安装笔记本电脑时失败,可尝试在开机时加入『linux nofb apm=off acpi=off』来关闭省电功能; 6. 安装过程进入分区后,请以『自定义的分区模式』来处理自己规划的分区方式; 7. 在安装的过程中,可以建立逻辑滚动条管理员 (LVM); 8. 一般要求 swap 应该要是 1.5~2倍的物理内存量,但即使没有 swap 依旧能够安装与运作 Linux 操作系统; 9. CentOS 7 预设使用 xfs 作为文件系统 10. 没有连上 Internet 时,可尝试关闭防火墙,但 SELinux 最好选择『强制』状态; 11. 设定时不要选择启动 kdump,因为那是给核心开发者查阅当机数据的; 12. 可加入时间服务器来同步化时间,台湾可选择 tock.stdtime.gov.tw 这一部; 13. 尽量使用一般用户来操作 Linux,有必要再转身份成为 root 即可。 14. 即使是练习机,在建置 root 密码时,建议依旧能够保持良好的密码规则,不要随便设定! 第四章 首次登入与在线求助 1. 显示日期的指令: date 2. 显示日历的指令: cal 3. 简单好用的计算器: bc 总结: 1. 为了避免瞬间断电造成的 Linux 系统危害,建议做为服务器的 Linux 主机应该加上不断电系统来持续提供稳 定的电力; 2. 养成良好的操作习惯,尽量不要使用 root 直接登入系统,应使用一般账号登入系统,有需要再转换身份 3. 可以透过『活动总览』查看系统所有使用的软件及快速启用惯用软件 4. 在 X 的环境下想要『强制』重新启动 X 的组合按键为:『[alt]+[ctrl]+[backspace]』; 5. 预设情况下,Linux 提供 tty1~tty6 的终端机界面; 6. 在终端机环境中,可依据提示字符为$或#判断为一般账号或 root 账号; 7. 取得终端机支持的语系数据可下达『echo $LANG』或『locale』指令; 8. date 可显示日期、cal 可显示日历、bc 可以做为计算器软件; 9. 组合按键中,[tab]按键可做为(1)命令补齐或(2)档名补齐或(3)参数选项补齐,[crtl]-[c]可以中断目前正在运作 中的程序; 10. Linux 系统上的英文大小写为不同的资料 11. 联机帮助系统有 man 及 info 两个常见的指令; 12. man page 说明后面的数字中,1 代表一般账号可用指令,8 代表系统管理员常用指令,5 代表系统配置文件 格式; 13. info page 可将一份说明文件拆成多个节点(node)显示,并具有类似超链接的功能,增加易读性; 14. 系统需正确的关机比较不容易损坏,可使用 shutdown, poweroff 等指令关机。 第五章 Linux 的文件权限与目录配置 1. ls -al ( ll --full-time ) 2. chgrp :改变文件所属群组 [-R] 3. chown :改变文件拥有者 [-R] eg: chown [-R] 账号名称:组名 文件或目录 4. chmod :改变文件的权限, SUID, SGID, SBIT 等等的特性 eg: chmod u=rwx,go=rx .bashrc 5. cp 来源文件 目标文件 6. 文件种类: -rwxrwxrwx 正规文件(regular file ):- 纯文本档(ASCII)/二进制文件(binary)/数据格式文件(data) 目录(directory):d 连结档(link): l 设备与装置文件(device):区块(block)设备档 b 字符(character)设备文件 c 资料接口文件(sockets):s 数据输送文件(FIFO, pipe):p 7. uname -r # 查看核心版本 uname -m # 查看操作系统的位版本 8. yum install redhat-lsb lsb_release -a 总结: 1. Linux 的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限; 2. 群组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个群组的支持; 3. 利用 ls -l 显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型, 接下来三个 为一组共三组,为使用者、群组、其他人的权限,权限有 r,w,x 三种; 4. 如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』; 5. 若需要 root 的权限时,可以使用 su - 这个指令来切换身份。处理完毕则使用 exit 离开 su 的指令环境。 6. 更改文件的群组支持可用 chgrp,修改文件的拥有者可用 chown,修改文件的权限可用 chmod 7. chmod 修改权限的方法有两种,分别是符号法与数字法,数字法中 r,w,x 分数为 4,2,1; 8. 对文件来讲,权限的效能为: r:可读取此一文件的实际内容,如读取文本文件的文字内容等; w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件); x:该文件具有可以被系统执行的权限。 9. 对目录来说,权限的效能为: r (read contents in directory) w (modify contents of directory) x (access directory) 10. 要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给; 11. 能否读取到某个文件内容,跟该文件所在的目录权限也有关系 (目录至少需要有 x 的权限)。 12. Linux 档名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个汉字字符; 13. 根据 FHS 的官方文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下 14. FHS 订定出来的四种目录特色为:shareable, unshareable, static, variable 等四类; 15. FHS 所定义的三层主目录为:/, /var, /usr 三层而已; 16. 绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。 第六章 Linux 文件与目录管理 1. pwd [-P] 显示真实路径, 非link路径 2. mkdir [-mp] m:忽略umask的作用 eg:mkdir -m 777 a 3. rmdir [-p] 目录名称 ps: 只能删除空目录 4. cat 由第一行开始显示文件内容 5. tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! 6. nl 显示的时候,顺道输出行号! 7. more 一页一页的显示文件内容 8. less 与 more 类似,但是比 more 更好的是,他可以往前翻页! 9. head 只看头几行 10. tail 只看尾巴几行 11. od 以二进制的方式读取文件内容! 总结: 1. 绝对路径:『一定由根目录 / 写起』;相对路径:『不由 / 写起,而是由相对当前目录写起』 2. 特殊目录有:., .., -, ~, ~account 需要注意; 3. 与目录相关的指令有:cd, mkdir, rmdir, pwd 等重要指令; 4. rmdir 仅能删除空目录,要删除非空目录需使用『 rm -r 』指令; 5. 用户能使用的指令是依据 PATH 变量所规定的目录去搜寻的; 6. ls 可以检视文件的属性,尤其 -d, -a, -l 等选项特别重要! 7. 文件的复制、删除、移动可以分别使用:cp, rm , mv 等指令来操作; 8. 检查文件的内容(读文件)可使用的指令包括有:cat, tac, nl, more, less, head, tail, od 等 9. cat -n 与 nl 均可显示行号,但默认的情况下,空白行会不会编号并不相同; 10. touch 的目的在修改文件的时间参数,但亦可用来建立空文件; 11. 一个文件记录的时间参数有三种,分别是 access time(atime), status time (ctime), modification time(mtime),ls 默认显示的是 mtime。 12. 除了传统的 rwx 权限之外,在 Ext2/Ext3/Ext4/xfs 文件系统中,还可以使用 chattr 与 lsattr 设定及观察隐藏属 性。 常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性。 13. 新建文件/目录时,新文件的预设权限使用 umask 来规范。默认目录完全权限为 drwxrwxrwx, 文件则为 -rw-rw-rw-。 14. 文件具有 SUID 的特殊权限时,代表当用户执行此一 binary 程序时,在执行过程中用户会暂时具有程序拥有 者的权限 15. 目录具有 SGID 的特殊权限时,代表用户在这个目录底下新建的文件之群组都会与该目录的组名相同。 16. 目录具有 SBIT 的特殊权限时,代表在该目录下用户建立的文件只有自己与 root 能够删除! 17. 观察文件的类型可以使用 file 指令来观察; 18. 搜寻指令的完整文件名可用 which 或 type ,这两个指令都是透过 PATH 变量来搜寻文件名; 19. 搜寻文件的完整档名可以使用 whereis 找特定目录或 locate 到数据库去搜寻,而不实际搜寻文件系统; 20. 利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。 第七章 Linux 磁盘与文件系统管理 1. dumpe2fs [-bh] 装置文件名 2. blkid <==这个指令可以叫出目前系统有被格式化的装置 总结:  一个可以被挂载的数据通常称为『文件系统, filesystem』而不是分区槽 (partition) 喔!  基本上 Linux 的传统文件系统为 Ext2 ,该文件系统内的信息主要有: o superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件 系统的格式与相关信息等; o inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码; o block:实际记录文件的内容,若文件太大时,会占用多个 block 。  Ext2 文件系统的数据存取为索引式文件系统(indexed allocation)  需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个 时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起。  Ext2 文件系统主要有:boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。  data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K 三 种而已  inode 记录文件的属性/权限等数据,其他重要项目为: 每个 inode 大小均为固定,有 128/256bytes 两种 基本容量。每个文件都仅会占用一个 inode 而已; 因此文件系统能够建立的文件数量与 inode 的数量有 关;  文件的 block 在记录文件的实际数据,目录的 block 则在记录该目录底下文件名与其 inode 号码的对照表;  日志式文件系统 (journal) 会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间;  Linux 文件系统为增加效能,会让主存储器作为大量的磁盘高速缓存;  实体链接只是多了一个文件名对该 inode 号码的链接而已;  符号链接就类似 Windows 的快捷方式功能。  磁盘的使用必需要经过:分区、格式化与挂载,分别惯用的指令为:gdisk, mkfs, mount 三个指令  分区时,应使用 parted 检查分区表格式,再判断使用 fdisk/gdisk 来分区,或直接使用 parted 分区  为了考虑效能,XFS 文件系统格式化时,可以考虑加上 agcount/su/sw/extsize 等参数较佳  如果磁盘已无未分区的容量,可以考虑使用大型文件取代磁盘装置的处理方式,透过 dd 与格式化功能。  开机自动挂载可参考/etc/fstab 之设定,设定完毕务必使用 mount -a 测试语法正确否; 第八章 文件与文件系统的压缩,打包与备份 总结: 1. 压缩指令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘容量。 压缩前与压缩后 的文件所占用的磁盘容量比值, 就可以被称为是『压缩比』  压缩的好处是可以减少磁盘容量的浪费,在 WWW 网站也可以利用文件压缩的技术来进行数据的传送,好 让网站带宽的可利用率上升喔  压缩文件案的扩展名大多是:『*.gz, *.bz2, *.xz, *.tar, *.tar.gz, *.tar.bz2, *.tar.xz』  常见的压缩指令有 gzip, bzip2, xz。压缩率最佳的是 xz,若可以不计时间成本,建议使用 xz 进行压缩。  tar 可以用来进行文件打包,并可支持 gzip, bzip2, xz 的压缩。  压 缩:tar -Jcv -f filename.tar.xz 要被压缩的文件或目录名称  查 询:tar -Jtv -f filename.tar.xz  解压缩:tar -Jxv -f filename.tar.xz -C 欲解压缩的目录  xfsdump 指令可备份文件系统或单一目录  xfsdump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level 0 为完整备份;  xfsrestore 指令可还原被 xfsdump 建置的备份档;  要建立光盘刻录数据时,可透过 mkisofs 指令来建置;  可透过 wodim 来写入 CD 或 DVD 刻录机  dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁盘的 sector 表面数据  cpio 为相当优秀的备份指令,不过必须要搭配类似 find 指令来读入欲备份的文件名数据,方可进行备份动 作。

2018-06-04 · 6 分钟 · 1109 字 · 王站站

fail2ban使用教程

GitHub 安装 apt-get update apt-get install -y iptables fail2ban systemctl enable --now fail2ban 配置 SSH 防爆破 vim /etc/fail2ban/jail.local [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 1d 配置自定义规则(frp 转发 SSH 防爆破) vim /etc/fail2ban/filter.d/frps_aml.conf [Definition] failregex = ^.*\[.*19222_aml_ssh.*\] get a user connection \[<HOST>:[0-9]*\] ignoreregex = 追加到 vim /etc/fail2ban/jail.local [aml] enabled = true port = 19222 filter = frps_aml logpath = /var/log/frp/frps.log maxretry = 10 bantime = 1d systemctl restart fail2ban 常用命令 # 查看失败登录记录(指定日期范围) lastb -s 2022-10-16 -t 2022-10-18 # 解除封禁 fail2ban-client set sshd unbanip IP_ADDRESS # 查看状态 fail2ban-client status sshd

2018-04-23 · 1 分钟 · 99 字 · 王站站

frp教程

frp 是反向代理应用,支持 TCP/UDP/HTTP/HTTPS,可将内网服务暴露到公网。 安装目录:/root/frp 服务端配置 vim /root/frp/frps.ini [common] bind_port = 19000 allow_ports = 19001-19999 authentication_method = token token = XXXXXXXXXXXXXXXXXX log_file = /var/log/frp/frps.log log_max_days = 30 开机自启 vim /etc/systemd/system/frps.service [Unit] Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /root/frp/frps -c /root/frp/frps.ini [Install] WantedBy = multi-user.target systemctl enable --now frps 客户端配置 vim /root/frp/frpc.ini [common] server_addr = 公网IP或域名 server_port = 19000 authentication_method = token token = XXXXXXXXXXXXXXXXXX log_file = /var/log/frp/frpc.log log_max_days = 30 includes = /root/frp/servers/*.ini /root/frp/servers/ 下可配置多个转发规则: [name_ssh_01] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 19001 开机自启 vim /etc/systemd/system/frpc.service [Unit] Description = frp client After = network.target syslog.target Wants = network.target [Service] Type = simple ExecStart = /root/frp/frpc -c /root/frp/frpc.ini Restart = on-failure RestartSec = 60 [Install] WantedBy = multi-user.target systemctl enable --now frpc 无 systemd 时(手动 crontab) /root/start.sh ...

2018-04-16 · 1 分钟 · 180 字 · 王站站

minikube操作教程

安装 官方文档 amd64 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube arm64 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 sudo install minikube-linux-arm64 /usr/local/bin/minikube 没安装 kubectl 可以使用 minikube kubectl -- 代替 kubectl 安装 官方文档 x86_64 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" arm64 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version kubectl cluster-info kubectl get nodes 启动集群 minikube start --force kubectl get po -A minikube version Web 界面 ...

2018-04-09 · 2 分钟 · 343 字 · 王站站