2021-2022-1 20212822《Linux内核原理与分析》第一周作业

实验一:Linux系统简介

  • Linux系统

    • Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
      在这里插入图片描述
    • Linux 主要是系统调用内核那两层
    • Linux之父:Linus Benedict Torvalds
  • Linux与Windows的异同

    • 费用

      • Linux免费而Windows收费
    • 安全性

      • Linux比Windows要安全
    • 使用习惯

      • Windows:普通用户基本都是纯图形界面下操作使用,依靠鼠标和键盘完成一切操作,用户上手容易,入门简单
      • Linux:兼具图形界面操作(需要使用带有桌面环境的发行版)和完全的命令行操作,可以只用键盘完成一切操作,新手入门较困难,需要一些学习和指导(这正是我们要做的事情),一旦熟练之后效率极高
    • 可定制性

      • Windows:这些年之前算是全封闭的,系统可定制性很差
      • Linux:你想怎么做就怎么做,Windows 能做到得它都能,Windows 做不到的,它也能
    • Linux没有的

      • 特定的支持厂商
      • 足够的游戏娱乐支持度
      • 足够的专业软件支持度
    • Windows没有的

      • 稳定的系统
      • 安全性和漏洞的快速修补
      • 多用户
      • 用户和用户组的规划
      • 相对较少的系统资源占用
      • 可定制裁剪,移植到嵌入式平台(如安卓设备)
      • 可选择的多种图形用户界面(如 GNOME,KDE)
  • Linux学习框架

在这里插入图片描述

  • 遇到的问题以及解决方案

    • Ubuntu以前未使用过,在Virtual Box里开Ubuntu镜像的时候很卡,还有一个关键问题就是不能全屏,为了解决这个问题,我安装增强功能,安装之后可以全屏了,问题得以解决。

实验二:基本概念及操作

  • Linux桌面环境(实验楼)

    • 几个熟知的桌面环境 KDE,GNOME,XFCE,LXDE
    • 实验楼目前使用的 XFCE 桌面环境,以前使用LXDE
  • 终端

    • 通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的
    • 终端(Terminal)和控制台(Console)是有区别的
    • 终端本质上是对应着 Linux 上的 /dev/tty 设备
    • Linux 的多用户登录就是通过不同的 /dev/tty 设备完成的
    • Linux 默认提供了 6 个纯命令行界面的 “terminal”来让用户登录
    • 在物理机系统上你可以通过使用**[Ctrl]+[Alt]+[F1]~[F6]**进行切换
  • Shell

    • Shell 是指“提供给使用者使用界面”的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe
    • UNIX/Linux 操作系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言
  • 命令行常用操作指令

    • touch file #创建一个名为 file 的文件,touch是一个命令
    • cd /etc/ #进入一个目录,cd是一个命令
    • pwd #查看当前所在目录
    • tab可以补齐命令
    • 方向上键↑,恢复你之前输入过的命令
    • *和?是通配符,用于模糊匹配
    • manhelp还有info都是帮助
  • 命令行常用快捷键

    • 在这里插入图片描述
  • 命令行常用通配符

    • 在这里插入图片描述
  • 作业

    • 安装banner字体体验Linux有趣的命令

      • 使用如下命令安装sysvbanner
        • sudo apt-get update
          sudo apt-get install sysvbanner
      • 使用banner来让特殊字符生成你想要的有趣字符
        • banner shiyanlou

        • 在这里插入图片描述

        • printerbanner -w 50 A

        • 在这里插入图片描述

        • toilet zhouwu

        • 在这里插入图片描述

        • figlet xwdsh

        • 在这里插入图片描述

  • 遇到的问题以及解决方案

    • 以前用过Windows的cmd,快捷键是Win+R,但是在Ubuntu中我刚开始连终端都打不开,后来知道了快捷键是Ctrl+Alt+T打开终端,然后就可以顺利完成了,但是本实验中仅需用实验楼提供的终端就可以了,不需要Ubuntu。

实验三:用户及文件权限管理

  • 查看用户

    • who am iwho mom likes可以查看当前终端的用户名(实验楼)
    • who命令适用于Ubuntu
  • who命令参数

    • 在这里插入图片描述
  • 创建用户

    • 在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户
    • root 权限,系统权限的一种,与 SYSTEM 权限可以理解成一个概念,但高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作,所以很多黑客在入侵系统的时候,都要把权限提升到 root 权限,这个操作等同于在 Windows 下就是将新建的非法帐户添加到 Administrators 用户组。更比如安卓操作系统中(基于 Linux 内核)获得 root 权限之后就意味着已经获得了手机的最高权限,这时候你可以对手机中的任何文件(包括系统文件)执行所有增、删、改、查的操作。

    • sudo adduser xwdsh #新建一个叫“xwdsh”的用户
    • sudo adduser 这个命令不但可以添加用户到系统,同时也会默认为新用户在 /home 目录下创建一个工作目录
  • 用户组

    • 查看用户组

      • 方法一
        • 使用 groups 命令可以知道自己属于哪些用户组
      • 方法二
        • 查看 /etc/group 文件
    • cat命令

      • 用于读取指定文件内容打印到终端输出
    • 将其它用户加入用户组

      • 使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限
    • 删除用户和用户组

      • 使用 groupdel 命令可以删除用户组
  • 文件权限

    • 首先使用ls -l列出文件,会跑出来很多如下格式的条目
    • 在这里插入图片描述
    • 当看到如上格式的条目,首先观察第一项:文件类型和权限,字母拆解表义如下
    • 在这里插入图片描述
    • 牢记Linux 里面一切皆文件
    • 读权限,表示你可以使用 cat <file name*(星号去掉,加这个符号是防止打不出来)> 之类的命令来读取某个文件的内容
    • 写权限,表示你可以编辑和修改某个文件的内容
    • 一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件
  • 变更文件所有者

    • 使用 chown 命令变更文件所有者,命令格式如下
    • sudo chown xwdsh iphone7p #修改文件iphone7p的所有者为xwdsh
  • 修改文件权限

    • 文件权限的两种表示方式

      • 方式一:二进制数字表示
        • 在这里插入图片描述

        • 很好理解,r(读)w(写)x(执行)三位,一共8种情况,用二进制表示就是000、001、010、011、100、101、110、111共8种不同的情况,相当于编码建立映射关系,按权展开转换成10进制就变成了10进制的0到7共8个数字,然后把再分别对应到不同类型的用户上去就可以,共有3种用户,分别对应拥有者(user),所属用户组(group),其他用户(others)。

      • 方式二:二进制数字表示
        • chmod go-rw iphone7p #代表给用户组(g)和其他用户(o)删去了读写权限
        • “+” 和 “-” 分别表示增加去掉相应的权限。
  • adduser 和 useradd 的区别是什么

    • useradd 只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd 去设置新用户的密码。adduser 在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
  • 作业

    • 作业描述

      • 添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。截图并把操作过程写入实验报告。
    • 实现截图

      • 创建新用户loutest
      • 在这里插入图片描述
      • 在opt目录下新建forloutest文件
      • 在这里插入图片描述
      • 设置成用户loutest可以读写
      • 在这里插入图片描述
  • 遇到的问题以及解决方案

    • 刚开始看文件权限表示的时候有点懵,多看几遍后理解了,然后chomd命令总是会拼写错误,一旦你拼写错误就会输出找不到该命令。题目要求用户loutest可以读写,而目前算上你新增的那个还有你自己一共也就两个用户,所以直接用其他用户(others)代替用户loutest即可,然后可以到/opt/目录下输入ls -l来查看文件的详细信息,观测到forloutest文件的权限是-rw-r-rw-,表明用户自己可以读写,用户组只能读,而其他用户可以读写,也就是用户loutest可以读写了。

实验四:Linux目录结构及文件基本操作

  • Linux 目录结构

    • 以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘…)及分区来实现文件管理
    • 然而 UNIX/Linux 恰好相反,UNIX 是以目录为主的,Linux 也继承了这一优良特性。Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。
  • FHS 标准

  • FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

  • 两层规范

    • 第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
    • 第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
  • 目录路径

    • pwd

      • 使用 pwd 命令可以获取当前所在路径(绝对路径)。
    • cd命令

      • cd .. #表示进入上一级目录
      • cd ~ #表示进入home目录,或者 cd /home/<你的用户名>
      • . 表示当前目录
      • 使用 ls -a 命令查看隐藏文件
    • 绝对路径

      • 关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
    • 相对路径

      • 关于绝对路径,简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点,表现形式如: /usr/local/bin,表示根目录下的 usr 目录中的 local 目录中的 bin 目录。
  • Linux 文件的基本操作

    • 新建

      • 使用 touch 命令创建空白文件。
      • 使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。
      • mkdir -p father/son/grandson #使用 -p 参数,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在安装软件、配置安装路径时非常有用):
      • mkdir 后面的文件夹名如果已经存在就会报错。
    • 复制

      • 使用 cp 命令(copy)复制一个文件到指定目录。
      • 使用 cp 命令(copy)复制一个目录需要加上 -r 或者 -R 参数,直接复制目录会报错。
    • 删除

      • 使用 rm(remove files or directories)命令删除一个文件。
      • 有时候你会遇到想要删除一些为只读权限的文件,直接使用 rm 删除会显示一个提示,你如果想忽略这提示,直接删除文件,可以使用 -f 参数强制删除,代码如下:
      • rm -f test #忽略提示强制删除test文件
      • 删除目录和复制一样,要加上 -r-R 参数,遇到权限不足删除不了的目录也可以和删除文件一样加上 -f 参数,代码如下:
      • rm -rf family ##忽略提示强制删除family文件夹
    • 移动文件与文件重命名

      • 使用 mv(move or rename files)命令移动文件(剪切) ,命令格式是 mv 源目录文件 目的目录
      • mv 命令除了能移动文件外,还能给文件重命名,命令格式为 mv 旧的文件名 新的文件名
      • 使用 rename 命令完成批量重命名,下有注意事项。
      • ps:rename 命令并不是内置命令,若提示无该命令可以使用 sudo apt-get install rename 命令自行安装。
    • 查看文件

      • 使用 cattacnl 命令查看文件,前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。
      • 标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),默认对应终端的键盘、标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件都对应被重定向到终端的屏幕,以便我们能直接看到输出内容。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

      • cat -nl passwd #添加行号并打印passwd文件
      • 以下是cat命令的常用参数:
      • -b : 指定添加行号的方式,主要有两种:-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式),-b t:只列出非空行的编号并列出(默认为这种方式)
        -n : 设置行号的样式,主要有三种:-n ln:在行号字段最左端显示,-n rn:在行号字段最右边显示,且不加 0,-n rz:在行号字段最右边显示,且加 0
        -w : 行号字段占用的位数(默认为 6 位)

      • 使用 moreless 命令分页查看文件,下为语法:
      • more passwd #分页查看passwd文件,向一个方向滚动
      • 使用 headtail 命令查看文件,它们只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行。
    • 查看文件类型

      • 使用 file 命令查看文件的类型,格式如下:
      • file /bin/ls #示例
    • 查看文件类型

      • 专门的命令行编辑器:emacs,vim,nano
  • 作业

    • 作业描述

      • 创建一个 homework 目录,建立名为 1.txt ~ 10.txt 文件,并删除 1.txt ~ 5.txt
      • Linux 的日志文件在哪个目录?
    • 实现截图

      • 创建目录,建立文件,删除文件
      • 在这里插入图片描述
      • 问题二:Linux的日志文件在 /var/log 目录下
  • 遇到的问题以及解决方案

    • 一开始没注意是要建立homework文件夹,想着是建立文件,结果使用touch建立homework发现进不去目录。后来才发现应该使用mkdir命令创建文件夹,如果homework是个文件那肯定进不去,而且得先删除homework文件才能创建homework文件夹,我想这是因为Linux中一切皆文件的缘故(文件夹也是文件,文件不能重名),后面就没问题了。

小结

  • Linux的命令和Windows的cmd命令有相似的地方,但在更多细节的地方是不一样的,需要多记多练才能记牢,通过第一周的Linux学习,我收益匪浅,特此做出总结。
  • 0
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

20212822周武

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值