Linux权限的基本知识

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 

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

  


目录

前言

正文

权限是什么

Linux权限的划分

Linux用户的切换命令

Linux文件权限

Linux文件类型

Linux文件权限

Linux角色划分

文件权限的访问和修改

文件拥有者和所属组

修改文件拥有者指令chown

修改文件拥有者指令chgrp

Linux辨识文件类型指令file

Linux目录权限

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

权限掩码

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

粘滞位的概念

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

Linux粘滞位的添加

提权指令sudo 

最后


前言

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


正文

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


权限是什么

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

 

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


Linux权限的划分

Linux权限划分为两种

1. 管理员root管理员具有一切权限执行任何命令都是畅通无阻

2. 普通用户普通用户的行为受到限制某些命令的执行需要向root申请并提权 


Linux用户的切换命令

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

  

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

  

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


Linux文件权限


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

如果展示效果不清晰请放大浏览

 Linux文件类型

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

 

文件后缀的作用

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

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

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

 

Linux文件类型标识

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

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


Linux文件权限

基本权限

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

字符表示方法

权限八进制数表示法


 Linux角色划分

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


权限的其他表示

字符表示三位二进制表示八进制表示权限
-0000无权限
r1004可读
w0102可写
x0011可执行

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

 

例如

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

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

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


文件拥有者和所属组


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

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

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


修改文件拥有者指令chown

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

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

 

常用选项

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

修改文件拥有者指令chgrp

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

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

 

常用选项

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

Linux辨识文件类型指令file

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

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


常用选项

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

 
文件没有被修改显示Empty
修改后显示为UTF-8文本文件

Linux目录权限

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


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

  

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

  

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

目录没有r权限无法使用ls查看且进入目录后也无法查看里面的文件
没有x可执行权限无法进入文件夹

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

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


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


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


权限掩码

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


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

 

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


umask指令

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

指令umask  [新掩码]

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

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


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

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


粘滞位的概念

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


粘滞位使用场景模拟

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


Linux粘滞位的添加

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

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

  

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

 


家目录下使用root账户创建公开文件夹添加粘滞位
在有粘滞位的目录下删除其他用户文件时被拒绝

提权指令sudo 

指令sudo  [指令]

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

安装程序时权限不足

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


常用选项

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

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

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


添加信任名单步骤

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

1. 找到sudoers文件

进入根目录下etc目录
在etc目录下找到sudoers

  

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

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


最后

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

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

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

 🌟其他文章阅读推荐🌟

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

Linux基础指令-CSDN博客

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

🌹欢迎读者多多浏览多多支持!🌹

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux