共计 3664 个字符,预计需要花费 10 分钟才能阅读完成。
一、文件拜访权限
1. 文件 / 目录拜访权限基本概念
文件或目录的拜访权限,是指 Linux 零碎中的用户对文件或目录的 可读、可写及可执行权限。假使某用户对文件只具备可读权限,则该用户只能读取该文件的内容而不能对文件进行写或者执行操作,相似的,对文件具备可写或可执行的用户也只能对文件进行写或者执行操作,任何其余操作都会被操作系统所阻止。当然,某用户并不是只能对文件具备一种权限,而是能够同时具备可读、可写或可执行权限。
在 Linux 中,对于 用户有三种不同的定义:文件创建者(即文件的拥有者)、与文件拥有者处于同组的用户、其余用户。
当咱们应用命令 ls -l
查看当前目录下的文件详细信息时,如下图:
最左侧一栏代表着不同用户对该文件的拜访权限,横线代表空许可,r 代表可读权限,w 代表可写权限,x 代表可执行权限。留神该栏 一共有 10 个占位符,第一个横线所在位置表明文件的类型。具体相干符号与对应如下:
一般文件(-):目录文件(d,directory file)符号链接(l,symbolic link)块设施文件(b,block)字符设施文件(c,char)管道文件(p,pipe)套接字文件(s,socket)
前面 9 个占位符,每三个占位符为一组,别离表明文件所有者、文件所有者同组用户、其余用户对文件的拜访权限,具体如下图。
2. 文件 / 目录拜访权限的设定
在 Linux 操作系统中,对文件或目录拜访权限的设置次要是通过命令chmod
,该命令的格局为:
能够看到,对文件和目录的拜访权限设置次要有三种形式,通过字符设置,通过 8 进制数设置,以及通过参考文件设置,接下来别离对三种设置形式进行介绍。
(1) 通过文字设定
通过文字进行设置的格局如上图中所示,具体格局为:
chmod 用户 操作 文件拜访模式 文件
其中用户一栏选项为:
* u:用户 user, 文件所有者
* g:组 group,文件所有者同组用户
* o:其余 other,其余用户
* a:所有 all,所有用户
操作一栏选项为:
* +:增加某个权限
* -:禁止某个权限
* =:将新的权限设置为某个权限,之前权限被齐全笼罩
文件拜访模式为:
* r:可读权限
* w:可写权限
* x:可执行权限
* s:设置文件执行时,过程的权限。`u+s` 设置文件执行时的过程领有文件拥有者的权限,`g+s` 设置文件执行时的过程具备文件组用户的权限
* t:将程序文件保留到替换设施上
* u:具备和文件拥有者雷同的权限
* g:具备和文件组成员雷同的权限
* o:具备和文件其余成员雷同的权限
假如,咱们要为某个文件的,除文件拥有者和组成员外的其余成员增加可写权限,则格局为:
chmod o+w filename
设置文件的组成员具备和文件拥有者雷同的权限为:
chmod g=u filename
设置文件在执行时,过程具备文件拥有者的拜访权限。该种状况并不常见,例如咱们罕用的 passwd
命令,不同的用户均能够应用该命令来执行批改明码这 root 权限行为。该权限设置后,会将原来的可执行权限的 x 替换为 s,如果文件原本不具备可执行权限,则设置为 S。
chmod u+s filename
(2) 通过八进制数设置
该形式能够了解为将文件的三种权限映射为一个八进制数的二进制格局下的三个二进制位,每一位管制一个拜访权限的开启敞开。具体二进制格局的对应如下:
001: 可执行权限,对应八进制数 1
010: 可写权限,对应八进制数 2
100: 可读权限,对应八进制数 4
设置文件拜访权限时,须要通过三个八进制数,同时设置文件对不同用户的拜访权限,假如须要设置文件对拥有者具备可读可写可执行权限,对拥有者同组用户具备可读可写权限,对其余用户具备可读权限,则命令格局应为:
chmod 764 filename
如果要设置文件执行时的权限,则须要应用另一个八进制数。
其具体格局为:
010: 设置文件执行时具备组用户的权限,对应八进制数 2
100: 设置文件执行时具备文件拥有者的权限,对应八进制数 4
例如要在上个例子的根底上设置文件执行时具备文件拥有者的权限,则命令格局为:
chmod 4764 filename
(3) 通过参考文件设置
通过该形式设置文件权限时,须要用到 chmod
命令的 --reference
参数。具体格局为:
chmod --reference=RFILE targetFile
应用上诉命令能够将指标文件的拜访权限设置为参考文件的文件拜访权限。具体例子如下:
(4) 平安的粘着位设置
局部状况下,咱们会须要不同用户在同一个目录下工作(创立或批改文件),就须要所有这类用户都具备对该目录的读写执行权限,而这会导致一些安全隐患。
假如咱们领有一个目录work_dir
,其具体拜访权限如下:
用户 xia
创立了一个一般文件xia_file
用户 dong
查看工作目录work_dir
,发现了只具备可读权限的文件xia_file
,该用户,查看后决定删除该文件。
居然胜利了!用户 dong
, 在不具备对另一文件写权限的条件下,胜利删除了该文件 。显然,这违反了文件xia_file
的拜访权限。如何避免该歹意行为呢?
这就须要介绍下文件拜访模式中的 T
标记了,该标记次要针对目录,假使源目录的拜访权限中,其余用户具备可执行权限,则设置后为t
,否则为T
。其设置形式为:
chmod 用户 操作 + t 文件夹
chmod 1XXX 文件夹
设置胜利后,位于工作目录下的用户只能对本身创立的文件进行删除操作。
咱们设置工作目录为 T 后,再次创立文件 xia_file
,登录用户dong
后,尝试删除,失败。
二、文件额定属性
通过以上所述,置信诸位对文件拜访权限曾经有所理解,然而这里仍旧存在问题。在黑客攻击过程中,其入侵计算机系统后,能够通过多种形式来晋升本身权限。而高权限的用户显然对文件拜访权限具备着很强的掌控度。
在 Linux 的 Ext 文件系统中,能够通过对文件额定属性的设置来加强文件系统的安全性。以 Ext3 为例,其反对的文件平安属性有:
A:Atime。通知零碎不要批改对这个文件的最初拜访工夫
S:Sync。一旦应用程序对这个文件执行了写操作,零碎立刻把批改的后果写到磁盘
a:Append Only。零碎只容许在这个文件后追加数据,不容许任何过程笼罩或者截断这个文件。如果目录具备该属性,则零碎只容许在这个目录下建设和批改文件,而不容许删除任何文件
i:Immutable。零碎不容许对这个文件进行任何的批改。如果目录具备这个属性,那么任何的过程只能批改目录之下的文件,不容许建设和删除文件
d:No dump。进行文件系统备份时,dump 程序将疏忽这个文件
c:Compress。零碎以通明的形式压缩该文件。从这个文件读取时返回的是解压后的数据;而向这个文件写入数据时,数据首先被压缩后,才写入磁盘
s:Secure Delete。让零碎在删除该文件时,应用 0 填充文件所在区域
u:Undelete。当一个应用程序申请删除该文件时,零碎会保留其数据块以便当前可能复原这个文件
另外,须要记得,尽管文件系统可能承受并保留各个属性标记,然而这些属性不肯定无效,这依赖于内核和各种应用程序的版本。
1. 对文件系统属性的设置
任何状况下,规范的 ls
命令都不会展现一个文件或目录的扩大属性。在 Ext3 零碎 工具包中有两个工具:chattr
和lsattr
。他们被专门用于设置和查问文件属性。接下来对两个命令进行介绍。
(1) lsattr 命令
lsattr
和命令 ls
类似,不同的是 lsattr
用于显示指定目录下的文件属性,其具体应用形式为:
显然 lsattr
反对很少的选项, 其中:
-R: 以递归形式列出目录并显示其内容
-V: 列出命令版本信息
-a: 列出文件中的所有文件,包含. 开明的文件
-d: 以和文件雷同的形式列出目录,并显示其蕴含的内容
-l: 此参数目前没有任何作用,但会扭转命令的输入后果展现模式
-v: 列出文件版本(用于网络文件系统 NFS)
(2) chattr 命令
chattr 的命令应用也比较简单,和 chmod 的字符设置文件拜访权限形式很像,具体应用格局为:
即通过:
`chattr 选项 操作 属性 版本设置 filename`
即可设置文件的属性
其中
* -R: 递归设置文件属性
* -V: 显示指令执行过程
* -f: 无作用
* -v: 设置文件或目录版本
假如对某一文件设置了 i
属性,咱们能够看看会产生什么。
即使是 root
用户,也不能对设置了 i
属性的文件进行任何操作!
这是因为 Ext3 属性是由 sys_open()和 sys_truncat()等零碎调用检查和赋予的,不受用户辨认号和其余因素的影响,在任何状况下对具备不可批改属性的文件进行的批改都会失败,不论是否是 root
用户。
然而,须要留神,root
用户能够通过 chattr
命令来勾销文件的不可批改属性来对文件进行批改,这种防护只是对批改行为减少了一点点小麻烦,零碎的安全性并无根本性的进步
三、思考
对于文件拜访权限和属性的设置,最重要的不是理解,而是是否灵活运用,这须要的不仅仅是对文件权限的了解,最好还可能 理解 Linux 的文件系统 ,并依据理论需要 联合本人的教训 进行设计和思考。
四、参考
1. 书籍:
《Linux 平安技术底细》
2. 链接:
菜鸟教程