前言

很久之前看过这本书,当时居然写了2万字的笔记,而且笔记按照列表的方式写的,很长但是意外的挺好理解(毕竟个人写的),所以发布这篇笔记出来。

第一章:计算机概论

+ CPU
+ 基本结构
+ 控制单元
+ 存储单元
+ 内存
+ 输入单元
+ 输出单元
+ 内存
+ 指令集
+ 精简指令集 RISC
+ SPARC
+ PowerPC
+ Cell
+ 复杂指令集 CISC
+ AMD
+ Inter
+ VIA
+ X86 的起源
+ Bit: CPU一次读取的最大量
+ 人体和电脑设备的比喻
+ 电脑分类
+ 超级计算机
+ 大型计算机
+ 迷你计算机
+ 工作站

+ 电脑常用的计量单位
+ Mbit
+ Ghz
+ CPU的工作频率:外频与倍频
+ 外频:CPU与外部组件数据传输的速度
+ 倍频:CPU内部加速工作性能的倍数
+ 超频
+ 内存
+ 多通道设计
+ DDR
+ DRAM 和 SRAM
+ 二级缓存:CPU内部的内存缓存
+ ROM
+ BIOS
+ 现在已写入到闪存或者硬件中
+ 固件
+ 显卡
+ 主要的连接接口
+ D-Sub
+ DVI
+ HDMI
+ DisplayPort
+ 硬盘:
+ 组成:
+ 碟片
+ 磁头
+ 主轴马达
+ 机器手臂
+ 最小单元:扇区
+ 传输接口:
+ SATA
+ USB
+ SAS
+ 固态硬盘
+ 使用须知
+ 扩展接口
+ 主板
+ 设备IO地址和IRQ中断请求
+ 连接外置设备
+ 主机电源

+ 数据的表示方式
+ 数字系统
+ 字符编码系统
+ 操作系统
+ 概念
+ 只管理硬件资源
+ 内核参考硬件写成
+ 应用程序参考操作系统
+ 内核功能
+ 系统调用
+ 进程管理
+ 内存管理
+ 文件系统管理
+ 设备驱动
+ 注意点:
+ 重点回顾
+ 计算机定义
+ 计算机五大单元
+ CPU的作用
+ CPU频率,外频和倍频,以及超频
+ 新CPU的主要变化
+ CPU处理数据
+ 内存分类
+ 动态随机存取内存
+ 静态随机存取内存

第二章:Linux起源

+ Unix的发展背景
+ GNU计划,开放源代码
+ Minix 的发展
+ Linux的雏形
+ Minix不满足要求
+ 学到的东西
+ 基础知识和技能
+ 一点成功之后,勇于挑战
+ 把“玩具”发扬光大
+ 虚拟团队对于LInux的改进
+ Linux版本
+ 主次版本为奇数:开发中
+ 主次版本为偶数:稳定版本
+ 主线版本:长期维护
+ 判断是否为长期版本的办法
+ `uname -r `
+ Linux发行版
+ Linux应用
+ 云端应用
+ 虚拟化
+ 从头学习Linux
+ 选择一本好用的工具书
+ 推荐的网络书: NETMAN
+ 发生问题怎么处理
+ FAQ:
+ /usr/share/doc
+ http://www.tldp.org
+ 必要掌握点:
+ 计算机概论与硬件相关知识
+ 从Linux安装和命令学起
+ Linux操作系统的基本技能
+ 学会VI编辑器
+ Shell与脚本学习
+ 一定要会软件管理
+ Tarball
+ RPM
+ DPKG
+ YUM
+ APT
+ 网络基础学习
+ 网站搭建
+ 网络的书推荐
+ Http://linux.vbird.org
+ 实践大于一切
+ 习惯:
+ 有系统的设计文件目录
+ 养成做记录的习惯
+ 作为用户人迁就机器,作为开发,机器迁就人
+ 会“偷”,“偷”了会改,改了会变,变则通
+ 兴趣
+ 成就感
+ 建立兴趣
+ 协助回答问题
+ 参与讨论
+ 不同环境,解决办法很多,只要行得通就是好办法

简答题:

  1. 你再主机上安装了一块网卡,但是开机之后,系统却无法使用,网卡是好的,可能哪里出问题,如何解决?
链接:https://www.nowcoder.com/questionTerminal/1dc7f18e85e04269b1a355b32692c8ba?orderByHotValue=1&page=1&onlyReference=false

网卡是否启动,是否配置了开机自启。可以修改 /etc/sysconf/network-sripts/ifcfg-ethX,其中X是网卡号,
DEVICE=eth0 #网卡对应的设备别名
BOOTPROTO=static #网卡获得ip地址的方式(默认为dhcp,表示自动获取)
HWADDR=00:07:E9:05:E8:B4 #网卡MAC地址(物理地址)
IPADDR=192.168.100.100 #IP地址
NETMASK=255.255.255.0 #子网掩码
ONBOOT=yes #系统启动时是否激活此设备

2.一个操作系统至少可以完整控制整个硬件,请问操作系统要控制哪些单元


(1)运算单元,用来执行当前指令所规定的算术运算和逻辑运算,具有定点和浮点运算功能;(2)控制单元,指挥微处理器执行指令操作的功能; (3)寄存器组,用来暂存操作数,中间结果和处理结果,它构成了微处理器内部的小型存贮空间,其容量大小影响到微处理器的效率; (4)总线接口单元,提供微处理器与周围其它硬件的接口,有效地将微处理器的地址、数据和控制等信息通过总线和各相关部件接通; (5)输入/​​输出接口​​单元。


  1. window上的游戏能不能到Linux去玩
不能,操作系统不一样
  1. Unix 是谁写出来的? GNU 计划是谁发起的?
GNU 是 GNU is Not Unix 的简写,是个无穷循环! 另外,这个计划是由自由软件基金会 (Free Software Foundation, FSF) 所支
持的! 两者都是由 Stallman 先生所发起的!
  1. 何谓多人 ( Multi-user ) 多任务 ( Multitask )?
Multiuser 指的是 Linux 允许多人同时连上主机之外,每个用户皆有其各人的使用环境,并且可以同时使用系统的资源!
Multitask 指的是多任务环境,在 Linux 系统下, CPU 与其他例如网络资源可以同时进行多项工作, Linux 最大的特色之一
即在于其多任务时,资源分配较为平均
  1. Linux 本身仅是一个核心与相关的核心工具而已,不过,他已经可以驱动所有的硬件, 所以,可以算是一 个很阳春的操作系统了。经过其他应用程序的开发之后,被整合成为 Linux distribitions。请问众多的 distributions 之间,有何异同?
相同:(1)同样使用 http://www.kernel.org 所释出的核心; (2)支持同样的标准,如 FHS、LSB 等; (3)使用几乎相同的自由软
件 (例如 GNU 里面的 gcc/glibc/vi/apache/bind/sendmail... ); (4)几乎相同的操作接口 (例如均使用 bash/KDE/GNOME 等等)。
不同:使用的 kernel 与各软件的版本可能会不同;各开发商加入的应用工具不同,使用的套件管理模式不同(dpkg 与 RPM)
  1. 什么是 POSIX ?为何说 Linux 使用 POSIX 对于发展有很好的影响?
POSIX 是一种标准规范,主要针对在 Unix 操作系统上面跑的程序来进行规范。 若你的操作系统符合 POSIX ,则符合 POSIX
的程序就可以在你的操作系统上面运作。 Linux 由于支持 POSIX ,因此很多 Unix 上的程序可以直接在 Linux 上运作, 因
此程序的移植相当简易!也让大家容易转换平台,提升 Linux 的使用率。

第三章:主观规划与磁盘分区

+ Linux和硬件的搭配

+ 认识计算机硬件
+ 注意硬件的性价比
+ 注意电费
+ 选择Linux搭配的主机
+ CPU
+ i3最低要求
+ 内存
+ 越大越好
+ 硬盘:
+ 通常:20G
+ 高级:磁盘阵列
+ 显卡
+ 32M
+ 网卡:
+ 网络IO频繁要选好网卡
+ 各硬件设备在Linux的文件名
+ 磁盘分区
+ 磁盘连接方式和设备文件名的关系
+ 正常:/dev/sd[a-p]
+ 虚拟化环境:/dev/vd[a-p]
+ 决定关系:Linux的检测磁盘顺序
+ 分区几点:
+ MBR
+ 四个主分区和一个扩展分区
+
+ MBR 与 GPT 磁盘分区表
+ MBR
+ 512字节大小
+ 主引导记录:引导程序的地方,446字节
+ 分区表:记录整个硬盘分区状态,64字节
+ 最多只能有四组记录
+ 记录该区开始和结束柱面号码
+ 注意点
+ 所谓分区仅仅是对于64字节的分区表设置
+ 磁盘默认只能写入四组分区信息
+ 主要分区和扩展分区
+ 最小单位为柱面
+ 写入磁盘必须参考分区表才能操作
+ 数据安全性
+ 系统性能
+ GPT
+ 出现原因
+ MBR无法操作2.2T以上磁盘
+ MBR只有一个区块,破会后无法恢复
+ MBR存放引导程序只有446字节,无法存储较多程序代码
+ 分区
+ 34个LBA区块记录分区
+ LBA0(MBR兼容区块)
+ 存放引导信息
+ LBA1 (GPT表头记录)
+ 分区表的本身位置和大小
+ **后面34个备份GPT分区**
+ LBA2-33(实际分区信息记录)
+ 4 * 32 =128 组
+ 【2^64 * 512 = 2^63 * 1K字节 = 2^33 * TB = 8ZB】 1ZB = 2^30TB
+ 现在的内核使用特殊方式没有所谓的主分区,扩展分区和逻辑分区
+ 启动程序BIOS和UEFI启动检测程序
+ BIOS
+ 系统启动的第一个程序
+ 直接写在硬件上的一个程序
+ 启动过程:
+ BIOS:启动固件,认识第一个可启动设备
+ MBR:第一个可启动的设备第一个扇区的主引导记录块,内部引导代码
+ 启动引导程序(boot loader):可读内核文件的软件
+ 内核文件,开始启动系统
+ Boot Loader 作用
+ 提供不同选项,多重引导
+ 加载内核文件
+ 启动管理功能转交给其他引导程序
+ **启动引导程序可以装在分个分区的启动扇区**
+ 多重引导
+ 每个分区都有自己启动扇区
+ 第一以及第二扇区
+ 实际可启动的内核文件放到各个分区
+ 功能:认识自己分区的可启动内核文件,其他引导程序
+ 直接或者间接管理权给另一个启动引导管理程序
+ UEFI 搭配GPT启动流程
+ 某些时刻可能需要关闭UEFI 的 secure boot 功能
+ 双系统清务必先安装windows
+ Linux 安装模式分区选择(极其重要)
+ 目录树结构
+ 根目录
+ 文件系统与目录树挂载
+ 什么是挂载?
+ 利用目录成为进入点,磁盘分区放置到目录下面
+ 进入该目录就可以读取该分区
+ 判断文件在哪个分区
+ 哪个“进入点”先被查到,被查到的就是进入点
+ 规划磁盘分区
+ 自定义安装
+ 初学: “/” 以及 "swap" 分区即可
+ 预备一个备用的剩余磁盘容量
+ 安装Linux之前的规划
+ 选择适当发行版
+ 镜像站
+ 主机服务和硬件的关系
+ window和Linux共存
+ NAT
+ SAMBA
+ Mail
+ Web
+ DHCP
+ FTP
+ 主机硬盘规划
+ 主机硬件出问题,文件能否安全保存
+ 最简单分区办法
+ 如上的新人办法
+ 很不靠谱
+ 稍微麻烦一些
+ 比较符合读写容量大而且读写频繁的场景分区办法
+ /boot
+ /
+ /home
+ /var
+ swap
+ 注意服务种类
+ 两个案例
+ 家用小型Linux服务器,IP共享和文件共享中心
+ Linux的PC集群

第三章:安装CenterOs7

本章基本全靠实操,务必多操作几遍

+ 练习规划
+ 配置
+ CPU: I5以上
+ 内存:最少提供1.2G以上内存
+ 硬盘:40GB Virtio 接口
+ 网卡:Bridge 桥接对外网卡
+ 显卡:60MB左右显存
+ 其他
+ 键盘
+ 鼠标
+ 屏幕
+ 磁盘分区参考
+ 强制使用GPT模式
+ BIOS boot 2MB
+ /boot
+ /
+ /home
+ swap
+ 启动引导程序
+ 选择软件
+ 检查

+ 开始安装CenterOs7
+ 步骤:
+ 调整BIOS
+ 选择安装模式
+ 选择语言
+ 软件选择
+ 磁盘分区
+ 启动引导程序
+ 安装后的首次设置
+ 调整BIOS和虚拟机创建流程
+ `dd if=centeros7.iso of=/dev/sdc`
+ 光盘错误处理
+ 硬件不支持
+ 光盘跳盘
+ 光盘有问题
+ 安装模式启动
+ 正常安装
+ 测试后再安装
+ 除错模式
+ 图形化界面安装
+ 恢复系统
+ 运行内存测试程序
+ 本地磁盘启动,不使用光盘
+ 如何GPT强制执行(关键)
+ 正常安装CENTERos 7
+ 按下Tab键
+ 输入参数,自行百度
+ 安装过程
+ 不记录,请看书
+ 其他功能:
+ RAM测试,安装笔记本的内核参数
+ 内存压力测试:memtest86
+ 安装笔记本电脑的参数
+ 去掉笔记本的一些配置影响
+ 正常安装centeros 7
+ `nofb apm=off acpi=off pci=noacpi`
+ nofb 取消缓存检测
+ 多重引导安装和管理(可选)
+ 安装规划

第四章:首次登陆和在线求助

+ 基础命令操作
+ date : 时间
+ `date +%y/%m/%d`
+ `date +%H/%m`
+ cal:日历
+ cal 年份
+ cal 月份 年份
+ cal 13 2015 错误结果
+ bc:计算器
+ 重要热键
+ Tab
+ Ctrl-c
+ Ctrl-d
+ 相当于 exit
+ CenterOS7 补全功能有可能补全命令
+ Bash-completion
+ Shift + PageUp 或者 PageDown
+ 相当于翻页
+ Linux 在线求助 man page 和 info page
+ g 开头命令
+ man 的组成
+ name
+ synopsis
+ description
+ options
+ command
+ files
+ see also
+ example
+ 看帮助文档技巧
+ 查看Name部分
+ 详细看下Description
+ 如果熟悉命令,直接看options
+ see also 查看相关使用
+ 列举有关的file 部分
+ 查看命令
+ 空格:下翻
+ page down 下翻
+ page up 向上
+ Home 第一页
+ end 最后一页
+ /string 向下查找
+ ?string 向上查找
+ n,N 继续查询
+ q 结束
+ man的位置
+ `/usr/share/man`
+ `/etc/man_db.conf`
+ info
+ 网页显示
+ 默认位置
+ /usr/share/info
+ 内容
+ File
+ Node
+ Next
+ Up
+ Prev
+ 其他有用的文件
+ /usr/share/doc
+ 例子:
+ /usr/share/doc/grub2-tools-20.2
+ nano
+ 简单文本编译器
+ 正确的关机办法
+ 正确使用
+ shutdown
+ /sbin/shutdown [-krhc] [时间] [警告信息]
+ reboot
+ 常用
+ shutdown
+ 重启
+ rebbot
+ halt poweroff
+ 查看状况
+ who
+ 同步写入磁盘
+ sync
+ systemctl 重要命令

练习题

  1. 终端信息如何来的,/etc/issue 文件当中
结果
\S
Kernel \r on an \m
2.

\r 代表内核

\m 硬件等级

  1. man issue 查找文件的个数

第五章:文件权限和目录

+ linux 用户记录和用户身份的文件
+ 记录 `/etc/passwd `
+ `/etc/shadow`
+ linux 文件属性

+ drwx------- 5 root root 4096 May 29 16:08

+ 第一个栏目代表文件类型和权限

+ 第一个字符代表如下

+ 文件

+ 目录
+ 连接
+ b 设备文件
+ c 串行端口设备

+ 接下来设置

+ r 读取
+ w 写
+ x 运行

+ 第一组是自己的权限

+ 第二组是同用户组的权限

+ 第三组为别人的权限

+ 第二个大足 5 代表多少个文件名连接到此节点

+ 第三个代表当前目录或者文件的所有者
+ 第四个代表所在用户组
+ 第五个代表文件大小
+ 地浏览创建日期或者最近修改日期
+ 修改文件属性和权限

+ 三个常用命令
+ chgrp
+ 修改所属组
+ `chgrp users init-ss.cfg`
+ chown
+ `chown [-R] 账号:用户组 `
+ chmod
+ `chmod xyz 文件或者目录`
+ `chmod ` u=rwx,go=rx 文件或者目录
+ `chmod a-x 文件名或者目录`
+ 权限的延伸意义
+ r
+ 可以ls
+ w
+ 建立目录和文件
+ 删除已有文件或目录
+ 更名
+ 移动位置
+ x
+ 目录的x代表能否成为工作目录
+ 总结
+ 分配权限至少需要 rx 的权限
+ 文件种类和扩展名
+ 常规文件
+ 纯文本
+ 二进制
+ 数据文件
+ 用户登录记录在 /var/log/wtmp
+ 目录
+ 链接
+ 设备和设备文件
+ 区块设备
+ 字符设备
+ 数据接口
+ /run 或者 /tmp
+ FIFO 数据传输文件
+ 解决并发读写的问题
+ Linux文件扩展名
+ 文件名字长度限制
+ 单一文件目录最大为255字节
+ 128个汉字左右
+ 避免特殊字符

+ FHS 目录配置
+ 可分享和不可分享
+ 不变和可变动
+ 规范
+ / : 和系统有关
+ /usr : 软件的安装和执行有关
+ /var : 系统运行过程有关
+ 规范要求的目录
+ /
+ /bin
+ 单人维护下依然可以使用的命令
+ /boot
+ 内核常用文件
+ /dev
+ 设备
+ /etc
+ 不要放可执行文件
+ 系统的主要配置文件
+ /lib
+ 库函数
+ /media
+ 媒体设备
+ /mnt
+ 挂载外部硬盘
+ /opt
+ 第三方软件
+ 个人公司的标准
+ /run
+ 新版可以用内存模拟
+ /sbin
+ 只有root 操作的命令
+ /srv
+ service
+ 网络服务
+ /tmp
+ 临时文件
+ /usr
+ /usr/bin
+ 一般用户能使用的命令
+ /usr/lib
+ /lib基本相同的功能
+ /usr/local
+ 系统管理员建议安装目录
+ /usr/sbin
+ 非系统正常运行需要的命令
+ /usr/share
+ **只读**数据文件
+ /usr/games
+ /usr/include
+ c,c++
+ /usr/libexec
+ 不被常用的执行文件或者脚本
+ /usr/lib<qual>/
+ usr/src
+ 源代码建议位置
+ /var
+ /var/cache
+ 程序本身的缓存
+ /var/lib
+ /var/lock
+ /var/log
+ /var/mail
+ /var/run
+ /var/spool
+ /home
+ 用户家目录
+ ~:表示目前用户家目录
+ ~xxx(用户名):谁的家目录
+ /root
+ 系统管理员的家
+ /lost+found
+ 标准的ext 文件系统的目录
+ /proc
+ 虚拟文件系统
+ /sys
+ 虚拟文件系统
+ 早期系统必备五个目录挂载点
+ /etc /dev /lib /sbin /bin

练习题

早期的 Unix 系统文件名最多允许 14 个字符,而新的 Unix 与 Linux 系统中,文件名最多可以容许几个 字符?

  • 当一个一般文件权限为 -rwxrwxrwx 则表示这个文件的意义为?
  • 我需要将一个文件的权限改为 -rwxr-xr-- 请问该如何下达指令?
  • 若我需要更改一个文件的拥有者与群组,该用什么指令? chown, chgrp
  • 请问底下的目录与主要放置什么数据: /etc/, /boot, /usr/bin, /bin, /usr/sbin, /sbin, /dev, /var/ log, /run
    /etc/:几乎系统的所有配置文件案均在此,尤其 passwd,shadow /boot:开机配置文件,也是预设摆放核心 vmlinuz 的地方 /usr/bin, /bin:一般执行档摆放的地方 /usr/sbin, /sbin:系统管理员常用指令集 /dev:摆放所有系统装置文件的目录 /var/log:摆放系统注册表文件的地方 /run:CentOS 7 以后才有,将经常变动的项目(每次开机都不同,如程序的 PID)移动到内存暂存,所以 /run 并不占实 际磁盘容量
  • 若一个文件的档名开头为『 . 』,例如 .bashrc 这个文件,代表什么?另外,如何显示出这个文件名与他的 相关属性?
    有『 . 』为开头的为隐藏档,需要使用 ls -a 这个 -a 的选项才能显示出隐藏文件的内容,而使用 ls -al 才能显示出属性。

第六章 Linux文件与目录管理

  • 目录和路径
  • 相对路径和绝对路径
  • 目录相关操作
  • . 代表当前
  • ..
  • - 前一个工作目录
  • ~account 代表账号对应的家目录
  • cd
  • pwd
  • mkdir
  • rmdir
  • 执行路径的变量($PATH)
  • 为什么我可以在任何地方执行 ls
  • ​echo $PATH​
  • PATH="${PATH}:/root" 添加环境变量
  • 不要用 "." 作为环境变量
  • 可以做的事
  • 不同身份用户默认PATH不一样
  • PATH可以修改
  • 使用绝对或者相对指定某个文件的文件名来执行,比PATH准确 ** 因为环境变量的命令存在重名优先级的问题
  • 本目录不要放到环境变量
  • ls
  • ​ls --full-time ~​
  • cp rm mv
  • cp
  • cp 源文件 目标文件
  • -a 相当于 -dr---preserve=all 保留指定的属性(默认值:mode,ownership,timestamps)(如果可能)传统属性:上下文,链接,xattr,所有
  • -d 与--no-dereference --preserve = links相同。源文件为链接,则复制文件属性而非文件
  • -f 如果无法打开现有目标文件,将其删除,然后重试(此选项为 当同时使用-n选项时,将被忽略)
  • -i 覆盖前提示(覆盖先前的-n选项)
  • -p 连同文件的属性一起复制,而非默认(备份常用)
  • -r 递归复制
  • -s 复制为链接形式
  • -t 根据时间排序
  • 注意需要多文件复制,最后一个一定是目录
  • 执行cp前的思考
  • 是否需要保留完整源文件信息
  • 源文件是否为符号链接
  • 源文件是否是特殊文件
  • 源文件是否为目录!
  • rm
  • rm 文件或者目录
  • 超级危险的命令
  • mv
  • mv source des
  • -f 强制
  • -i 询问
  • -u 只有新文件才能更新
  • 获取路径的文件名和目录名称
  • basename
  • dirname
  • 文件内容的读取
  • cat 第一行开始
  • tac 最后一行开始
  • nl 显示行号
  • more 一页一页
  • less 和More差不多,但是可以往前翻页
  • head 只看前几行
  • tail 只看后几行
  • od 以二进制读取
  • 直接查看内容
  • cat
  • -A 列出一些空白字符不是空白而已
  • 空格和制表符分别代表如下
  • 制表符: ^I
  • -b 列出行号
  • -n 空白行也有行号
  • -E 结尾换行符显示
  • -v 特殊字符显示
  • tac
  • 反向显示
  • nl
  • -b 指定行号的格式
  • -b a 是否空行都有行号
  • -b t 如果有空行,空行不显示
  • -n 列出行号的方法
  • -n ln 左对齐
  • -n rn 右对齐
  • -n rz 自己栏位的最右方显示
  • -w 行号栏位占用字符数
  • ​nl -b a -n rz /etc/issue​
  • ​nl -b a -n rz -w 3 /etc/issue​
  • more
  • 空格 下一页
  • /字符串
  • :f 立刻显示文件名和显示行数
  • q
  • b 回翻
  • less
  • page up 前翻
  • page down 后翻
  • N 反向重复前一个查找
  • g 前进到这个数据前一行
  • G 前进到这个数据最后一行
  • q 离开
  • head
  • -n 显示几行
  • tail
  • 取后面几行
  • -n 行数
  • 如何去除10到20行的数据
  • ​head -n 20 /etc/man_db.conf | tail -n 10​
  • ​cat -n /etc/man_db.conf | head -n 20 | tail -n 10​
  • od 非纯文本文件
  • a 默认字符
  • c ascii
  • d 十进制
  • f 浮点数
  • 修改文件或者创建新文件
  • 修改时间 mtime
  • 内容修改的时候:如增加或者删除字符
  • 状态时间 ctime
  • 状态被改变:如权限被改了
  • 读取时间 atime
  • 只要被读取
  • ls 默认为 m time
  • touch 命令
  • -a 仅自定义access time
  • -c 修改文件的时间,不存在不建立新文件
  • -d 后面可以接预定义的日期而不用目前的时间,
  • -m 仅修改mtime
  • -t 后面接预定义时间 [YYYYMMDDhhmm]
  • 案例
  • ​date ; ll --time=atime .; ll --time=ctime .; ll --time=mtime .​
  • 常用情况
  • 建立空文件
  • 某个日期改成目前(mtime, atime)
  • 文件和目录隐藏权限
  • 新增文件和目录之后,默认的权限是什么?
  • umask
  • -S 使用字符表示权限
  • 指的是需要减掉的权限
  • 如0 就是所有权限都不要减掉
  • ​umask 002​
  • umask 在搭建文件服务器的作用很大
  • 文件隐藏属性
  • 注意必须在 ext 2 3 4 的系统上完全生效
  • chattr [+-=] 文件和目录
  • + 增加一个特殊参数
  • - 删除特殊参数
  • = 直接设置
  • A 设置这个属性的时候。atime 不会改动、避免过度读写磁盘
  • S 非同步写磁盘,修改文件会同步写入磁盘
  • a 设置之后只能增加数据,不能删除和修改,只有root有权限
  • c 默认对文件压缩存储
  • d 阻止dump程序dump文件
  • i 让文件不能删除,改名,设置连接也无法写入或者新增, 只有root有权限
  • s 如果设置s,文件被删除,完全从磁盘删除
  • u 相反,被删除了,内容还在磁盘,用于文件恢复
  • 注意点:
  • a 和 i 比较常用
  • xfs 文件系统仅仅支持 AadiS
  • lsattr [-adR] 文件或者目录
  • -a 隐藏文件也显示
  • -d 如果是目录,仅仅列出目录
  • -R 子目录一起列出来
  • 文件特殊权限
  • SUID
  • 只对二进制文件有效
  • 执行者对于该程序具有x可执行权限
  • 仅在执行过程中有效
  • 执行者具有拥有者的权限
  • 处理密码这种机密文件只能让root修改,但是又要让用户可以修改自己密码的时候这种情况的处理方式
  • 案例
  • /etc/bin/passwd
  • 用户对于passwd 有执行权限,所以是执行者
  • passwd 拥有者是root
  • 用户执行passwd的时候,会得到root权限
  • 由于有暂时的root权限,所以可以修改密码,但是只能修改自己的那部分
  • 只能是二进制文件,只能是二进制文件,只能是二进制文件
  • SGID
  • ls -l /usr/bin/local
  • 文件的情况
  • 对于二进制有用
  • 程序执行者对于程序来说是 x权限
  • 执行者在执行过程中获得用户组的支持
  • 目录的情况
  • r和x权限,可以进入此目录
  • 此目录的有效用户组,会变成改目录的用户组
  • 如果在此目录新建文件,该文件的用户组会和此目录的用户组相同
  • 举例
  • ​sudo ls -l /usr/bin/locate /var/lib/mlocate/mlocate.db​
  • SBIT
  • 用户对于此目录具有w,x权限的时候,具有写入的权限
  • 该目录新建文件的时候,仅有自己和root有权利删除该文件
  • 后面的章节再来回顾,请看16章
  • 观察文件类型 file 命令
  • 案例​​file /etc/bin/passwd​
  • 文件的查找
  • which
  • -a 将所有由PATH 环境变量可以找到的列出来
  • 注意是以 PATH为环境变量起点的
  • find
  • 能不用就不用
  • whereis
  • -l 列出会去查看的几个主要目录
  • -b 只看二进制文件
  • -m 只查找说明文件Manual 路径的文件( man 记录的)
  • -s 执照源文件
  • -u 查找不在上述文件的三个文件
  • 案例
  • 找出 ifconfig 文件名
  • 执照出和passwd有关的说明文件
  • locate / updatedb
  • -I 忽略大小写
  • -c 不输出文件名,只输出数量
  • -l 输出几行,五行就是 -l 5
  • -S 输出locate 使用的数据库信息
  • -r 正则方式
  • 案例
  • 找出系统中和passwd 相关的所有文件名,只需要5个
  • 列出locate查询使用的信息和列出数据的数量
  • 注意点
  • 新文件有可能找不到,因为数据库一般是一天更新一次
  • 更新方法:updatedb
  • 原理
  • 按照 /var/lib/mlocate 数据库近路,找出关键词的文件名

练习题

情境模拟题一:假设系统中有两个账号,分别是 alex 与 arod ,这两个人除了自己群组之外还共同支持一个名为 project 的群组。假设这两个用户需要共同拥有 /srv/ahome/ 目录的开发权,且该目录不许其他人进入查阅。 请问 该目录的权限设定应为何?请先以传统权限说明,再以 SGID 的功能解析。  目标:了解到为何项目开发时,目录最好需要设定 SGID 的权限!  前提:多个账号支持同一群组,且共同拥有目录的使用权!  需求:需要使用 root 的身份来进行 chmod, chgrp 等帮用户设定好他们的开发环境才行! 这也是管理员的 重要任务之一!

简答题

什么是绝对路径与相对路径
绝对路径的写法为由 / 开始写,至于相对路径则不由 / 开始写!此外,相对路径为相对于目前工作目录的路径!
 如何更改一个目录的名称?例如由 /home/test 变为 /home/test2
mv /home/test /home/test2
 PATH 这个环境变量的意义?
这个是用来指定执行文件执行的时候,指令搜寻的目录路径。
 umask 有什么用处与优点?
umask 可以拿掉一些权限,因此,适当的定义 umask 有助于系统的安全, 因为他可以用来建立默认的目录或文件的权限。
 当一个使用者的 umask 分别为 033 与 044 他所建立的文件与目录的权限为何?
在 umask 为 033 时,则预设是拿掉 group 与 other 的 w(2)x(1) 权限,因此权限就成为『文件 -rw-r--r-- , 目录 drwxr--r-- 』
而当 umask 044 时,则拿掉 r 的属性,因此就成为『文件 -rw--w--w-,目录 drwx-wx-wx』
 什么是 SUID ?
当一个指令具有 SUID 的功能时,则:
o SUID 权限仅对二进制程序(binary program)有效;
o 执行者对于该程序需要具有 x 的可执行权限;
o 本权限仅在执行该程序的过程中有效 (run-time);
o 执行者将具有该程序拥有者 (owner) 的权限。
 当我要查询 /usr/bin/passwd 这个文件的一些属性时(1)传统权限;(2)文件类型与(3)文件的隐藏属性,可以使
用什么指令来查询?
ls -al
file
lsattr
 尝试用 find 找出目前 linux 系统中,所有具有 SUID 的文件有哪些?
find / -perm +4000 -print
 找出 /etc 底下,文件大小介于 50K 到 60K 之间的文件,并且将权限完整的列出 (ls -l):
find /etc -size +50k -a -size -60k -exec ls -l {} \;
注意到 -a ,那个 -a 是 and 的意思,为符合两者才算成功
 找出 /etc 底下,文件容量大于 50K 且文件所属人不是 root 的档名,且将权限完整的列出 (ls -l);
find /etc -size +50k -a ! -user root -exec ls -ld {} \;
find /etc -size +50k -a ! -user root -type f -exec ls -l {} \;
上面两式均可!注意到 ! ,那个 ! 代表的是反向选择,亦即『不是后面的项目』之意!
 找出 /etc 底下,容量大于 1500K 以及容量等于 0 的文件:
find /etc -size +1500k -o -size 0
相对于 -a ,那个 -o 就是或 (or) 的意思啰!

写在最后

下篇的内容在后续会讲述后面到第十个章节的内容。