当前位置: 首页 > news >正文

Linux_常见指令和权限理解

1. 初始Linux操作系统

1linux提炼特征:

a, 开源-大部分是免费的, 稳定的, 安全, 高效

b, 更多的被专业的人所使用

2Linux的应用场景

a互联网公司的服务后端

b, 智能设备的使用

c, 嵌入式场景

4linux版本

a, 商业化版本, 商业发行版

b, 技术版本, 也叫做Linux的内核, 源代码

这里可以多人共用一个云服务器

用adduser + 用户名  是新建用户

然后 passwd  + 用户名 设置密码

 用passwd +用户名修改密码, 用userdef -r +用户名字删除用户

但是我们最好都给自己用建立一个普通用户, 不要去用root用户去操作

用woami 查看自己是谁

操作系统是一款做软硬件管理的软件

一个好的操作系统衡量指标:稳定, 快速, 安全

为什么要有操作系统?

操作系统的核心工作就是通过对下管理好软硬件资源的手段, 对上提供良好的操作环境和使用环境

所有的行为都要贯穿上面四个结构

2. 初识shell命令 ,了解若干背景知识。

xshell里面ctrl c v不能用 需要加上fn

Alt+Enter:xshell自动全屏

3. 使用常用Linux命令

Linux操作系统的特点:纯命令行 

在工作中是没有图形化界面

文件 = 文件内容+文件属性

以 . 开头的文件是隐藏文件

Linux文件下面都有两个隐藏文件 分别是 . 和 .. , .. 表示当前路径的上一个路径, 表示回退

而一个. 表示当前路径 这个点用法为./+可执行文件, 帮助用户定位当前目录下的一个文件

Linux 的路径分割符是/ 而Windows 是\

Linux的根目录就是/

Linux的目录结构整体就是一个多叉树, 他的叶子节点, 一定是空目录或者非目录文件, 路上节点,一定是一个非空目录

绝对路径:我们把从/开始定位到指定位置, 具有唯一性的路径, 称为绝对路径

相对路径:我们以自己当前所处的路径为参照位置, 来进行特定文件的定位, 我们这种路径称为相对路径

比如知道bin去找lib ../lib/c++.txt(但是我们所处的路径发生变化了, 可能相对路径就失效了 )

绝对和相对路径

1绝对路径往往比较长, 但是不变, 一般在一些固定场景, 配置文件中使用

2一般命令行输入比较常用相对路径

Centos系统里面其他用户的账号一般都放在/home路径下 

指令和可执行程序都是可以执行的, 那么指令其实就是可执行程序

我们在执行指令的时候, 我们会先在系统中查找对应的指令, 指令位置就是.usr/bin/目录下

这是在系统特定的位置下

这个就比较厉害了, 我们可以写一个可执行程序, 然后改一个名字, 再放到系统的目录下, 然后就直接可以用了, 这种行为就是一种安装

基本的指令详解

1 ls : 对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息

        ls -l :显示文件的属性 可以简写为ll

        ls -a:可以显示出所有的隐藏文件

        ls -d:将目录像文件一样显示, 而不是显示其下面的文件

        ls -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;         “/” 表示目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)

        ls * : 这里的*就是一个通配符, 用于筛选

2 pwd : 显示用户当前所在的目录

3 mkdir : 在当前目录下创建一个目录

        mkdir -p, --parents  可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此              选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录,而亲是递归            创建

4 cd : 改变工作目录。将当前工作目录改变到指定的目录下。

5 touch : 创建一个普通文件

6 rmdir : 删除空目录(非空不能删)

        -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。

7 rm : 删除文件和目录

        rm -rf : 递归且强制删除       

8 man : 访问Linux手册页的命令是 man 语法: man [选项] 命令

        -k 根据关键字搜索联机帮助 num 只在第num章节找

        -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停                止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。

        解释一下,面手册分为8章

        1 是普通的命令

        2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,            需要加什么头文 件)

        3 是库函数,如printf,fread

        4是特殊文件,也就是/dev下的各种设备文件

        5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

        6 是给游戏留的,由各个游戏自己定义

        7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明

        8 是系统管理用的命令,这些命令只能由root使用,如ifconfig

9 cp : cp src dest 复制文件或目录

       

10 echo : 后面默认是字符串

        echo + 字符串 :直接打印字符串

        echo + 字符串 + > + 文件 : 输出重定向 ,没有在显示器显示, 而是被写到了文件中

                 他其实就是先清空文件, 然后写入新的内容

                那么清空文件可以写为>out.txt

         echo + 字符串 + >> + 文件 :这种重定向叫做追加重定向

11 cat : 打印文件内容, 后面跟的是文件名字, 输出文件的内容

        cat + 文件 : 这个与下面区别不大

        cat < + 文件 : 输入重定向, 本来是从键盘文件读取, 现在不用从键盘读取, 从指定文件              读取

        cat -n : 给输出的文本去编号, 把行号也打印出来

        cat -d : 非空的行号打印出来

        cat -s : 不输出多空行, 多空行变为一行

12 mv : mv src dest 就是将文件改名字或者移动文件, 其实就是剪切(名字不变)+重命名, 可           以指定名字也可以不指定名字

        1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件                重命名或将其移至一个新的 目录中。

        2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一                  个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。

         3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令                   将各参数指定的源文件均移至 目标目录中。

13 alias : 对指令重命名 alias='   指令    ', 这样就可以里, 不用了就alias=' '就可以了, 但是这                  个是临时的, 要写在脚本里面才会上机执行

14 which : 寻找指令在哪

15 more : cat 不适合看大文本, -数字, 就是输出多少行, 总的来说就是可以逐行下翻

16 less : less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能                     向后移动,而且less在查看之前 不会加载整个文件。

              /+行数, 就可以去搜索

17 head : head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头                     10行。

        head -n : 指定显示多少行

18 tail : 与head相反, 就是去看结尾

        tail -n : 指定多少行

        有了head 和 tail 就可以提取某一段到文件里面

        head -1020 log.txt > temp.txt

        tail -20 temp.txt > ret.txt 

        这样就可以提取出来了, 但是这里的问题就是创造了临时文件

        解决办法就是用管道 : |  ->这个被系统解释成管道文件, 是内存级的, 不会再磁盘上存在

        head -1020 log.txt | tail -21  这个相当于前面把文件的前1020行交给管道, 管道再将后            面的21行交给后面的文件

        管道其实就不需要经过内存, 而且管道可以连好多条指令, 一个处理完了交给另外一个

        可以支持流水线工作

19 与时间有关的指令

         date显示

           date + %Y-%m-%d  后面也可以加很多

        1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

        2.在设定时间方面

        3.时间戳

        时间转化为时间戳 : date +%s

        时间戳转化为时间 : date -d @16834242(获得的时间戳)

20 cal指令:就是打印本月日历

        cal + 年份 : 打印某一年的日历

21 find指令:(灰常重要) 可以在指定文件路径下进行文件的搜索

        find -name

                find ~ -name test.c : 搜索你所写过的所有叫test.c的文件

                find ~ -name *.c : 收索以.c结尾的文件

21 which + ls: 在指令路径/usr/bin, 搜索指令文件(找指令)

22 whereis + ls : 在系统特定的路径下, 既可以找到可执行文件, 又可以找到手册, 压缩包等等

23 grep : 在文件中搜索字符串,将找到的行打印出来

        grep + 搜索字符串 + 文件 

        这个也可以配合管道使用 cat ...txt | grep        

24 zip/unzip指令:

        zip name.zip 文件 : 后面如果跟的是目录, 那么会把目录当作一个文件, 这样打包出来             的是错误的

        zip -r name.zip 文件/目录 : 这里后面可以跟多个文件或者目录

        unzip  . zip 就可以解压

        unzip .zip -d 目录地址 : 解压到目的路径

25 tar : 打包/解包, 不打开他, 直接看内容

        tar czf XXX --打包压缩

        tar tzf XXX.tgz --预览

        tar xzf XXX.tgz --解压解包

        tar ->打包后缀

        .gz -> 压缩后缀

       XXX.tar.gz -> XXX.tgz        这是简写

        包在linux 里面一般用tar , 如果想在windows里面也想用, 用zip指令

26 bc : 就是Linux里面的计算器

        可以一种方便的方式 echo "1+2+3+4" | bc    就去计算了

27 uname -a

28 常用热键 tab (单击补全, 双击是提示)

         Ctrl + r :查找历史命令

        Ctrl + d 退出登录

        history : 查看所有的历史命令 用 history | grep ...   就可以去筛选

        但是Linux默认记录1000条历史命令

29 关机 shutdown : Linux操作系统(服务器), 永不关机 

 su 直接换为roos su + 名字  换为某个用户

指令的本质就是编译好的程序和脚本, 一定会在系统的特定路径下存放

命令行解释器其实就叫:命令行, bash ,sh, shell(各种解释器的统称),  图形化界面

4. 了解Linux权限概念与思想,能深度理解“权限”

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

这里可以用  su + 用户名   从root 切换到用户, 当你是root用户的时候不要密码, 但是如果你是普通用户的话, 你可以改变为其他人, 但是需要别人的密码

 su + root(可以省略), 从用户切换到root

切换到普通用户的时候ctrl+d 就回退到root

sudo + 命令, 这是以root的身份去执行, 给这个指令短暂的提权, 要输入你的密码 

但是这个的前提就是你在信任白名单里面 --如何添加白名单下一节讲 

Linux系统不以文件后缀来区分文件

权限与人有关, 还和所属组的权限有关

1.文件访问者的分类 : 权限的分类

之前我们知道Linux下面有两个用户分类, 这两种用户可以去扮演一下角色

a 拥有者

b 所属组

c 其他

2文件的类型和访问权限

a 文件类型

b 基本权限 

i.读 : r :Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限, 而不是限制你不能进入这个目录

ii.写 w  :Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限, 就是不能再创建文件和目录

iii.执行 x :execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.  “—”  : 表示不具有该项权限

3.文件权限值的表示方法

八进制的设置方法

4.文件访问权限的相关设置方法

a : chmod u+x g+x o+x test.txt  :这就是给文件三个访问者加上权限(也可以去减)

        chmod a+x test.txt : 这是给所有访问着加上权限

        修改权限的时候也可以用八进制的形式去修改权限, 因为每一个人的权限有3个, 每一个权限可以对应着二进制的0 和1 那么三个一起就是用八进制来表示

b : chown zcy test.txt : 这就是更改文件的拥有者, 但是这要root权限才可以操作(或者你是这个文件的拥有者, 你也可以去更改)

        同时可以 chown zcy:zcy test.txt : 这是拥有者和所属组两个一块更改

c : chgrp zcy test.txt : 这是更改文件的所属组, 着同样需要root权限, 或者你是这个文件的拥有者也可以

当进行权限认定的时候, 先看你是不是拥有者, 如果是, 就不看后面了(不管如果你是所属组且权限更多)

为什么我们创建文件的时候默认权限是:

普通文件权限: 664  (起始权限时666)

目录文件权限:775  (起始权限时777)

这个与权限掩码有关, 权限掩码umask 为0002 (这个用umask指令可以去修改)

最终权限 = 起始权限 & (~umask) 来计算

解释: 这个umask可以规定创建文件时候的起始权限

但是我们遇到了一个新的问题, 当两个人想要共同在一个目录下工作的时候, 两个人可以去创建, 

但是一个人也可以随意删除另外一个人的文件, 如果root设置不能 去w 的时候, 两个人都不能去创建, 但是这又违背了我们创建一个公共的工作区域

为了解决这个尴尬的问题, 我们引入了一个粘滞位

 当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

注意这里粘滞位是对于目录来说的

建立共享文件一般是在根目录, 并且只能是root用户才可以

总结

1 目录的可执行权限是表示你可否在目录下执行命令。

2 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

3 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限

4 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

到这里你已经初步了解Linux 目录结构含义了

http://www.lryc.cn/news/582637.html

相关文章:

  • OSPFv3与OSPFv2不同点
  • 【Spring WebSocket详解】Spring WebSocket从入门到实战
  • springboot单体项目的发布生产优化
  • 【保姆级目标检测教程】Ubuntu 20.04 部署 YOLOv13 全流程(附训练/推理代码)
  • 基于SpringBoot+Vue的非遗文化传承管理系统(websocket即时通讯、协同过滤算法、支付宝沙盒支付、可分享链接、功能量非常大)
  • 【WEB】Polar靶场 16-20题 详细笔记
  • 从0到1搭建ELK日志收集平台
  • OpenCV探索之旅:形态学魔法
  • mit6.5840-lab3-3D-SnapShot-25Summer
  • nmon使用方法
  • 人工智能大模型(LLM)论文17道菜
  • Python3完全新手小白的学习手册 12代码测试
  • 7 种简单方法将三星文件传输到电脑
  • go入门 - day1 - 环境搭建
  • MATLAB 实现 SRCNN 图像超分辨率重建
  • Go与JS无缝协作:Goja引擎实战之错误处理最佳实践
  • 深度学习-多分类
  • 二分查找篇——搜索二维矩阵【LeetCode】遍历法
  • Mysql常用内置函数,复合查询及内外连接
  • 嘉立创黄山派下载watch ui demo 教程(sf32)
  • (电机03)分享FOC控制中SVPWM的输出关联硬件
  • [ESP32]VSCODE+ESP-IDF环境搭建及blink例程尝试(win10 win11均配置成功)
  • Sa-Token完全学习指南
  • npm 包 scheduler 介绍
  • C++STL-vector
  • 股票数据源对接技术指南:印度尼西亚、印度、韩国
  • 静态路由实验以及核心原理
  • ubuntu24.04安装NFS网络文件系统/ARM开发板NFS挂载
  • 香港风水(原生)林地的逻辑分类器
  • 香港站群服务器价格怎么样?