《LINUX鸟哥的私房菜》笔记(上)

简介: 《LINUX鸟哥的私房菜》笔记(上)


前言

很久之前看过这本书,当时居然写了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) 的意思啰!

写在最后

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

相关文章
|
2月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
149 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
4月前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
4月前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
106 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
101 2
linux笔记 diff及patch的制作与使用
|
4月前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
90 9
|
4月前
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
4月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
4月前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
4月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作