欢迎各位大佬光临本文章!!!

还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。

本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬、帅哥、美女点点支持,您的每一分关心都是我坚持的动力。

我的博客地址:bingbing~bang的博客_CSDN博客https://blog.csdn.net/bingbing_bang?type=blog

我的gitee:冰冰棒 (bingbingsupercool) - Gitee.comhttps://gitee.com/bingbingsurercool


系列文章推荐

冰冰学习笔记:《Linux下的常用指令》


目录

系列文章推荐

前言

1、Linux权限的概念

2、Linux的权限管理

3、文件访问权限的设置方法

4、修改文件归属权限

5、umask和粘滞位

总结


前言

在Linux中,用户是不能与操作系统直接进行交互使用的。原因很简单,如果让人直接访问操作系统,首先操作成本非常高,并且用户难免在使用中会发生一系列的错误,不容易维护。因此我们在与操作系统进行交互的时候就需要使用操作系统提供的外壳程序,该程序是我们与操作系统交流的媒介,能够提供给用户命令来使用操作系统,也能在一定程度上保护操作系统。我们既然使用该外壳程序与操作系统进行交互,就必然需要遵守一些规定,授权的命令才能执行,没有权限的命令无法执行。所有我们需要对Linux进行权限的理解。

1、Linux权限的概念

Linux下有两种用户,普通用户和超级用户,普通用户就是平民,超级用户可以理解为皇帝,拥有非常大的权限,基本不受权限约束。而对于平民来说,权力非常有限,只能做一些被明确允许的事情。

那我们如何进行身份的切换呢?

切换用户通常使用su命令:

su  用户名:进行用户切换,使用当前路径

su - 用户名:进行用户切换,使用用户家目录

例如,普通用户切换成root用户:

root 切换成普通用户:直接切换,不需要相应的密码

实际上我们在对用户进行切换,就是在对权限进行切换。

2、Linux的权限管理

介绍完用户后,下面我们得知道怎么来使用这些权限,首先 看一下,Linux下一个文件被创建后都具备那些权限。

当我们使用mkdir 和touch进行目录和文件的创建后,使用 ls -l 命令可以显示文件的具体信息。

我们知道,Linux下一切皆文件,并且Linux不以文件名后缀来区分文件的格式。那Linux怎么来区分文件种类呢?实际上我们通过ls -l 将一个文件的具体信息进行打印出来后,我们发现其对应了很多参数,这些参数代表了不同的意思。

(1)文件类型

文件类型在第一位种表示,文件类型有以下几种:

d        :文件夹(目录文件)

-         :普通文件

p        :管道文件

b        :块设备(磁盘设备)

c        :字符设备(键盘或者显示器)

l         :链接文件(快捷方式)

s        :套接口文件

(2)基本权限

一个文件具备三种权限:

r        :只读权限,对于普通文件来说,可以读取文件内容,对于目录来说可以浏览目

录信息,并且查看目录中有哪些文件。

w       :只写权限,对于普通文件来说,可以更改文件的内容,对于目录文件来说可以

创建,移动,删除目录中的文件

x        :执行权限,对于普通文件来说,可以执行文件,对于目录文件来说可以进入目

录。

(3)权限表示

文件信息的第2到10位表示权限信息,表示顺序是确定的,即rwx。如果对应位置为 '-' 则表示不具备该权限。表示方式有两种,字符形式和8进制形式。

字符表示:

Linux表示 说明 Linux表示 说明
r - - 只读 - w - 仅可写
- - x 仅可执行 r w - 可读可写
- w x 可写可执行

r - x

可读可执行
r w x 可读可写可执行 - - - 无权限

8进制表示:

权限符号 八进制 二进制
r 4 100
w 2 010
x 1 001
rw 6 110
rx 5 101
wx 3 011
rwx 7 111
- - - 0 000

(4)权限归属 

表示权限的共有9个位,三个为一组,代表三个身份。

拥有者:文件属于谁,用前三位表示。

所属组:文件属于哪一个组,用中间三位表示。

other:不属于上面两种身份,就是其他人,用后三位表示。

因此下面文件的权限为,拥有者lb可以对文件进行读写操作,不能执行;所属组lb对文件可以进行读写操作,不可以执行,其他人对文件只有读取的权限。

那为什么要设置这三种身份来管理文件的权限呢?道理很简单,一个文件属于我自己,我可以对其进行各种操作天经地义,可是其他人要想看我的文件是否得经过我的允许呢?如果不经过我的同意,其他人可以随便更改我的文件,这是非常不合理的行为,因此我可以将文件设置为其他人不能更改查看。但是,如果我的同事和我做同一个项目,我的文件需要对他开放读写权限,如果没有所属组概念,当我打开文件其他人的权限时,我的竞争对手也可以查看修改我的文件,因此我只打开所属组的权限,和我一组的人可以查看修改,其他人还是不能看。

3、文件访问权限的设置方法

文件的访问权限怎么设置呢?chmod是用来更改文件访问权限的命令。

命令:chmod + 权限 + 文件名

常用选项:

u        :代表拥有者

g        :代表所属组

o        :代表其他人

a        :代表所有

+        :增加权限

-         :减少权限

=        :向权限范围赋予权限代号所表示的权限,chmod u=x file.txt表示file.txt文件拥有

者的权限只有执行权限了

例如:chmod u+r file.txt    该命令表示将文件file.txt的拥有者加上读取权限

更改方式有两种,第一种使用字符进行更改,chmod 后加更改对象再加相应权限。

第二种,用8进制进行更改,chmod 后加0~7数字,再加文件名

注意,root用户不受任何权限约束,并且可以随意更改任何文件的权限。

例如下面的情况,首先lb用户将自己的文件file.txt的所有权限都关闭,然后进行文件读取和写入都不能进行,即便你是文件的拥有者。

然后将用户切换成root,对于文件file.txt来说,root用户不是拥有者,也不是所属组,属于其他人,其应该不具备任何权限。可是我们发现,root可以做任何事情,即便文件没有任何权限。

4、修改文件归属权限

文件的访问权限现在我们知道怎么进行修改了,那我想将我的文件变成其他人的文件可以吗,或者更改一下文件的所属组可以吗?

答案是肯定的,但是我们要知道,将一个东西给与他人,或者将文件变为自己的是需要征得其他人的同意的,我要你的文件给我,你不同意我就没有办法。

chown和chgrp是更改文件拥有者和所属组的命令。

使用:

chown zhangsan file.txt  ----  将文件file.txt的文件拥有者改为zhangsan

chgrep lisi file.txt  ---  将文件file.txt的文件所属组改为lisi

例如我们使用root用户来将文件归属进行更改:

5、umask和粘滞位

(1)umask  

Linux默认在文件创建时,如果是目录文件则起始权限是777,如果是普通文件,则起始权限是666。但是我们发现自己创建出来的文件并不是这样,为什么呢?

这是因为umask存在的原因,umask命令的功能是查看或者修改文件掩码,文件在创建时其权限为起始权限与掩码的反码进行按位与之后的结果所决定的,即凡是在umask中出现的权限,都不应该在最终权限中出现。

umask普通用户默认值为0002,超级用户为0022。

在命令行中输入umask 可以查看掩码,后面加上数字可以更改。

(2)粘滞位

通过前面我们得知,进入目录的权限是目录具备执行权限,浏览目录文件是目录具备读取权限,创建文件,删除文件是目录具备可写权限。当我们进行项目创作时会发现,不同的用户需要在同一个目录下进行创建文件,这时我们虽然可以设置文件权限让其他人不具备读写自己文件的权限,但是其他人可以将我们的文件进行删除,这就不科学了,凭啥你可以删除我的文件呢?

为了解决这种现象,Linux引入了粘滞位的概念,什么意思呢?

当一个目录被设置为粘滞位后,该目录下的文件只能由超级管理员删除,该目录的所有者删除,该文件的所有者删除。粘滞位只能给目录添加,不能给普通文件添加,粘滞位的取消只能是目录所有者执行。

设置方式:

chmod + t + 目录名

例如,在家目录下我们使用root创建一个目录temp,用户zhangsan和lb都能进来进行创建文件,里面包含lb的文件和zhangsan的文件。

zhangsan虽然不能更改lb的文件,但是它可以将文件删除。

然后我们回退到上层目录,增加粘滞位。

然后我们发现,再用zhangsan进行删除时,文件已经不能被删除了。

总结

Linux不以文件名后缀来作为文件类型的区分,但是并不意味着我们可以不写文件类型后缀,Linux下的软件有可能需要文件后缀来区分文件类型,例如gcc,并且,良好的文件名后缀可以让我们再查看文件时更容易识别文件。

目录的可执行权限是表示你可否在目录下执行命令。 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件) 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限。所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

冰冰学习笔记:Linux下的权限理解相关推荐

  1. 学习笔记----linux下编译samba

    linux下编译samba   一.samba的启动命令:        #cd /usr/local/samba/sbin        #smbd     关闭samba可以杀死smbd进程   ...

  2. Linux学习笔记-Linux下的设备文件

    在Linux下,有一种文件的类型叫设备文件. 在/dev目录下的文件基本上都是设备文件,文件属性以c或b打头(charactor, block) 设备文件用于代表一个物理设备 例如,声卡.显卡.键盘. ...

  3. 嵌入式linux学习笔记--linux下基于imx6ullpro 的 CP2102 /CH340 驱动 以及简单的测试

    今天再次编译了linux 的内核,想起来之前一直没实现的嵌入式linux 的串口驱动,故想实验一下. 本文章会分别介绍CP2102 以及CH340两者的驱动 以及他们的简单的测试,后续可能会更新一个 ...

  4. Linux学习笔记-Linux下读写文件

    在Linux编程需要读写文件时,有两种方式: (1)ANSIC: 使用stdio.h里的函数.fopen, fclose, fwrite, fread (2)Linux API:Linux提供了另外一 ...

  5. 冰冰学习笔记:基础IO

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  6. 冰冰学习笔记:vim工具的基本操作

            欢迎各位大佬光临本文章!!!         还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正.         本系列文章为冰冰学习编程的学习笔记, ...

  7. 冰冰学习笔记:linux的文件系统

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  8. 冰冰学习笔记:类与对象(下)

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  9. git学习笔记——Linux和Windows下git的基本操作

    git学习笔记--Linux和Windows下git的基本操作 github主页:https://github.com/Taot-chen 一.Linux环境 1.安装git sudo apt-get ...

最新文章

  1. Rails工作效率和Java运行平台
  2. 申请 SSL 证书 --Nginx 配置Https 最佳实践
  3. 不可错过的javascript迷你库
  4. 以流动债务为例论指标的合理使用
  5. VS2008创建win32动态链接库图文流程
  6. 亮相云栖:这些被Gartner点名的2020年安全风向
  7. python爬取饿了么评论_爬虫实例:饿了么爬虫
  8. 中国大学排名是怎样的?
  9. 4939: [Ynoi2016]掉进兔子洞 莫队 压位
  10. android gps 方位角,GPS坐标系中的方位角计算
  11. Java中动态代理实现原理深究
  12. 2010年最怪异的25个面试问题,你能回答吗?
  13. 真香!一行代码搞定微信支付回调
  14. 2023江苏大学计算机考研信息汇总
  15. css3复习P2(文本属性+列表属性+其他样式)
  16. 学习Python,怎能不懂点PEP呢? 1
  17. Avro技术应用_5. 利用 Camus 来将 Avro 数据从 Kafka 拷贝到 HDFS -- 待完善
  18. 报错 SparkContext is null but app is still running!
  19. 模块化多电平变换器载波移相与电容电压平衡控制MATLAB仿真
  20. C#超简单实现资产折旧计算方法

热门文章

  1. innerHTML作用和用法
  2. usb 转串口 /ttyUSB0 无法识别或者 没有数据返回 pl2303芯片
  3. OpenCV中如何提取不规则ROI区域, 手眼标定hand_eye_calibration
  4. 配置DNS实验(全)
  5. Linux国内镜像开源网站
  6. J2EE: JCA (Java Connector Architecture) [转]
  7. 激光slam 第六次作业
  8. Drone发布Docker镜像到本地的方案(2020/08)
  9. 计算机病毒的常用方法,几种常见恶性电脑病毒清除方法
  10. WebView使用详解(一)——Native与JS相互调用(附JadX反编译)