Linux权限
前言
Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 suroot(root可以省略),此时系统会提示输入root用户的口令。
一、Linux权限管理
1.文件访问者的分类(人)
- 文件和文件目录的所有者:u—User(拥有者)
- 文件和文件目录的所有者所在的组的用户:g—Group(所属组)
- 其它用户:o—Others(other)
2.文件类型和访问权限(事物属性)
- 文件类型
第一列的第一个字符:表示文件类型
即:
Linux文件类型的分类:用第一列的第一个字符来区分文件的类型
-:普通文件、源代码、可执行程序、库等
d:文件夹
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
windows中,区分文件类型用的是文件后缀
可以看到把a.out的后缀改成.txt程序也是可以执行的(即当把mytest.c编译成可执行程序a.out时,再执行a.out的时候就与它的后缀无关了)
当把mytest.c的后缀改成其他时,文件就没办法被编译了
由此得知:
-
Linux区分文件类型,与后缀无关(那么后缀的意义是什么? ->给别人看的)
那和什么有关系?->和文件是否具有 可执行 权限有关系 -
但是这不代表gcc(一个软件)不区分,因此上图将后缀更改后,文件无法正常编译
- 基本权限
i. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv. “—”表示不具有该项权限
3.文件权限值的表示方法
- 字符表示方法
- 8进制数值表示方法
从上图可知文件test.c拥有者的权限是rw- 所属组的权限是rw- other的权限是r–
Linux具体的用户:
- root —超级管理员
- 普通用户(这里是mw)
- 用户-角色的对应关系
用户承担拥有者、所属组、othe
对于拥有者、所属组、other的理解:
一个文件是谁创建的,是属于谁的,它的拥有者就是谁,例如上图中的mw
一个文件不属于谁,不属于某一个人,这个人就是这个文件的other
··········································
-
对于所属组的理解
特殊情况:
一个组内可以只有一个人
一个组内可以有很多人,用组长的名字来对组的命名
在一个公司中有2个研发小组,分别为小组A和小组B,小组的成员张三写了一个源代码code.c,一天小组A的领导想要查看张三写的代码,假设目前拥有者和other,除了拥有者张三就是other,如果想要领导成功看到code.c就要打开other的查看权限,显示打开权限后与张三同属小组A的领导可以查看文件了,但是属于小组B的李四(与张三为竞争关系)也有权限去查看文件,极有可能存在组内信息泄露的风险。因此有了所属组的概念,当同属于小组A的领导想要查看文件时,只需要打开所属组的权限(比如可读可写rw),而此时李四既不是文件拥有者有没有被添加到张三这个小组里,所以李四只能是other,而张三没有打开other的权限,因此不属于同一组的other用户李四无法查看文件情况。 -
没有看不到other?
没有必要显示出来,因为不是所属组、拥有者就是other,你也不知道other具体是哪些人。
4.文件访问权限的相关设置方法
- chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- R -> 递归修改目录文件的权限
- 只有文件的拥有者和root才可以改变文件的权限
①用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限
- :向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
②三位8进制数字
- chowm
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
chown mw test1.c
- chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
- umask & 默认权限
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式:umask 权限值
**说明:**将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
普通用户默认权限掩码是0002 > 000 000 000 010 >凡是在权限掩码中出现的权限,最终都要在起始权限中去掉
》》》最终权限 = 起始权限 去掉 权限掩码中出现的权限(mask & ~umask)
例如目录文件默认权限是777 即 111 111 111 普通用户权限掩码取反为111 111 101
两者按位 &
可以得到最终权限为111 111 101 即 775 > rwx rwx r-x
!!!
-
有无r和w权限都可以进入目录(进入目录和r和w是没有关系的)没有x权限时,是进不去目录的,
-
没有r权限,无法查看当前目录列表
-
没有w权限,无法创建普通文件
因此进入一个目录,需要什么权限??
需要x权限
是否允许一个指定用户查看目录的文件列表,需要r
是否允许一个指定用户在当前目录下新建文件,需要w
- 一个文件一定是属于一个目录的,一个文件属性能不能查看,是由目录的权限决定的!
- 一个文件能不能被删除,这个文件本身能决定吗?由谁决定??
是由所属的目录与对应的账户是否有w权限决定的
5.粘滞位
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
权限部分结束!
总结
以上就是今天理解的一些关于Linux权限的内容,本文仅仅简单介绍了关于权限的概念与权限的表示、相关设置方法。