【对Linux文件权限的深入理解】
Linux文件权限
- Linux下权限概念
- 概念
- 相关命令
- Linux的文件权限管理
- 1.文件访问者的分类(⼈)
- 文件类型和访问权限(事物属性)
- 文件权限值的表示方法
- ⽂件访问权限的相关设置方法
- 目录的权限(比较重要)
- 粘滞位
Linux下权限概念
概念
Linux下有两种用户 : 超级管理员(root)与普通用户:
- 超级用户(root) :可以在linux下进行任何操作,不受限制!
- 普通用户:在linux下做权限范围内的事!
- linux下root账号的命令提示符是 # , 普通用户的是 $
相关命令
命令:su
功能:切换用户
例子:如果想将用户切换到 “user”(某个用户的用户名),可以使用su "user"进行切换。
当然,我们也可以切换到root账户,指令是su - 或者 su root ,之后我们输入当前用户的密码就可以切换完成!
毋庸置疑,肯定不是任何人都有权利切换到root账号,否则我们所谈的权限问题就是无稽之谈,如果我们想su - 成功,就必须在/etc/sudoers 文件中为当前用户添加权限 (注意必须是root身份才能打开并修改此文件!)
Linux的文件权限管理
所谓权限,其实就是人 + 事物的属性!
比如我们要执行一个文件,我们需要有权力执行他,并且这个文件具有可执行属性才能成功,二者缺一不可!
1.文件访问者的分类(⼈)
- 文件或目录的所有者:u — user
- 文件所属组:g — group
- 其他用户: o — other
在Linux系统下,我们在文件的视角将用户分为以上三个类型。后面对一个文件是否具有访问权限,也是根据这三种类型进行划分的!
文件类型和访问权限(事物属性)
根据之前我们所介绍的 , ls指令可以罗列出指定目录下的文件:
我们发现除了文件名之外,还有很多其他的信息。
- 第一列表示的是文件的类型
- d:⽂件夹
- -:普通⽂件
- l:软链接(类似Windows的快捷⽅式)
- b:块设备⽂件(例如硬盘、光驱等)
- p:管道⽂件
- c:字符设备⽂件(例如屏幕等串⼝设备)
- s:套接⼝⽂件
- 第二到十列 , 共九个字符三三为一组,这三组分别表示该文件对 u(所有者),g(所属组),o(其他)的 r(读)w(写)x(执行)权限 ,若没有此权限则为 -
- 还有两列用户名信息,从左往右分别表示 所有者和所属组。
文件权限值的表示方法
- 字符表示:
rwx 分别表示 读,写,可执行权限。若没有权限则为 -
例如 rwxrw-rw- - 八进制数表示
我们发现对于每一个位都只有有此权限和无此权限两个状态,所以我们可以用二进制的0,1来表示权限的有无,而rwx三三一组,所以我们可以用一个八进制数来表示rwx权限
例如 : 666 对应的字符表示为 rw-rw-rw-
⽂件访问权限的相关设置方法
-
chmod
- 功能:设置⽂件的访问权限
- 格式:chmod [参数] 权限 ⽂件名
- 常⽤选项:-R 递归修改⽬录⽂件的权限
说明:只有⽂件的拥有者和root才可以改变⽂件的权限
- 权限值格式:⽤户表⽰符+/-=权限字符
- 实例:
chmod u+w /home/abc.txt
chmod 664 /home/abc.txt
-
chown
- 功能:修改⽂件的拥有者
- 格式:chown [参数] ⽤⼾名 ⽂件名
- 实例:
chown user1 f1
chown -R user1 filegroup1
-
chgrp
- 功能:修改⽂件或⽬录的所属组
- 格式:chgrp [参数] ⽤⼾组名 ⽂件名
- 常⽤选项:-R 递归修改⽂件或⽬录的所属组
- 实例: chgrp users /abc/f2
-
umask
- 功能:查看或修改⽂件掩码
- 说明 :
新建⽂件夹默认权限=0666
新建⽬录默认权限=0777 - 实例:
umask //查看文件掩码
umask 0002 //修改文件掩码
但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。
原因就是创建⽂件或⽬录的 时候还要受到umask的影响。
假设默认权限是mask,则实际创建的出来的⽂件权限是: mask & (~umask)
- file
- 功能:查看文件类型
- 实例:file code.cc
目录的权限(比较重要)
目录也是文件,也有对应的rwx权限,那么目录的rwx分别指的是什么呢?
直接输出结论:
- 可执⾏权限: 如果⽬录没有可执⾏权限, 则⽆法cd(进入)到⽬录中.
- 可读权限: 如果⽬录没有可读权限, 则⽆法⽤ls等命令查看⽬录中的⽂件内容.
- 可写权限: 如果⽬录没有可写权限, 则⽆法在⽬录中创建⽂件, 也⽆法在⽬录中删除⽂件.
如果想要验证以上三点,我们可以利用前面介绍的修改文件权限的指令对目录权限修改,然后尝试是否能进入,创建文件,查看。
粘滞位
Linux之所以要设置权限的概念,就是为了限制我们进行一些危险或者不合理的操作,比如说:张三想要查看李四的一个文件,但李四并未对other设置读权限,张三一气之下就把李四的文件删除了,这样的行为是不合理的,但只靠我们之前了解的文件权限管理无法有效限制这种行为,所以提出了粘滞位的概念!
格式:chmod +t /home/ # 加上粘滞位
当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由
- 超级管理员删除
- 该⽬录的所有者删除
- 该⽂件的所有者删除
对linux文件权限的解释就到这里了,如果有所帮助的话,点赞收藏吧!