目录
文件的访问者
文件类型和访问权限
文件权限值的表示
文件访问权限的相关设置
目录的权限
粘滞位
总结
文件的访问者
- 文件和文件目录的所有者:u(User)
- 文件和文件目录的所有者所在的组的用户:g(Group)
- 其它用户:o(Others)
使用 su 进行用户切换
su - :普通用户下进行操作,将切换到root用户su name:将切换到 name 用户
文件类型和访问权限
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
值得注意的是:linux下,不以文件后缀来区分文件类型
基础权限
r:读 Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w:写 Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x:执行 execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
文件权限值的表示
字符表示
8进制表示
文件访问权限的相关设置
chmod指令
- R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
+ : 向权限范围增加权限代号所表示的权限
- : 向权限范围取消权限代号所表示的权限
= : 向权限范围赋予权限代号所表示的权限
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
示例:ugo + - 方式
示例:a + - 方式
修改方式②:八进制方式
因为权限的位置(拥有者 所属组 other) 是固定的,权限(r w x)也是固定的,要么有权限,要么没权限 --- 构成两态
chown指令
chgrp指令
注意:chown chgrp 指令 都需要使用超级用户的权限
目录的权限
1.umask指令
- 要注意,这里 777 666 是起始权限,并不是最终权限,最终权限不等于起始权限。为什么呢?因为linux规定,凡是在umask中出现的权限,都不应该出现在最终权限中出现
- 你所创建的文件和目录,看到的权限往往不是上面这个值 777 666。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
Linux下默认的权限掩码:
2.进入一个目录,需要什么权限?写或者读分别限制目录的什么权限?
答案是进入一个目录,需要 x (执行)权限,r(读)限制查看目录下面的文件列表,w(写)限制在目录下创建文件或者目录。
2.2 如果一个普通用户是文件的拥有者,并且是所属组,此时,删除拥有者的权限,还可以访问吗?
答案是不可以,why?因为权限只会被认定一次,如果被判定是谁,就会根据谁的权限去进行访问。
粘滞位
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
问题:假设一个根目录下面存在多个用户,那么普通用户是否能删除掉其他用户的文件?答案是:可以
因为在目录中,新建或删除文件,和文件本身没有关系,跟文件所处目录是否赋予文件rwx有关系,other用户能删除是因为有写权限,如果想公开目录把other的写权限去掉就可以了
或者还有一个方法:那就是粘滞位
使用方法:chmod +t name
此时会发现other的权限最后一位的x(执行)被修改成 t
它保障大家都在一个目录下面可以新增或删除文件但是只能自己删除/新增自己的
注意:
1.粘滞位只能对目录设置
2.粘滞位一般是谁设置谁才能取消(除了root)
总结:当多个用户处于同一个目录时,是可以进行互删文件的,当我们希望只有用户自己才能对自己文件进行增删查改时,需要用到粘滞位
这样用户只能操作自己的文件,而不能修改或者删除其他用户的文件
总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
以上仅代表个人观点,欢迎讨论