Linux基础知识大全

Linux基础知识大全,第1张

Linux基础知识大全

Linux基础复习(不提供实例)
  • 一、文件管理
    • 1、Linux的目录结构
    • 2、Linux的七大文件类型
    • 3、学会使用帮助手册
    • 3、文件管理的基本命令
        • 1、ls 查看 目录下内容
        • 2、cd 切换目录
        • 3、mkdir 创建文件夹
        • 4、touch 创建文件 没有参数 直接跟要创建的文件名
        • 5、cp 复制
        • 6、mv 移动 重命名
        • 7、rm 删除文件
        • 8、cat 查看文件内容
        • 9、vi/vim 文本编辑器
        • 10、其他需要了解的命令,用着用着就记得了
  • 二、用户和组管理
    • 1、用户和组的关系
    • 2、用户和组需要知道的配置文件
    • 3、用户增删改查 (也可以通过配置文件内容来实现)
        • 1、useradd 创建用户
        • 2、usermod 修改用户
        • 3、userdel 删除用户
        • 4、passwd 修改密码
        • 5、id 查看用户信息
    • 4、组的增删改查(也可以通过修改配置文件来实现)
        • 1、groupadd 创建组
        • 2、groupmod 修改组信息
        • 3、groupdel 删除组
        • 4、groups 查看用户的属组
        • 5、gpasswd 修改用户的属组信息
    • 5、其他指令
    • 6、提权
        • 方案一:将用户加入轮子组(wheel)
        • 方案二:通过配置文件提权
  • 三、权限管理
    • 1、基本RWX与UGO权限
    • 2、设置文件的基本权限
        • 1、chown 修改文件的属主属组
        • 2、chmod 修改文件的ugo权限
    • 4、文件的ACL权限(访问控制列表)
        • 1、为什么会有:
        • 2、setfacl 设置ACL权限
        • 3、getfacl 查看文件的ACL权限
        • 4、mask与umask---掩码
          • 1)mask 最大有效权限
          • 2)umask 进程掩码
    • 5、文件的高级权限
          • 使用chmod 修改其语法与基础权限一样不做赘述
    • 6、文件属性(文件的隐藏权限)
            • 作用主要是用来防止误删除,它能够限制root用户
        • 1、chattr 添加文件属性
        • 2、lsattr查看文件的文件属性(隐藏权限)
  • 四、进程管理
    • 1、什么是程序?什么是进程?
    • 2、进程的常见状态
    • 3、如何查看进程
        • 1、ps 静态查看进程
        • 2、top / htop(显示的好看一点,默认没有)动态查看
        • 3、ss /netstat(与ss基本一样,推荐使用ss) 查看网络进程
    • 4、扩展
        • 1、让一个进程在后台运行,不占用终端
        • 2、守护进程
        • 3、进程优先级nice
  • 五、文件查找与管道和重定向
  • 六、磁盘管理
  • 七、链接
  • 八、软件包管理
  • 九、计划任务

文中的语法都是常用的,有些需要参数但是基本不用的就没有写



一、文件管理 1、Linux的目录结构
  • Linux系统文件结构不同于 windows的 有D盘 C盘什么的
  • 在Linux的世界里 所有的文件都放在 一个叫 **根(/)**的东西下面,我们暂且把它理解成一颗大树的 根部
  • 在系统创建的时候,系统就已经为我们规划好了,什么东西放在哪里,有什么嘛意义(当然这不是绝对的,只是系统默认的也是学习Linux系统必须了解的)下面就逐一介绍一下Linux下面究竟有些啥东东
  • /bin: 它主要存储可执行的二进制文件也就是我们 *** 作Linux的指令,是实现于Linux交互的最重要的工具
  • /sbin: 他和bin是差不多的具有同样的功能,只不过它记录的东西要比bin记录的厉害,是我们系统管理可以使用的一般人用不了
  • /lib: 它存储的是系统程序运行所需的库文件,是所有所有程序共享的
  • /dev: 它存储了的是各种各样的块设备比如:硬盘、鼠标、网卡、键盘等等一些硬件设备
  • /etc: 它主要存储的试一些配置文件,所谓配置文件就是可以改变程序运行效果的一种计算机文件,通过修改配置文件,来使程序有不同的运行效果
  • /mnt: 它主要用来存储,我的挂载点(文件夹),因为我们的电脑硬盘插到电脑以后是不能直接使用的就好比一个没有门的房子,那挂载点就好比是一个门,我们要在硬盘里增删改查都要经过这个门
  • /boot: 存储的是我们整个系统的核心,他就像人体的心脏一样支持这整个系统的运行,没有它我们有再好的硬件设备、再好的程序软件、再牛奇数大佬统统没有用武之地
  • /var: 它是主要存储一些时刻变化文件,就像我们的日记本一样,专业术语叫:日志文件
  • /tmp: 它主要存储的是一些临时(零食)文件,我们要用的用完就可以扔掉的,就像零食吃了就没了的
  • /root: 它就是我们系统管理员的家目录,拥有很大的权力,基本上上可以干掉系统里的切(我说的是基本噢)
  • /home: 它呢就是我们普通用户的家目录,就像一个部门的普通员工一样拥有
  • 倒挂树的芳容

2、Linux的七大文件类型
  • 再Linux系统中我们要牢记一句话:一切皆文件
  • -:代表是一个普通文件,比如:文本文件、视频文件、图片文件等
  • d:代表是一个目录文件(也就是文件夹)
  • c:字符设备文件(了解就行)
  • b:块设备文件,磁盘文件就是一个块设备文件
  • l:链接文件,类似于windows下的快捷方式
  • p:管道文件(了解就行)
  • s:套接字文件(了解就行)

3、学会使用帮助手册

在我们学习之前先了解一下如何使用帮助

  • 首先是 --help 的使用
    我们只需要在命令后后面加上 --help(有些命令-h也可以) 就可以获得命令语法 参数 作用等信息来帮助我们学习 eg:ls --help //查看ls 命令的使用方法
  • 然后就是man手册的使用 作用与–help差不多一样,但是它比–help强大一
    了接9类man手册,标红的需要记住,其他了解:
    1、一般命令
    2、系统调用库
    3、c标准库
    4、设备文件
    5、配置文件
    6、游戏相关
    7、杂项 //不同好分类的一些
    8、系统命令
    9、内核 //从rehl6开始淘汰
    eg:man 【类型编号】命令

3、文件管理的基本命令 1、ls 查看 目录下内容
  • 语法:ls 【选项】路径
  • i 查看inode号
  • l 显示详细信息
  • h 人性化显示(回单位换算),通常和 l 一起使用
  • a 显示目录下所有文件包括隐藏文件
  • t 按时间顺序显示

2、cd 切换目录
  • 语法:cd 路径
  • – 回上一次目录
  • .. 回上一级目录
  • ~ 回到家目录,每个用户都有一个自己的目录,称为家目录
  • 绝对路径,从根目录开始
  • 相对路径,从当前目录开始

3、mkdir 创建文件夹
  • 语法:mkdir【选项】目录名
  • -p 递归创建 就是一次创建多个层级的文件夹

4、touch 创建文件 没有参数 直接跟要创建的文件名
  • 语法:touch 文件名

5、cp 复制
  • 语法:cp 【选项】源文件 目标路径
  • - r 复制目录
  • -v 显示过程
  • -f 强制执行,不用询问是否确认执行

6、mv 移动 重命名
  • 语法:mv 【选项】 源文件 目标路径(当前目录就是重名)
  • v显示过程
  • i 若存在 则询问
  • f 无则直击执行 有则强制覆盖不提示
  • b 当文件存在 则创建一个备份

7、rm 删除文件
  • 语法:rm 【选项】目标文件
  • r 删除目录
  • f 强制

8、cat 查看文件内容
  • 语法:cat 【选项】文件名
  • n 显示行号
  • A 显示 以$结束显示

9、vi/vim 文本编辑器
  • 语法:vim 文件名
  • 四种工作模式:命令行模式、尾行模式、插入模式、可是快模式
  • 命令模式快捷键:
    - 0/home 光标到首行
    - $/End 光标到尾行
    - gg 光标到首行
    - G 光标到尾行
    - yy 复制光标行 nyy 复制n行
    - p 粘贴
    - dd 删除光标行 ndd 删除n行
    - dG 删除从光标行开始到尾行
    - u 撤销
    - x/delete 删除光标处
    - r 替换
  • 进入插入模式的快捷键
    - i 从光标处开始
    - o 从下一行开始
    - a 从光标下一个字符开始
    - I 光标所在行行首开始
    - O 从光标行的上一行开始
    - A 光所在行行尾开始
  • 尾行模式
    - w 保存
    - q 退出
    - ! 强制
    - /搜索
    - set nu 临时显示行号
    - set ic 不区分大小写
    - s///g 替换

10、其他需要了解的命令,用着用着就记得了
  • pwd 查看当前所在目录
  • history 查看历史命令
  • stat 查看文件详细信息
  • head、tail、more、less 查看文件内容,这个比较常用最好了解一下
  • tree 查看目录结构
  • which 查看 命令 对应目录
    date 显示时间
    ntpdate 网络对时
二、用户和组管理 1、用户和组的关系

每个用户有且仅有一个主组,一个组可是多个用户主组
一个用户可以有多个附加组


2、用户和组需要知道的配置文件
  • /etc/passwd 用户信息
    用户名:密码占位符:UID:GID:描述信息:家目录:登录shell
  • /etc/shadow 存放密码
    用户名:$1,6,5(加密算法)$sqlt(随机盐值)$哈希值
  • /etc/group 用户组目录
  • /etc/home 用户的家目录
  • /var/spool/mail 用户的mail信息
  • /etc/skel 默认家目录结构

3、用户增删改查 (也可以通过配置文件内容来实现) 1、useradd 创建用户
  • 语法:useradd 【选项】【参数】 用户名
  • d 指定家目录
  • u 指定uid
  • g 指定gid
  • s 指定登录shell
  • M 不创建家目录
  • G添加附加组

2、usermod 修改用户
  • 语法:useradd 【选项】【参数】用户名
  • l 修改用户名 新 旧
  • u 修改uid 要求uid没有
  • g 修改gid 要求gid已存在
  • s 修改登录shell
  • d 修改家目录
  • aG 添加附加组
  • c 修改描述
  • e 修改用户密码过期时间

3、userdel 删除用户
  • 语法:userdel 【选项】用户名
  • r 连同家目录一起删除

4、passwd 修改密码
  • 交互式修改:
    语法:passwd 用户名 在没有提权的情况下只有root用户才可以修改其他人的密码
  • 非交互式修改:
    echo “密码” | passwd --stdin 用户名

5、id 查看用户信息
  • 语法:id 用户名

4、组的增删改查(也可以通过修改配置文件来实现) 1、groupadd 创建组
  • 语法:groupadd 【选项】组名
  • g 指定gid ,gid要不存在

2、groupmod 修改组信息
  • 语法:groupmod 【选项】组名
    g 修改gid
    n 修改组名

3、groupdel 删除组

语法:groupdel 组名


4、groups 查看用户的属组
  • 语法:group 用户名

5、gpasswd 修改用户的属组信息
  • 语法:gpasswd【选项】用户 组名…
  • M 批量添加用户到组
  • a 添加用户到组
  • d 从组中删除组

5、其他指令
  • who 查看当前用户的登录终端信息
  • whoami 查看当前登录用户
  • who am i 查看当前终端的用户的登录终端信息
  • su 切换用户
  • sudo 提权过的用户 可以获得root权限

6、提权 方案一:将用户加入轮子组(wheel)

gpasswd -a 用户 wheel
usermode -aG wheel 用户

方案二:通过配置文件提权

visudo
vi /etc/sudoers


三、权限管理

对文件设置权限 可以规定某个用户能以什么方式对文件进行何种 *** 作 从而提高系统的安全性

1、基本RWX与UGO权限
  • r 代表 可读权限 就是只可以查看 数字用4
    -针对文件:就是 cat、more、tail、less
    -针对目录:就是 ls
  • w 代表 可写权限 就是可以对文件进行修改 数字用2
    -针对文件:就是vi、vim、echo 使用vi/vim还需要结合r权限 不然就是瞎 啥也看不到 能写个啥
    -针对目录:mkdir、touch、cp、mv 这里要结合x权限
  • x 代表 执行就是可以当作软件来运行 数字用1
    -针对文件:就是可以当作程序软件运行
    -针对目录:cd 进去了啥也干不了 就像坐牢一样

  • U 代表文件所有者
  • G 代表文件的属组
  • O 代表其他用户

2、设置文件的基本权限 1、chown 修改文件的属主属组
  • 语法 chown 【选项】【用户名】.【组名】文件名
  • R 递归修改
  • 不同写法
    - 【用户名】 只修改属主
    - 【.组名】只修改属组 它有一个单独名chgrp 但是用的少 基本不用
    - 【用户名.组名】同时修改

2、chmod 修改文件的ugo权限
  • 语法:chmod 【选项】如何处理【权限】 文件名
  • + 增加权限
  • - 删除权限
  • = 理解为修改权限 会把之前的权限覆盖掉
  • u 文件所有者
  • g 文件属主
  • o 其他用户
  • a 所有(属组、属组、其他一起修改)
  • 来个例子吧:
    chmod a+rwx filename //给filename文件增加rwx权限 ,这个是使用字母的方式
    chmod 777 filenmae //给filename文件增加rwx权限 ,这个是使用数字的方式
    777 = 421421421=rwxrwxrwx //三位为一组,分别代表ugo,有数字代表有权限,为0代表没有这个权限

4、文件的ACL权限(访问控制列表)

通过给文件添加ACL权限,来达到给单个用户或者单个组赋予不同的权限,然后我们要知道我们修改的是文件的属性,但是它最终作用在某个用户身上

1、为什么会有:

首先我们假设一个需求场景:我们有一个a.txt文件 他有如下权限
属主root:rwx
属组root:rw-
其他:r–
现在有一个用户tom 属于其他用户不在root组,现在我们需要他有rwx权限但是不能修改原因的基本权限 ,要解决这个问题就需要ACL权限了


2、setfacl 设置ACL权限
  • 语法:setfacl 【选项】 文件名
  • m 设置acl权限
  • x 删除acl权限
    一个实例解决上面需求:
    setfacl -m u:tom:rwx a.txt
3、getfacl 查看文件的ACL权限
  • 语法:getfacl 文件名
    查看上一个实例的结果:
    getfacl a.txt

4、mask与umask—掩码 1)mask 最大有效权限
  • 设置方法:setfacl m::r-- 文件名
  • 当我们给一个文件设置了mask时,他就会限制文件的最大权限
  • 举个例子:在一个文件没有设置mask时tom用户对文件的权限时 rwx,当设置了mask为r–时,那么tom的实际权限就会变成r–,也就是tom本身的权限与mask权限做运算

2)umask 进程掩码
  • 设方法:umask 【权限代码 】
  • 作用:用来限制文件在创建时候的初始权限
  • 文件的最大权限:666
  • 目录的最大权限:777
  • 在创建文件或目录时,文件或者目录的最大权限会与umask的反码做与运算最终得到创建时的默认权限
  • 反码:假设umask为:022 == ----w–w- == 000 010 010 做反码:就是111 101 101
  • eg:
    umask //查看umask权限
    umask 022 //设置初始掩码为022 全局设置
    (umask 022;mkdir filename) //设置初始掩码为022 只针对mkdir 这一次

5、文件的高级权限 使用chmod 修改其语法与基础权限一样不做赘述
  • SUID权限 作用:对可执行文件提权,主要用于一些命令
  • SGID权限 作用:组继承,它作用与目录,后面创建的文件会集成目录的组,一存在的不会被修改
  • STICKY权限 作用:防止用户之间的误删,也就是说用户只能删除属于自己的文件

6、文件属性(文件的隐藏权限) 作用主要是用来防止误删除,它能够限制root用户 1、chattr 添加文件属性
  • 语法:chattr 【+|- 选项】 文件名
  • i 只能查看,其他啥也干不了
  • a 只能追加,查看,其他 *** 作不允许

2、lsattr查看文件的文件属性(隐藏权限)
  • 语法:lsattr 文件名

四、进程管理 1、什么是程序?什么是进程?
  • 程序:程序时静态的,存在于磁盘中,他是由编程语言编写的一系列指令的集合
  • 进程:
    在用户角度:进程是动态的,存在于磁盘中,是有生命周期的,他是程序的实例,是程序一次动态执行的过程
    在系统角度:他是系统分配资源(cpu、内存、磁盘i/o、网络…)的基本单位

2、进程的常见状态
  • R runing正在运行
  • S sleep 睡眠可中断
  • D 睡眠不可中断
  • T stop 停止的
  • Z zombie 僵尸进程
  • + 前台进程
  • N 低优先级的
  • < 高优先级的

3、如何查看进程 1、ps 静态查看进程
  • 语法:ps 【选项】
  • aux 查看进程信息
  • -ef 查看进程信息
  • aox 指定显示字段(指定显示那些信息)
  • ps的选项一般就是上面的这几个个很常用,它的参数有很多,加 - 和不加都有区别的需要的时候可以去查,这里推荐一个网站方便查阅
  • 实例
  • 实例查询结果解读:
    -USER:启动进程的代表用户
    -PID:进程的ID 是进程的唯一编号 就像身份z号一样
    -%CPU:cpu的使用率
    -%EME:内存使用率
    -VSZ:虚拟内存
    -RSS:实际内存
    -TTY:运行终端
    -STAT:经常状态 R S T P…
    -START:启动时间
    -TIME:运行时间
    -COMMAND:进程启动者(这里不是说用户 而是是哪个程序)
  • 扩展命令:
    -pidof 进程名 //查看指定进程的PID
    -pgrep 进程名 //查看指定进程的PID
    -lsof -i:端口号 //通过端口号查看进程信息

2、top / htop(显示的好看一点,默认没有)动态查看
  • 语法:top 【选项】 //一般都不加参数
  • d 数值 //指定刷新时间
  • p 指定PID 多个 PID 用 ‘,’分开
  • i 不显示任何闲置进程或僵尸进程
  • 参数解读:
  • 当我们发现缓存(buff/cache)很大时可以通过: echo 3 > /proc/sys/vm/drop_caches 来清理缓存

3、ss /netstat(与ss基本一样,推荐使用ss) 查看网络进程
  • 语法:ss 【选项】
  • a 查看所有
  • n 显示udp进程
  • t 显示tcp进程
  • p 显示pid 和 名称
  • n 显示端口号
  • 常用服务的端口号
    -httpd(apache) 80
    -https 443
    -tomcat 8080 8009 8005
    -php 9000
    -ssh 22
    -ftp 20 21
    -DNS 53
    -vnc 5900
    -dhcp 67 68
    -redis 6379
    -mysql 3306

4、扩展 1、让一个进程在后台运行,不占用终端

在 指令后面 加 &
eg:sleep 60 & 睡眠一分钟在后台进行 == Ctrl+z
但是依赖当前终端 关闭当前终端时 进程也随之终止
使用jobs 可以查看当前终端有哪些后台执行的进程
使用fg % jobnumber(通过jobs查到的你不是PID哦)关闭后台进程


2、守护进程

nohup + 指令
eg:sleep 60
不依赖当前终端 关闭当前终端时 进程会继续运行


3、进程优先级nice

nice的大小决定了cpu在分配时间片时的优先级,nice为-19—20,nice只越大优先级越低,反之越高
创建进程时指定优先级:nice -n 指令
修改正在运行进程的优先级:renice -n 进程PID


持续更新中…

五、文件查找与管道和重定向 六、磁盘管理 七、链接 八、软件包管理 九、计划任务

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4661665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存