一、文件系统命令

1. FHS

  • 1.1 FHS:文件系统层次化标准

  • 1.2 拓扑:倒置的树形结构,一切都从根目录(/)开始

  • 1.3 常见一级目录存储文件功能

    • /boot:存储开机所需文件,如:内核、镜像、菜单的配置文件

    • /dev:以文件的形式存储设备及接口,如:硬盘、光驱等

    • /bin:存储命令程序及配置文件

    • /lib:开机时用到的函数及数据

    • /root:root账户的家目录,相当于~

    • /var:存储系统产生的日志文件

    • /media:用于挂载设备(光驱)的目录

    • /user:存储应用程序的安装目录

    • /etc:配置文件存储目录

  • 1.4 注意:目录名称区分大小写,FHS意义在于按照功能进行分类存储文件

2. 文件操作命令

  • 2.1 新建目录命令

    • 格式:mkdir -参数 目录名称

    • 参数:

      • -p:创建递归目录(包含下级目录的多级目录)

      • -m:对新建的目录设置存取权限

    • 例:

      image-20201006155715956

  • 2.2 新建文件命令

    • 格式:touch -参数 文件名

    • 例1:touch n{1,2,3,4,5,6,7,8}.txt

      image-20201006160252021

    • 例2:

      image-20201006162125240

    • 例3:

      • touch test.c

      • vim test.c

      • #include<stdio.h> int main(void){ printf("Hello World"); return 0; }

      • gcc test.c

      • ls -a

        image-20201006163827628

      • ./a.out

  • 2.3 删除命令

    • 格式:rm -参数 文件名

    • 参数:

      • -r:删除目录

      • -f:强制删除,不确认

        image-20201006162615901

  • 2.4 pwd命令:显示绝对路径

  • 2.5 cp拷贝命令

    • 格式:cp -参数 源文件 目标文件

    • 参数:

      • -r:拷贝目录

      • -p:保留原始文件属性

      • -d:若为链接文件,则保留链接文件属性

    • 注意:

      • 若目标为目录,则拷贝到目录中

      • 若目标为文件且不存在,则正常拷贝

      • 若目标为文件且名称不同,则改名后拷贝

  • 2.6 mv移动文件命令

    • 格式:mv -参数 源文件 目标文件

    • 注意:

      • 若目标为目录,则剪切移动到目录中

      • 若目标为文件,则修改名称(无同名目录)

  • 2.7 大容量文件生成命令

    • 格式:dd if=数据来源 of=新文件名 count=数据块个数 bs=单个块容量

    • 功能:按照指定容量制作大文件,数据来源一般为算法设备或光驱

    • if=/dev/zero:zero为可输出指定容量大小的数据0

    • if=/dev/sr0:光驱(cdrom)

    • 例:

      • 制作400MB大文件:dd if=/dev/zero of=xin.txt count=2 bs=200MB

      • 制作光盘镜像:dd if=/dev/sr0 of=centos7_x86_64.iso

  • 2.8 file命令

    • 作用:查看文件类型

    • 格式:file 文件名

    • 文件类型

      • empty:空文件

      • ASCII File:ASCII文件

      • character special:字符设备文件

      • block special:块设备文件

      • directory:目录

      • link:链接文件

  • 2.9 cat命令

    • 作用:输出文本内容

    • 格式:cat 文件名

    • 参数:

      • -n:显示行号

      • -b:排除空行,非空行显示行号,从1开始显示

    • 将文件显示内容输出到另一文件

      • touch temp.txt

      • cat /etc/passwd > temp.txt

      • cat temp.txt

    • 文档合并:

      image-20201007165810521

  • 2.10 tac命令

    • 作用:倒序查看文件内容

    • 格式:tac 文件名

      image-20201007170247545

  • 2.11 more命令

    • 作用:翻页查看文件内容,适用于内容较多的文件

    • 格式:more 文件名

    • 参数

      • -s:将输出文件中的空行减少为1个空行

      • -p:先清屏后显示

      • -数字:如-10,表示1屏显示10行,包括空行

    • 例:

      • more -sp /etc/passwd

      • more -5 /etc/passwd

    • 注意:

      • 点击空格进行翻页浏览

      • 点击回车进行换行浏览

      • 点击q键退出浏览

  • 2.12 less命令

    • 作用:同more,使用键盘上下键浏览

  • 2.13 head命令

    • 作用:显示文本文件的前n行

    • 格式:head -数字 文件名

  • 2.14 wc命令

    • 作用:统计文本文件内容的个数

    • 格式:wc -参数 文件名

    • 参数

      • -l:显示行数

      • -w:显示单词数

      • -c:显示字节数

    • 不加参数全显示

    • 例:显示文件前十行后统计字节数

      image-20201007171748647

  • 2.15 stat命令

    • 作用:显示文件的存储信息

    • 格式:stat 文件名

3. 文件查找命令

  • 作用:按照条件查找文件

  • 格式:find 查找路径 查找条件 操作

  • 查找条件:

    • 文件名称

      • -name:按照文件名检索,文件名最好加上双引号

        • image-20201008091901205

      • 通配符:

        • *:表示任意内容匹配任意次数

        • ?:表示任意内容匹配一次

        • image-20201008092204622

        • image-20201008092255826

        • image-20201008092635098

      • 以扩展名查询文件

        • find /etc -name "*.cfg"

          image-20201008093035974

          image-20201008093054674

    • 文件属性

      • -user:按照所有者进行匹配(root账户或普通账户)

        • find ~ -user "root"

        image-20201008093426050

        • find ~ -name "a*" -user "root"(检索以a开头且归属于root账户的文件)

        image-20201008093547774

        • find / -name "*e" -o -user "ZHIYUAN"(检索以e结尾或归属于ZHIYUAN账户的文件)

    • 设备

      • -type b/d/c/p/l/f:按照文件类型检索(块设备、目录、字符设备、管道设备、链接文件、文本文件)

        • find /dev -type b (检索块设备文件)

        • find ~ -type d (检索目录)

    • 权限

      • -perm:按照权限检索

      • find /dev -perm 777

    • 时间

      • -mtime:按照修改文件时间检索

      • -atime:按照访问文件时间检索

      • -ctime:按照修改权限时间检索

      • 注意:-n表示n天以内,+n表示n天以前

      • 例:find / -mtime -10 -empty(检索10以内未修改的空文件)

    • 容量

      • -size:按照容量来检索(k、M、G)

        • find /dev -type c -size -10k(检索/dev目录下的容量小于10k的字符设备文件)

        • find / -size +100M(检索根目录下容量大于100M的文件)

4. 文件内容过滤命令

  • 作用:在一个文件中按照查找字段进行过滤内容

  • 格式:grep -参数 查找条件 文件名

  • 参数:

    • -n:显示检索内容的行号

    • -i:忽略字母大小写

    • -v:根据检索关键字进行反向显示

    • -c:统计符合条件的行数

    • -A数字:如-A3,显示符合条件的当前行和以下3行,向下遍历(4行)

    • -B数字:如-B3,显示符合条件的当前行和以上3行,向上遍历(4行)

    • -C数字:如-C2,显示符合条件的当前行以及上下2行(5行)

  • 例:

    • 检索包含“root” 的行信息:grep -n "root" /etc/passwd

    image-20201008105652649

    • 检索passwd文件中不能登录的信息:grep -n “/sbin/nologin” /etc/passwd

      image-20201008110049784

    • 检索passwd文件中能登录的信息:grep -n -v "/sbin/nologin" /etc/passwd

      image-20201008110252359

    • 检索包含“ssh”字段的行以及上5行:grep -nB5 "ssh" /etc/passwd

      image-20201008110442342

    • 检索包含“ftp”的行及上下两行:grep -nC2 "ftp" /etc/passwd

      image-20201008110607221

    • 检索不能登录账户的行数:grep -c "/sbin/nologin" /etc/passwd

      image-20201008110717180

      image-20201008110754636

    • 检索包含大小写字母d的信息:grep -ni "d" /etc/passwd

      image-20201008110931203

  • 正则表达式

    • 概念:为了处理大量文本或字符串而定义的一套规则方法

    • 特点:

      • 通过定义特殊符号来描述模糊查找关键字,可以快速过滤、替换、输出字符串

      • 检索时是按行为单位进行处理

    • 使用[ ]字符集表示

      • [ab]:检索包含或者 b的行信息,[]中只能表示一个内容

        例:检索包含字母d或者D的信息:grep

        image-20201008111636544

        例:检索包含字母o的信息:grep -n [o] /etc/passwd

      • [^]:根据关键字检索后反向显示(反向着色)

        例:检索不包含字母o的信息:grep -n [ ^o ] /etc/passwd

        例:检索不以r开头且包含oot的信息:grep -n [ ^r ]oot /etc/passwd

        image-20201008112349265

      • [-]:[0-9] 表示数字,[a-z] [A-Z]表示小写或大写字母,[a-zA-Z]表示字母

        例:检索包含7-9的信息:grep -n [7-9] /etc/passwd

        image-20201008112559287

        例:检索包含大写字母:grep -n [A-Z] /etc/passwd

        image-20201008112701436

    • 行首及行尾

      • ^:表示行首

        例:检索以“root”开头的行信息:grep -n "^root" /etc/passwd

        image-20201008112905339

        例:检索以#开头的行信息:grep -n "^#" /etc/sos.conf

        image-20201008113112533

        例:检索以[开头的信息:grep -n "^\[" /etc/sos.conf(注意:\转义)

        image-20201008113553198

      • $:表示行尾

        例:检索以数字结尾的信息:grep -n [0-9]$ /etc/sos.conf

        image-20201008113830879

        例:检索空白行:grep -n ^$ /etc/sos.conf

        image-20201008114017543

        例:检索非空行:grep -nv ^$ /etc/sos.conf

        image-20201008114138441

    • 正则通配符

      • 点(.):表示一个任意字符

        例:检索以r开头,t结尾的中间2个字符的信息:grep -n "r..t" /etc/passwd

      • 星号(*):重复前面字符 0次或多次

        例:检索至少包含2个字母o的信息:grep -n "ooo*" /etc/passwd

        image-20201008115219639

      • 转义字符

        • 作用:由于某些字符有特殊作用,若使用该字符原来的功能,则需要使用\将其特殊功能去掉,称为转义

          image-20201008115700465

        • 例:检索以点结尾的字符:grep -n "\.$" tt.txt

      • 区间字符

        • 格式:\{n1,n2\}

        • 分析:由于{}有特殊作用,需要使用\进行转义,n1==n2时,可以简写为\{n1\},表示执行n1次

        • 例:检索包含两个o的信息:grep -n "o\{2\}" /etc/passwd

          image-20201008120202158

          例:检索包含两个到五个o的信息:grep -n "o\{2,5\}" /etc/passwd

          image-20201008120403954

5. 文档内容替换命令

  • 作用:进行文本内容的批量替换

  • 格式:tr 原字符 结果字符

  • 例:将passwd文件中的小写字母改为大写:cat /etc/passwd | tr [a-z] [A-Z]

    image-20201008140951688

  • 例:grep -n "root" ~/passwd | tr [a-z] [A-Z]

    image-20201008141308276

6. 打包压缩命令

  • 作用:将文件或目录进行打包、压缩、解压缩

  • 分类:

    • *.gz:由gzip程序进行压缩、解压缩

    • *.bz2:由bz2程序压缩、解压缩

    • *.tar:只是打包文件

    • *.tar.gz:使用tar打包后进行gzip压缩

    • 注意:*.tar.bz2 和 *.tar.xz 也是打包压缩文件

  • tar命令

    • 格式:tar -参数 文件名 目标及存储路径

    • 参数:

      • -c:创建压缩文件

      • -x:解压缩文件

      • -v:显示时间进度

      • -f:目标文件名

      • -p:保留原始文件的属性及权限

      • -t:查看压缩包的内容

      • -P:使用绝对路径进行压缩

      • 常用参数:

        • -cvf:压缩

        • -xvf:解压缩

    • 例:tar -cvf rootfile.tar.gz /root

      ​ tar -xvf rootfile.tar.gz

      • 注意:参数c和参数x不能同时使用

7. 管道符与重定向符

  • 重定向

    • 分类:

      • 输入重定向:默认来源于键盘

      • 输出重定向:默认到屏幕

    • 符号:

      • 命令 < 文件:将文件作为命令的标准输入

      • 命令 > 文件:将标准输出重定向为文件(覆盖清空原有内容)

      • 注意 >> 表示追加,会保留原有内容

  • 管道符

    • 符号:|

    • 格式:命令1|命令2|命令3.......

    • 作用:将前一个命令的输出结果作为下一个命令的标准输入

8. 环境变量

  • 作用:用来定义系统运行环境的相关参数

  • 一般使用大写英文字母

  • PATH环境变量

    • 作用:存储Linux系统命令解释器bash及程序的路径

    • 查看:ehco $PATH

  • 常见环境变量

    • HOME:存储家目录的绝对路径

    • HISTSIZE:记录history命令的历史命令条数

    • LANG:记录语系

    • MAIL:邮箱文件

  • 执行命令过程

    • 第一步:判断是否以绝对路径或者相对路径来书写命令,若为绝对路径则立即执行

    • 第二步:判断命令名是否为别名

    • 第三步:使用bash解释器判断命令是外部命令还是内部命令

    • 第四步:通过PATH查询路径执行

    • 查看环境变量:$

      • 格式:$ 变量名

  • 全局变量:

    • 作用:所有账户都生效的变量,默认定义的为局部变量

    • 格式:export 变量名

    • 例:

      在root账户下:

      • export NIC=/etc/sysconfig/network-scripts/ifcfg-ens33

      • cat $NIC

      在普通账户下

      • su ZHIYUAN

      • cat $NIC

二、 用户账户及权限

1. root账户

  • root账户为默认的系统管理员账户,拥有完整权限

  • 使用原则:生产活动中尽量不使用root账户,应使用普通账户临时分配权限来使用

2. UID

  • 账户ID是管理账户的一种手段,相当于账户的“身份证编号”,具有唯一性

  • 编号原则

    • 系统使用无符号整数进行编号,范围:[0,4294967294]

    • UID分类

      • 系统管理员账户:[0,999],root账户UID为0

      • 普通账户:从1000开始编号,连续编号,即使管理员编号未使用,普通账户也不可占用

      • 查看:/etc/passwd

    • id命令

      • 作用:显示账户的UID值

      • 格式:id 账户名

  • 注意:UID不能相同

3. 新建账户

  • 格式: useradd -参数 账户名

  • 参数:

    • -d:指定账户家目录,默认普通账户家目录为:/home/账户名

    • -e:设置账户到期失效时间,时间格式:YYYY-MM-DD(如:2020-10-08)

    • -u:指定账户的UID值

    • -g:指定一个初始用户的工作组(工作组必须已存在)

    • -G:指定一个或多个扩展组

    • -N:不创建与账户同名的基本工作组

  • 例:useradd test1

4. 设置账户密码

  • 格式:passwd -参数 账户名

  • 参数:

    • -l:锁定账户,禁止登录

    • -u:解除锁定,允许登录

    • -d:允许用户可以用空格密码登录

    • -e:强制用户在在下次登录时修改密码

  • 注意:

    • 密码输入时不回显

    • 密码应超过8字符

    • 密码应使用数字、字母、符号组成

    • 密码应定期更换

  • 例1:新建账户、设置密码、注销账户、重新登录

    • useradd test2

    • passwd test2 (输入两次密码)

    • logout

    • 登录test2账户

  • 例2:新建账户test3,UID=5555,工作组为test1,家目录为/home/tmp

    • useradd test3 -u 5555 -g test1 -d /home/tmp(/homt/tmp需要新建)

    • passwd test3(输入两次密码)

    • logout

    • 登录test3账户

    • pwd

    • id test3

  • 例3:设置账户为不可登录状态

    • vim /etc/passwd

    • 定位倒数几行的普通账户,点击i键,将本行尾部的/bin/bash修改为/sbin/nologin

    • 点击ESC键,冒号,wq保存并退出

    • logout

    • 尝试登录被修改账户

  • root账户密码的破解

    • reboot重启系统

    • 在内核选择界面点击键盘上下键,再点击e键

    • 进入内核登录编辑界面,定位Linux16所在行,找到ro修改为rw init=/sysroot/bin/bash

    • 按下Ctrl+X

    • 进入紧急救援模式后输入chroot /sysroot

    • passwd修改密码(输入两次密码,方块为汉字不能显示)

    • 设置selinux 使其密码修改生效:touch /.autorelabel

    • 按下Ctrl+D

    • reboot重启

5. 删除账户

  • 格式:userdel -参数 账户名

  • 参数:

    • -f:强制删除

    • -r:同时删除账户及家目录

6. 工作组(group)

  • 意义:将相同属性及权限的账户作为一组,组内账户属性等信息相同

  • Linux系统为了方便管理数据,引入了层级管理机制:公司(系统)->部门(工作组)->员工(账户)-> 文件(权限)

  • 分类

    • 基本工作组:创建账户时一同创建同名的工作组

    • 扩展组:可以将账户加入到其他工作组中

    • 查看:more /etc/group

  • GID:工作组编号,规则同UID

  • 创建工作组

    • 格式:groupadd -参数 工作组名

    • 参数:-g ,自定义工作组GID,默认从1000开始

  • 删除工作组

    • 格式:groupdel 工作组名

    • 注意:若工作组中已存在账户,必须先移除再删除工作组,否则无法删除工作组

7. 文件权限

  • 文件归属者

    • 文件拥有者(账户)

    • 所属组(工作组)

    • 其它账户

  • 权限的意义

    • 限制用户操作,规范命令使用,将破坏性限制在一定范围

    • 类别

      • 普通文件(-)

        • 可读(r):可以读取到文件中的内容

        • 可写(w):可以编辑修改删除文件内容

        • 可执行(x):可以运行一个脚本

      • 目录(d)

        • 可读(r):可以读取目录中的文件列表

        • 可写(w):可以读取目录内容,修改目录名称,增删目录中的文件

        • 可执行(x):可以进入该目录(cd命令)

    • 查看权限方法:

      • ls -l(ll同):查看目录内的文件权限信息

      • ls -ld:查看当前目录的权限信息

      • 显示内容分析:

        • 第一列描述文件类别,- 表示普通文件,d为目录

        • rw-r--r--:三个一组,分别对应账户、工作组、其他账户对该文件拥有的权限,- 表示无权限

        • 1:链接数

        • root root:该文件对应的账户及所属工作组

    • 权限数字表示法

      • 原则:

        • r:4

        • w:2

        • w:1

      • 小结:

        权限项

        执行

        执行

        执行

        字符表示法

        r

        w

        x

        r

        w

        x

        r

        w

        x

        数字表示法

        4

        2

        1

        4

        2

        1

        4

        2

        1

        权限分配

        文件所有者

        文件所属组

        其他账户

      • 组合

        • rwx:4+2+1->7(完整权限)

    • rw-:4+2->6(可读可写不可执行)

      • r-x:4+1->5(可读可执行不可写)

      • r--:4(可读不可写不可执行)

      • -wx:2+1->3(不可读可写可执行)

      • -w-:2(可写)

      • --x:1(可执行)

      • ---:0(无权限)

      • 例:764、642、153、731的字符描述

        • rwxrw-r--

        • rw-r---w-

        • --xr-x-wx

        • rwx-wx--x

      • 例:rwxrw-r-- 、rw--w--wx 、rw-r--r--数字描述

        • rwxrw-r--:764

        • rw--w--wx:623

        • rw-r--r--:644

  • 修改文件权限命令chmod

    • 格式:chmod -参数 权限 文件或目录名

    • 例:touch tmp.cfg(新建文件默认权限644)

      ​ chmod 777 tmp.cfg

  • chown命令

    • 作用:设置文件所有者及工作组

    • 格式:chown -参数 账户名:工作组 文件或目录名

    • 例: chown ZHIYUAN:ZHIYUAN tmp.cfg

  • 文件隐藏权限

    • 原则:文件一般包含默认权限和隐藏权限,隐藏权限默认状态下无法查看,若权限足够但无法删除,此时应考虑该文件是否有隐藏权限

    • lsattr命令

      • 作用:查看文件隐藏权限

      • 格式:lsattr 文件或目录名

    • chattr命令

      • 作用:设置文件隐藏权限

      • 格式:chattr 参数 文件或目录名

      • 参数

        • i:表示文件无法修改(目录中不能新建和删除)

        • a:仅允许追加内容,不可以覆盖、删除

        • s:从硬盘中彻底删除,不可恢复,会使用0填充文件所在存储空间

        • S:文件变更后同步到磁盘

      • 注意:参数前若有加号(+)或减号(-),则表示增加或撤销功能

      • 例:设置不可删除权限

        image-20201009105520603

8. 账户切换命令

  • 格式:su -参数 账户名

  • 常用:su - 账户名

  • 注意:

    • 减号(-)表示完全切换,重新建立系统环境变量,不保留原有环境参数

    • root账户切换到普通账户,不需要输入密码,反之需要重新验证密码

9. sudo命令

  • 作用: 给普通账户提供额外的权限完成原本root账户才能实现功能,将权限控制在某个命令或文件上,降低安全风险

  • sudo配置文件分析

    • 原则:必须在root账户下配置后才可使用

    • 格式:visudo

    • 方法:

      • visudo

      • 输入后定位第99行即:root ALL=(ALL) ALL

      • 该参数意义为:账户名 允许使用的主机=(以谁的身份) 执行命令列表

      • 点击i键输入:普通账户名 ALL=(ALL) ALL

      • 输入冒号,wq保存并退出

  • 提权方法:

    • 格式: sudo -参数 命令名称

    • 例:新建账户访问 /etc/shadow

      image-20201009112930327

      image-20201009112725500

原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://blog.zyblog.xyz/archives/linuxming-ling-xue-xi-san
版权声明:本文为博主原创文章,转载请注明原文链接作者信息