Linux权限的基本知识

这篇具有很好参考价值的文章主要介绍了Linux权限的基本知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 linux权限分配,Linux知识与编程,linux,运维,服务器

本文已收录至《Linux知识与编程》专栏!
作者:ARMCSKGT
演示环境:CentOS 7 

  

linux权限分配,Linux知识与编程,linux,运维,服务器


目录

前言

正文

权限是什么?

Linux权限的划分

Linux用户的切换命令

Linux文件权限

Linux文件类型

Linux文件权限

Linux角色划分

文件权限的访问和修改

文件拥有者和所属组

修改文件拥有者指令chown

修改文件拥有者指令chgrp

Linux辨识文件类型指令file

Linux目录权限

Linux系统文件和目录的默认权限

权限掩码

粘滞位(公共目录下的权限管理)

粘滞位的概念

粘滞位使用场景模拟​编辑

Linux粘滞位的添加

提权指令sudo 

最后


前言

对于一个操作系统,权限的划分是肯定的,我们在使用Windows操作系统时如果在C盘中删除一些系统级的文件夹,那么操作系统肯定会提示你权限不足,Linux也是如此,在执行某些命令时需要特殊权限,本节将为您介绍!

linux权限分配,Linux知识与编程,linux,运维,服务器


正文

我们都知道Shell外壳建立了用户与内核交流的桥梁,那么我们向Shell发送命令时可能会碰到权限问题!


权限是什么?

权限概念:限制人的,访问的对象天然可能没有这种“属性”(例如在王者荣耀里面写代码,王者荣耀写不了代码),所以权限反映了:“一件事情是否能被谁做”。做的肯定是人,所以只有人的操作才会出现权限的制约!

总结就是:权限 = 人 + 事务(文件)属性(事务是干什么的,或者说文件是干什么的)


Linux权限的划分

Linux权限划分为两种:

1. 管理员root:管理员具有一切权限,执行任何命令都是畅通无阻!一般在系统中命令提示符为 #

2. 普通用户:普通用户的行为受到限制,某些命令的执行需要向root申请并提权! ,一般在系统中命令提示符为 $ !

Linux本身是一种多用户管理的操作系统!


Linux用户的切换命令

Linux用户切换命令为:su  [用户名]

  

该命令的功能显而易见就是切换用户!如果su后面不指定用户名则是默认切换为root,如果指定用户名则是切换到指定用户,切换对应用户时输入的密码也是对应用户设置的密码

  

这里需要说明的是,在root权限下切换任何用户都是不需要密码的,所以操作需要谨慎!


Linux文件权限


在Linux系统中有一个概念是一切皆文件!也就是说无论是输入输出设备还是磁盘中的文件都统统归属于文件!

linux权限分配,Linux知识与编程,linux,运维,服务器
如果展示效果不清晰请放大浏览!

 Linux文件类型

在Linux系统中,文件类型并不是由其文件后缀决定的,Linux系统识别文件类型是以详细信息指中第一个字符决定的

文件后缀的作用

1.Linux系统不认后缀,用户想用就用区分给用户看。

2.将后缀看成文件名的一部分。

3. 有的软件需要后缀,例如gcc不能识别 .txt 文件只能编译 .c 文件。

Linux文件类型标识

- 普通文件
d 文件夹
l 软链接(类似Windows的快捷方式)
b 块设备文件(例如硬盘、光驱等)
p 管道文件
c 字符设备文件(例如屏幕等串口设备)
s 套接口文件

我们现在一般接触到的就是目录d和普通文件-,深入的学习会接触到更多系统文件!

linux权限分配,Linux知识与编程,linux,运维,服务器


Linux文件权限

基本权限

权限 (三位)二进制表示 权限说明
- 000(0) 无权限(表示不具有该项权限)
r 100(4) 可读取(Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限)
w 010(2) 可写入(Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限)
x 001(1) 可执行(execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限)

字符表示方法

linux权限分配,Linux知识与编程,linux,运维,服务器

权限八进制数表示法

linux权限分配,Linux知识与编程,linux,运维,服务器


 Linux角色划分

u---文件所有者(user) 文件的创始人
g---文件所属组(group) 文件所属组是一个所属群体,一般文件所属组与文件拥有者是同一个人
o---其他用户(other) 除所有者和所属组以外的其他普通用户
a---全部用户(all) 此Linux上的所有用户

linux权限分配,Linux知识与编程,linux,运维,服务器

一个Linux系统可以有很多个用户,每个用户有不同的角色,互不干扰! 在Linux系统中root管理员不受任何权限和角色的约束,可以执行所有可执行命令


文件权限的访问和修改

普通用户一般在自己的用户目录下,进行大部分操作都是不受限制的。Linux不支持普通用户相互访问其他用户目录!但是在权限允许的情况下,可以修改文件或目录的权限对其他用户公开发文


权限修改指令:chmod  [-选项] [用户类型][权限操作][权限]  [目标文件]

功能:修改文件对应权限。

注意:只有文件所有者和所属组可以修改文件权限!其他用户无法使用chmod修改文件权限!


常用选项

-R 将目录和目录中的所有文件都设置为该权限

用户类型 (拥有者),(所属组),(其他用户),(全部用户)
权限操作 (加上此权限),(去掉此权限),= (加上指定的权限其他的权限全部去掉)
权限 (可读),(可写),(可执行)

权限部分可以连添加,例如:rw,rx,wx,rwx  等等;也可以对多个对象进行操作使用“”相隔开即可!

例如

1. 为test.c文件的所属组添加可执行权限:chmod g+x test.c

2. 为test.c文件的其他人添加所有权限:chmod o+rwx test.c

3. 为test.c文件的拥有者和所属组去掉可执行权限,其他人添加可写权限:chmod  u-x,g-x,o+w  test.c

4. 为test.c文件的其他用户只添加可读权限:chmod  o=r test.c


权限的其他表示

字符表示 三位二进制表示 八进制表示 权限
- 000 0 无权限
r 100 4 可读
w 010 2 可写
x 001 1 可执行

八进制也可以对权限进行设置,一般在进行整体设置时会使用到八进制进行设置,这样比较方便!

例如

1. 为test.c文件的全部用户添加全部权限:chmod 777 test.c

2. 为test.c文件的全部用户去掉全部权限可读权限:chmod 000 test.c

3. 为test.c文件的拥有者和所属组只留下可写和可读权限,其他人添加只有可读和可执行权限:chmod  665 test.c


文件拥有者和所属组


对于文件(或目录),拥有者即是创建用户,所属组也是创建用户的名字。

对于所属组,大家可能概念非常模糊,我们可以把Linux系统比喻成一个班级,班级中分为两个小组,小组以组长来命名,这里的组长就是创建该文件(或目录)的用户。

linux权限分配,Linux知识与编程,linux,运维,服务器

 在小组1的同学可以相互之间批改作业,而小组2中的同学不能去批改和查看小组1中同学的作业,更不能删除!所以小组的概念在Linux系统中可以实现一个Linux系统开发两个应用程序而两个开发团队之间互不干扰,这样既提高了开发效率降低了成本也保护了文件安全性。 


修改文件拥有者指令chown

 指令:chown [-选项]  [用户名]  [文件/目录]

 功能:将文件/目录拥有者修改为指定用户。

常用选项

-R 将目录和目录中的所有文件的拥有者都设置为指定用户

修改文件拥有者指令chgrp

 指令:ch [-选项]  [用户组名]  [文件/目录]

 功能:将文件/目录的所属组修改为指定用户组。

常用选项

-R 将目录和目录中的所有文件的所属组都设置为指定所属组

Linux辨识文件类型指令file

指令:file [-选项] [文件/目录]

功能:查看文件类型信息,以英文展示。当文件为空没有被进行任何修改时file会反馈Empty表示文件为空!


常用选项

-c 详细显示指令执行过程,便于排错或分析程序执行的情形
-z 尝试去解读压缩文件的内容

 
linux权限分配,Linux知识与编程,linux,运维,服务器
文件没有被修改显示Empty
linux权限分配,Linux知识与编程,linux,运维,服务器
修改后显示为UTF-8文本文件

Linux目录权限

Linux目录也有权限的约束,与普通文件的权限限制略有差异!


目录的权限也是:可读 r,可写 w,可执行 x,无权限 -

  

目录的可执行权限x对应的操作是是否可以进入目录,所有决定是否可以进入目录的权限是x而不是r,目录的r权限约束ls指令!

  

目录中的w可写权限,决定了是否可以添加文件或目录或者删除文件或目录,如果没有可写权限,则无法对目录中进行添加或者删除文件的操作!

linux权限分配,Linux知识与编程,linux,运维,服务器
目录没有r权限无法使用ls查看且进入目录后也无法查看里面的文件!
linux权限分配,Linux知识与编程,linux,运维,服务器
没有x可执行权限无法进入文件夹!

Linux系统文件和目录的默认权限

我们在创建文件或目录时Linux会默认设置文件和目录的权限!


linux权限分配,Linux知识与编程,linux,运维,服务器

 将系统的默认文件权限rw-rw-r--转换为八进制数字就是:664,从这里可以看出文件一般是不需要执行权限的,只有程序和目录有执行权限的设置,而为了保证文件的安全性其他用户other只有读权限!


linux权限分配,Linux知识与编程,linux,运维,服务器

 将系统默认的目录权限rwxrwxr-x转换为八进制数组就是:775,从这里可以看出目录是需要可读和可执行权限的,因为我们需要进入目录和查看目录中的文件,但是系统没有给其他用户other分配可写入权限,这里第一是为了防止恶意创建文件,另一方面也可以恶意删除文件!


权限掩码

我们创建文件时,会有默认权限,但是文件的权限一开始是放开的,默认权限是经过权限掩码处理后才得到的!


按正常来说,我们创建普通文件时的默认权限为:0666;创建目录时的默认权限为0777,但事实并非如此,我们需要考虑一些安全情况,以免发生意外。

所以Linux在创建文件和目录时会将当前的默认权限八进制值与权限掩码~umask取&,也就是我们最终得到的默认权限 = 原默认权限 & ~umask。将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。


umask指令

umask在Linux系统下是权限掩码的指令,该指令可以查询当前的权限掩码,也可以修改当前的权限掩码。

指令:umask  [新掩码]

功能:如果umask后没有设置的掩码则显示当前的权限掩码,如果后面有需要设置的掩码则修改当前的权限掩码。

注意:修改权限掩码只是相当于本用户,其他用户不受影响!

linux权限分配,Linux知识与编程,linux,运维,服务器

linux权限分配,Linux知识与编程,linux,运维,服务器


粘滞位(公共目录下的权限管理)

粘滞位是为所属组设计的,为了防止在公共目录下恶意删除文件的行为!


粘滞位的概念

未来在使用Linux时可能有共享目录,被所有普通用户共享,用来保存普通用户产生的临时数据,这个共享目录一般是root通过的(例如hmoe就相当于一个共享目录), 文件被所有人共享时受权限约束,但是拦不住别人删我的文件,因为可写权限w是必须开启的,如果不开启那么谁也无法创建文件,为了让大家能共享文件但不被随意删除文件就推出了粘滞位的概念粘滞位只能给目录添加,一般给共享目录添加


粘滞位使用场景模拟linux权限分配,Linux知识与编程,linux,运维,服务器

 小组1和小组2在root创建的目录里面共同开发一个项目,小组2中的小华想看小组1中小明写的文件,但是发现没有读权限,但文件夹下有可写w权限,可以删除小明的文件,这样是非常不合理的!


Linux粘滞位的添加

指令:chmod  a+t  [目录]  或  chmod  +t  [目录]

功能:给目录添加粘滞位;该目录只能被超级管理员,该目录的所有者和该文件的所有者删除。 添加粘滞位后,该目录会被标记,其other权限位上的可执行权限位显示t或T。

  

注意:对于粘滞位的显示,系统中有的显示为T,但一般为t,这种情况是由other权限位上是否具有x权限决定的,如果该目录other具有权限则添加粘滞位后显示t,如果该目录other没有x权限则显示T!

 

linux权限分配,Linux知识与编程,linux,运维,服务器

linux权限分配,Linux知识与编程,linux,运维,服务器


linux权限分配,Linux知识与编程,linux,运维,服务器
家目录下使用root账户创建公开文件夹添加粘滞位
linux权限分配,Linux知识与编程,linux,运维,服务器
在有粘滞位的目录下删除其他用户文件时被拒绝

提权指令sudo 

指令:sudo  [指令]

功能:对于一些涉及系统内部的指令,需要更高的权限才能执行,否则系统不会执行!在使用sudo提权后,系统会提示输入密码,此时输入的是本账户的密码,输入后即可提权执行sudo在默认情况下向root申请提权(也就是申请使用管理员权限运行该指令)

linux权限分配,Linux知识与编程,linux,运维,服务器
安装程序时权限不足

 注意:Linux系统默认普通用户不能使用sudo进行提权,想要使用普通账户可以提权,那么想要将该普通用户添加到信任名单!


常用选项

-u 提权到指定用户执行(使用sudo调用授权的命令)

格式:sudo -u [指定用户]  [指令]

说明:有时候我们在他人创建的目录下进行工作,我们想进行一些例如文件删除的行为时,对于有粘滞位的目录我们无法操作,这时可以向指定用户(目录文件夹的拥有者)借权执行命令!此操作也需要输入自己账户的密码,且自己的账户是信任用户!


添加信任名单步骤

 (此操作必须在root账户下进行!)

1. 找到sudoers文件

linux权限分配,Linux知识与编程,linux,运维,服务器
进入根目录下etc目录
linux权限分配,Linux知识与编程,linux,运维,服务器
在etc目录下找到sudoers

  

2. 使用文本编辑器打开sudoers文件

linux权限分配,Linux知识与编程,linux,运维,服务器

 找到图片中的位置,按照root账户的默认格式,在root下方将其抄一遍并将其用户名修改为自己的用户名即可列入信任列表!


最后

Linux权限的基本知识到这里就介绍的差不多了,对于系统权限是用来保护系统安全的,合理的运用权限可以让我们的文件数据不受损害,相信学完的朋友们一定深有体会!

本次Linux权限的基本知识就介绍到这里啦,希望能够尽可能帮助到大家。

如果文章中有瑕疵,还请各位大佬细心点评和留言,我将立即修补错误,谢谢!

linux权限分配,Linux知识与编程,linux,运维,服务器

 🌟其他文章阅读推荐🌟

数据结构初级<排序>-CSDN博客

Linux基础指令-CSDN博客

Linux系统创建新的普通用户-CSDN博客

🌹欢迎读者多多浏览多多支持!🌹文章来源地址https://www.toymoban.com/news/detail-598607.html

到了这里,关于Linux权限的基本知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux进程基本知识

    1.什么是程序,什么是进程? 程序是静态的概念,例如 gcc xx.c -o pro 磁盘中生成pro文件,叫做程序 进程是程序的一次运行活动,意思是程序跑起来了,系统中就多了一个进程 2.如何查看系统中有哪些进程? (1)使用ps指令查看 实际工作中通常配合grep来查找程序中是否存在某

    2024年02月03日
    浏览(48)
  • 【Linux系列P2】Linux基本指令&知识(带图演示,精炼)

    前言 大家好吖,欢迎来到 YY 滴 Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁,主要内容含 欢迎订阅 YY 滴Linux专栏!更多干货持续更新!以下是传送门! 订阅专栏阅读: YY的 《Linux》系列 ❀❀❀❀❀ 【Linux系列-P1】 Linux环境的搭建 【Linux系列-P2】Linux的基本知

    2024年02月06日
    浏览(38)
  • 探索Linux世界:基本指令(文件查看、时间相关、grep、打包压缩及相关知识)

    今天继续介绍一些指令 语法 :cat [选项] [文件] 功能 : 查看目标文件的内容 -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 示例 : 查看单个文件内容: 显示文件内容并附带行号: 创建新文件并写入内容: 追加内容到文件末尾: 和 我们下面就会细讲啦,大

    2024年03月14日
    浏览(47)
  • MATLAB中CVX工具箱解决凸优化问题的基本知识——语法、变量声明、目标函数、约束条件、cvx编程错误及解决方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文是在最近学习MATLAB CVX工具箱解决凸优化问题时学到的一些知识点,分享出来供大家参考。 进行CVX编程时,会遇到各种各样意想不到又难以解决的报错问题,如果编程过程中遇到了很多cvx bug和错误,

    2024年02月08日
    浏览(51)
  • Web数据库基本知识,SQL基本语法

    当我们谈论整个技术栈时,实际上涉及了一系列步骤,而在Web开发中,这些步骤可以被具体化为以下几个阶段: DBMS-GUI-翻译器-查询语言 在web中具体如下: postgreSQL-Hasura-Apollo+ts-GraphQL 具体解释 DBMS(数据库管理系统): 作用: 数据库管理系统允许我们直接使用SQL语言来操作数

    2024年02月03日
    浏览(49)
  • 数学向量基本知识

    1.向量相关定义 2.向量的线性运算 3.向量积与数量积    向量积与数量积的区别 名称 标积/内积/数量积/点积 矢积/外积/向量积/叉积 运算式(a,b和c粗体字,表示向量) a·b=|a||b|·cosθ a×b=c,其中|c|=|a||b|·sinθ,c的方向遵守右手定则 几何意义 向量a在向量b方向上的投影与向

    2023年04月08日
    浏览(82)
  • python基本知识学习

    在控制台输出Hello,World! 单行注释:以#开头 多行注释: 选中要注释的代码Ctrl+/ 三单引号 三双引号 第一个字符必须是字母表中字母或下划线 _ 。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。 标识符也叫变量名,变量名就是一个变量的名字,例如

    2024年02月15日
    浏览(46)
  • 无人机基本知识

    目录 前言 一、总体概况 二、机身 三、涵道 四、动力系统 1、 螺旋桨  2、电机 3、电调 4、电池 五、遥控器 六、自动驾驶仪(飞控) 1、组成 (1)传感器 (2)接口 2、飞控的连接 3、控制逻辑 4、作用 5、产品 七、地面站 八、数传 九、深度相机 总结 参考文献 四旋翼飞机

    2024年01月19日
    浏览(41)
  • shell基本知识

    一、为什么学习和使用shell编程 二、什么是shell 系统当前支持的所有的shell: 三、shell的分类 为nologin,运行进程的,不允许登录系统,考虑系统安全性 用户名:密码的占位符:uid(用户的id):gid(用户所属基本组的id:关于账号的描述信息:用户家目录:当前用户与系统交

    2024年02月12日
    浏览(52)
  • c++ 基本知识(一)

    一、c++调用python #include cstdlib int main() {     int result = system(\\\"python your_script.py\\\");     return 0; } 二、cmake、make、gcc的区别? 1、CMake(Cross-Platform Make)是一个跨平台的构建工具,用于生成适合不同操作系统和编译器的构建脚本。它使用CMakeLists.txt文件来描述项目的构建过程,并根据

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包