目录
权限
定义
指一件事情是否允许你去做
允许的范畴也不一样,分为两种 -- 是否允许,允许做的范围有多大
- 一件事能否被做,和事情本身有关
- 一件事不同的人去做,情况会不同
类推到linux中的权限概念:
- 权限和事物的属性有关(linux下,一切皆文件,所以事物也就是指文件 )
- 身份的认证也会影响权限
那么,事物(文件)的属性是什么呢?
文件属性
- 对于文件来说,属性有很多,文件的类型和权限,文件所有者和所属组,文件大小,上次修改的时间,以及文件名
- 这里我们着重介绍权限属性
- 还记得我们的ls -l指令吗,它可以打印文件的文件属性
第一列(10个字符)
第一个字符 -- 说明该文件的类型
- d :目录文件
- - :普通文件(文本,可执行程序,库基本都属于普通文件)
- l :软链接
- b:块文件(磁盘文件)
- c:字符设备文件(键盘,显示器文件)
- p:管道文件
linux中,文件名后缀没有直接意义,系统通过第一个字母来判断文件类型
后9个字符 -- 说明该文件的各种权限情况
表示对三类人的权限情况
- 权限具有优先级,user 权限覆盖 group 权限, group 覆盖 other 权限
- 拥有者,所属者的概念将在下面介绍
other
- 除了 拥有者和所属组的人 之外,都是其他人
- 在认证身份的时候,只能选择一个角色进行认证
- 如果你是拥有者,你就只有 拥有者的权限,即使你也是所属组的组长
权限介绍
- 每三个字符作为一个整体
- 三个字符中,第一个对应读权限,第二个对应写权限,第三个对应可执行权限
- r 可读
- w 可写
- x 可执行
- - 对应的权限位置 没有权限
- 这四种权限对于文件和目录的表现也不同
除了用字母/-来表示权限,也可以用数字表示
数字表示权限
第二列 -- 文件连接数
- 表示了一个文件或目录的硬链接数量
- 它指示了有多少个文件名引用了同一个inode(索引节点)
(硬链接,inode将会在后面的文章中介绍)
第三列 -- 文件拥有者的用户名
- 通常是创建文件的用户
- 文件的所有者拥有最高的权限,可以读、写和执行文件,也可以修改文件的权限
属于other的mufeng,由于wang这个目录对于other的权限是---,所以无法进入该目录
第四列 -- 所属组组长的用户名
- 文件的所属组是一个用户组,通常与创建文件的用户的默认用户组相关联
- 所有属于该组的用户都可以访问文件,具体权限取决于文件的权限设置
原本,为了防止文件被恶意删除,两个不同用户之间无法相互查看对方的文件
但在公司/团队中做项目时,会出现需要他人查看的情况(例如上司检查),便创建了所属组这一概念
- 这个组的存在允许多个用户协同工作并访问共享文件,同时保持一定的安全性
组
介绍
- 分为主组和辅助组
- 每个用户只属于一个主组,但可以有多个辅助组/补充组
- 通常,在创建新的普通用户时,会创建一个与该用户同名的新组,这个组将作为新用户的主要组,而且该用户是它的主要组的唯一成员
管理组的指令
第五列 -- 文件大小
- 指文件所占用的磁盘空间的大小
- 通常以字节为单位表示
后三列 -- 最近一次修改时间
- 像上面图中,表示a.out在5月13号21:32时修改过
权限的修改
chmod--设置文件的访问权限
示例
修改后,会发现c++目录中,三种用户的权限都没有了读权限
选项介绍
八进制修改
还记得前面说过,权限除了用字母表示,也可以用数字表示吗?
这里演示用对应的八进制进行修改(直接设置了所有用户的权限):
chown--修改文件的拥有者
示例
可以看到,c++,目录的拥有者更改了
-R选项
修改目录下所有文件的拥有者
chgrp--修改文件的所属组
与chown的操作一样
umask -- 设置掩码
起始权限
创建文件后的初始权限:
- 目录文件:775
- 普通文件:664
- 就像下面一样:
但其实默认给普通文件的起始权限是666,目录文件是777
由于文件掩码的作用,使其权限变成了我们看见的样子
文件掩码
介绍
它就像漏斗一样,将 掩码中代表的权限 在 最终权限 中滤掉(本来就没有的不受影响)
- umask的值是一个八进制数,通常在0到777之间
- 第一个0可以当做八进制的前导0,忽略
- 它通常表示为三个八进制数字,分别控制文件的所有者、所属组和其他用户的权限
- 用于设置文件和目录权限掩码
- 022代表:最终user无限制,group没有w权限,other没有w权限
示例
目录默认应该是777,但第二类和第三类都没有w权限
普通文件默认666,但第二类和第三类都没有w权限
都是因为刚刚设置了022作为文件掩码的值,所以把所属组和other的写权限过滤掉了
用户分类
切换用户的命令
- su+用户名
- sudo -u +用户名 + 命令(可以切换到某个用户来指向命令,一般是root用户)
root用户
基本不受权限约束(像挂哥一样)
根目录下,root用户单独在一个目录下
普通用户
普通用户都在home目录下
家目录的权限是700,除了自己,别人都无法看到自己家目录中的文件
新建用户(只有在root下可以)
- adduser+用户名+选项
- passwd+用户名 --创建密码
- 系统会设置用户的主目录和账户信息,并为该用户创建一个同名的专用组, 并且会创建该用户的家目录和用户信息
选项
修改用户信息
usermod + 选项 + 用户名
选项
删除用户
- userdel username
- 删除用户,但是保留家目录
- userdel –r username
- 删除用户和家目录
粘滞位
引入
- 当我们多个用户想要进行文件数据的共享,但又不想让自己创建的文件被别人不小心删除
- 那如果去掉w权限,虽然确实不能删除了,但也不能创建文件了
- 所以,为了改善这个缺陷,设计了粘滞位
介绍
- 是一种特殊的文件权限设置,通常与目录一起使用,以限制其他用户对该目录中文件的删除
- 当粘滞位被设置在一个目录上时,只有文件的所有者和超级用户才能删除目录中的文件,即使其他用户对文件具有写权限
- 可以确保在共享目录中,其他用户不会意外或恶意删除其他用户创建的文件
- 当一个目录拥有x权限时,并且+t权限,该目录的x位置就变成了t
- 而当该目录不具有x权限时,粘滞位t变成了T,此时,other是不具有写权限的
- 对于特殊权限的添加是添加在原有的执行权限上的