我们在使用Linux的时候经常会遇到这样的问题:
当我们想要创建一个文件时系统提示Permission denied(权限被拒绝),那该如何解决这样的问题呢?下面让我们深入地认识Linux中的权限管理。
1、文件访问者的分类
在Linux中,权限=用户角色(具体的人)+文件权限属性,其中,用户角色可分为三类:
(1)文件和文件目录的所有者: u---User(2)文件和文件目录的所属用户组: g---Group(3)其它用户: o---Others
2、文件类型和访问权限
Linux中文件的属性通常包含以下内容:
2.1文件类型
d :文件夹- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件
2.2访问权限
i.
读(
r/4
):
Read
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.
写(
w/2
):
Write
对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.
执行(
x/1
):
execute
对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”
表示不具有该项权限
用数字形式来表示为:
权限符号(读写执行) | 二进制 | 八进制 |
r | 100 | 4 |
w | 010 | 2 |
x | 001 | 1 |
rw | 110 | 6 |
rx | 101 | 5 |
wx | 011 | 3 |
rwx | 111 | 7 |
--- | 000 | 0 |
3、如何修改文件权限
注:一个文件的权限只有文件的所有者和root能够修改
这里我们需要用到一个命令---chmod,它可以用来设置文件的访问权限
//1.用户表示符+-=权限字符
//u g o
//+表示增加权限 -表示取消权限 =表示赋予权限
chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
//2.通过八进制数字修改权限
chmod 664 /home/abc.txt
chmod 640 /home/abc.txt
4、目录的权限及其相关知识
我们知道目录的权限属性如下:
(1)可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
(2)可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
(3)可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
于是
,
问题来了
~~
换句话来讲
,
就是只要用户具有目录的写权限
,
用户就可以删除目录中的文件
,
而不论这个用户是否有这个文件的写
权限
.
这好像不太科学啊
,
我张三创建的一个文件
,
凭什么被你李四可以删掉
?
为了解决这个不科学的问题
, Linux
引入了粘滞位的概念
chmod +t /home/ # 加上粘滞位
当一个目录被设置为
"
粘滞位
"(
用
chmod +t),
则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除