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

【从小白到大白04】Linux基本权限

image-20221019205759719

文章目录

  • shell命令以及运行原理
  • Linux基本权限
      • 切换用户
      • sudo提权
  • 文件权限
    • 文件访问者的分类
    • 文件属性
      • 文件类型
      • rwx权限
      • chmod +/-权限
      • chown chgrp
      • chmod +数字
      • umask
  • 粘滞位
  • 如果该文章对你有帮助的话,点个👍支持下博主吧,我会继续更新高质量文章的!!!

shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为“内核(kernel)“ ,但我们一般用户,不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

Shell的最简单定义:命令行解释器(command Interpreter)

shell作用:

1.将使用者的命令翻译给核心(kernel)处理。

2.同时,将核心的处理结果翻译给使用者。

image-20221016181801036

对比Windows,我们操作windows不是直接操作windows内核,而是通过图形接口,点击等等完成我们的操作(比如:双击打开你的D盘浏览学习资料);

相同的shell对于Linux有相同作用,对我们的指令解析给Linux内核,反馈结果通过内核运行出结果后,通过shell传递給我们。

Linux基本权限

Linux系统下有两种用户:超级用户(root)-皇帝;普通用户-平民

皇帝可以在Linux系统下做任何事-没有限制

平民在Linux系统下受限制的苟活

超级用户提示符为"#“;普通用户提示符为”$"

切换用户

命令:su+[ 用户名]

root用户切换到普通用户:su + user(用户名)

比如root用户换成李现(用户名)直接输入:su 李现 那么现在你就是李现啦!

而普通用户切换到root用户则需要输入:su root (root可省略)—需要输入登录root账号的密码!

sudo提权

当我们是平民(普通用户)时,想要拥有皇帝(root用户)的权力去做一件事,但是我们又不想改变我们平民(普通用户)的身份时,就可以用到sudo提权操作!

命令:sudo + 指令

比如我们作为普通用户想要用以root的身份在当前目录下去创建一个文件(test.c)-则我们可以这样:

sudo touch test.c

(这时我们需要输入当前普通用户的密码!在短暂的几十分钟内不需要再输入密码就能继续sudo提权)

文件权限

文件权限=人(文件访问者)+文件属性

文件访问者的分类

u-user(所有者):文件和文件目录的所有者

g-group(所属组):文件和文件目录的所有者所在的组的用户

o-other(其他用户)

image-20221018111936497

文件属性

我们可以看到文件的前面有十个字符,第一个字符代表着文件类型

文件类型

image-20221018115235304

其中linux系统中的文件类型和windows系统中的文件类型区分的方式不同!

Windows以后缀(比如.txt、.dll、.jpg)区分文件类型

linux不以 后缀去区分文件类型!

image-20221018115829927

如果要使用文件后缀,仅仅只能用来提示用户来区分文件—文件后缀是文件名的一部分!

而linux则是以文件的前面属性的第一个字符作为文件类型的区分!

linux文件类型(前面属性的第一个字符作为区分):

—(横杠):普通文件(源代码、库文件、可执行程序。文件压缩包等等)

d:目录文件

c:字符设备文件:键盘、显示器等等

b:块文件:磁盘等等

l:链接文件:快捷方式

p:管道文件

s:socket文件

以上文件除了普通文件和目录文件,其他文件几乎不能删啊!

那么剩下的九个字符呢?

剩下的九个字符分为三三为一组!

image-20221018121313031

分别为所有者、所属组。other对应的权限!

接下来我们针对一组权限进行刨析,其他两组权限是一样的可以类比:

rwx权限

r-read(读)权限

w:write(写)权限

x:execute可执行权限

有就显示对应字符,没有就显示-【比如r-x:有读权限,没有写权限,有可执行权限】

拥有者一般三个权限都有:rwx-读权限-写权限-可执行权限

那么具体在linux系统上我们应该怎么看权限呢?
权限:某人允许做某事 【属性和人要一 一对于!】

image-20221019173110895

chmod +/-权限

给文件或目录增加或减少权限用到chmod

指令:chmod + 人+/-权限 + 文件名

比如: chmod u-r test.txt【在文件test.txt上给user(所有者)减去读权限】

image-20221019175944564

另:改文件或目录的人只能是该文件或目录拥有者或者是root!!!

要是想要一次性给文件所有属性同步增减权限,可以这样:

chmod + a+/-指令 + 文件名{a—all—所有人}

image-20221019180750415

chown chgrp

给文件更改所有者要用到chown

指令:sudo chown 用户名 文件名(sudo提权)

一般情况下,你把文件给完别人之后你的身份就从user(所有者)变为group(所属组)

给文件更改所属组要用到chgrp

指令:sudo chgrp 用户名 文件名

要是想要把文件或者目录的所有者和所属组给同一个人,那么我们可以:

指令:sudo chown 用户名:用户名 文件名

chmod +数字

更改权限不只有上面说到的chmod +/-rwx;这里我们可以这样看rwx

image-20221019183207659

所以我们可以这样改:

指令: chmod 数字数字数字 文件名

image-20221019183915585

umask

在linux操作系统中,目录的创建出来的起始权限为777 ;而文件的创建出来的起始权限为666

但是我们查看的目录起始权限为775,文件的创建出来的起始权限为664,这是为什么呢?

而系统会默认配置好umask权限掩码**:凡是在umask中出现的掩码,都必须在权限中去掉!!**

umask— 0002(八进制、第一位0负责补齐不需要看) — 000 000 010

就是系统会把umask有的权限在文件或目录中去掉(去掉有的1),然而系统用的不是减法,而是把

umask掩码按位异或 然后再与文件或目录的权限按位与**【(~umask)&权限码】**

image-20221019193509799

umask掩码是可以修改的 **指令:umask xxxx **

(xxxx为八进制数字;第一位0可省略,即为 umask xxx

查看umask指令: umask

image-20221019194446770

那如果我们要进入一个目录,至少需要什么权限呢?

至少需要x(可执行)权限!【这就是为什么系统规定一个目录的起始权限为777,因为所有的目录被创建出来,一般都是要被允许进入的!-具有x(可执行权限)】

粘滞位

在linux系统中,我们需要一个公共的目录来进行文件的操作(增删查改)【就像咱都需要公共的球场打野球那样】

而这个公共的目录是由root来创建的;所属组和other都能在这个目录下操作文件;这时候有个情景:

有一天早上,在目录所属组里的a佬创建了a.txt文件,限制了所属组和other只能读(744);这时候有个同在所属组里的b佬来到这个目录,看到a佬创建了个新文件(a.txt),然后b佬打开了文件并且浏览了里面的学习资料;到了晚上,a佬不想把a.txt给别人看了,然后把a.txt文件的权限改为700(不给所属组和other读写可执行权限);第二天早上b佬又想打开a.txt浏览学习资料,但是他发现打不开a.txt了;一气之下把a.txt删除啦!这时候a佬感觉到愤怒又委屈!这合理吗?

除开对于a.txt文件权限,对于当下公共目录的权限来说,这恒河里阿!

在公共目录里,不能读写执行的文件也可以删掉。

这时候就需要粘滞位啦—给公共区域的每个佬规定各自创建的文件只能自己删除!

image-20221019203226292

这时候/myteam目录(根目录底下的myteam目录)里面不能读写执行的文件也可以删掉。

指令:chmod +t 目录名

image-20221019204149072

我们看到公共目录的ohter属性从rwx变为了rwt即添加粘滞位成功!

给公共目录增加粘滞位后就不会出现 不能读写执行的文件也可以删掉的情况。【等于粘滞位给公共目录的每个佬都划分了自己的区域!】

当一个目录被设置了粘滞位后,则该目录下的文件只能由【root删除】、【目录所有者删除】、【文件所有者删除】

如果该文章对你有帮助的话,点个👍支持下博主吧,我会继续更新高质量文章的!!!

相关文章:

  • Unity_飞机大战_防止单例随场景销毁和跨场景两个物体脚本问题_自动加载物体挂载脚本的两种方式
  • taro 兼容支付宝小程序和微信小程序<七>-- 上传图片及图片转base64
  • 【附源码】计算机毕业设计SSM汽车交易平台
  • 购买域名-腾讯云
  • 【Linux练习生】Linux多线程
  • JavavEE中网络编程Socket套接字Ⅱ(TCP)
  • Intel汇编-函数使用堆栈传递数据
  • 【Android程序开发】常用布局--线性布局LinearLayout
  • 基于Dijkstra、A*和动态规划的移动机器人路径规划(Matlab代码实现)
  • 国产EDA与FPGA芯片验证方案
  • 一种更优雅书写Python代码的方式
  • 自定义类型(结构体、位段、联合体、枚举)
  • 如何基于 GORM 实现 CreateOrUpdate 方法
  • Spring Boot核心之基本配置、日志配置、自动配置、条件注解
  • ArcGIS校园3D展示图制作详细教程
  • Apache Spark Streaming 使用实例
  • css的样式优先级
  • ES6 ...操作符
  • Js基础——数据类型之Null和Undefined
  • Meteor的表单提交:Form
  • miaov-React 最佳入门
  • passportjs 源码分析
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • uva 10370 Above Average
  • vuex 学习笔记 01
  • 程序员该如何有效的找工作?
  • 浮现式设计
  • 七牛云假注销小指南
  • 我是如何设计 Upload 上传组件的
  • 小程序开发之路(一)
  • 小程序开发中的那些坑
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • zabbix3.2监控linux磁盘IO
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #android不同版本废弃api,新api。
  • %@ page import=%的用法
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (Note)C++中的继承方式
  • (差分)胡桃爱原石
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (六)vue-router+UI组件库
  • (强烈推荐)移动端音视频从零到上手(上)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)h264中avc和flv数据的解析
  • ./configure,make,make install的作用(转)
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET使用存储过程实现对数据库的增删改查
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @hook扩展分析
  • @SuppressWarnings(unchecked)代码的作用
  • [C# 网络编程系列]专题六:UDP编程