文件系统原理

原创 2007年10月05日 17:55:00

文件系统
 

UNIX文件系统控制文件和目录中的信息以何种方式存在磁盘及其他辅助介质上。它  
控制每个用户可以访问何种信息及如何访问。因此它是增强UNIX系统安全性的最基本  
的工具之一。  

存储在UNIX文件系统中的信息被安排成目录和文件的树形结构。树形结构由在一个总  
目录中的目录和子目录构成,总目录被称之为根目录(root)。每一个目录内可以包含  
子目录和其他项目,如文件、指向其他文件系统的指针(符号连接)、表示设备的逻  
辑名称(如/dev/tty)以及其他的类型(proc等).  

文件  
UNIX系统中每一个用户可访问的事物均可以被表示为文件系统中的一个“文件”——  
包括进程和网络连接。每一个文件至少具有一个文件名,一个拥有者,以及访问权限  
和其他的属性。这些属性被存放在文件系统的i节点(index node)上,这是基本文件  
系统的条目。i节点存放除文件名外有关文件系统的任何东西。只有文件名存放在目录  
内,并通过指针与i节点联系。  
目录  
目录是文件系统中的一个专门的条目。一个目录实际上是文件名和i节点的列表。文件  
名可以由任意字符的字符串组成,但不能包含/和null字符。  

与文件名相联系的是数字指针,它实际上是一个i节点在磁盘上的索引。一个i节点包  
含文件系统中一个文件条目的信息。  

目录中只包含文件名和i节点索引数,不存放任何需要保护的信息,其作用类似一个  
文件名与i节点之间的映射关系的简单的关系数据库。多个文件可以指向同一个i节点。  
同样多个目录也可以指向同一个i节点。  

rm不一定能真正删除一个文件,当i节点的连接值为0时才真正删除文件。  

每一个目录都包含有. 和 ..两个目录。  

i节点  
UNIX系统中应用一个被称之为i节点(inode)的结构来存储文件系统中的各个级成部分  
的管理信息。i节点驻留在硬盘上,没有自己的名字,但具有索引数,用以指向它们在  
i节点数组中的位置。  

每个i节点通常包括:  
. 该数据条目的内容在磁盘上的位置  
. 该数据条目的类型(文件、目录、符号连接等)  
. 该数据条目的字节数目  
. 该节点最后一次被修改的时间(ctime)  
. 该文件最后一次被修改的时间(mtime)  
. 该文件最后一次被访问的时间(atime)  
. 该文件对应的文件名数目(连接数)  
. UID  
. GID  
. MODE bit  

当前目录和路径  
绝对路径 VS 相对路径  

使用ls命令  
ls -a  
ls -lF (Total行指出了目录中全部文件所占据的KB数。)  
ls -aF (* / = @)  
ls -l (mtime)  
ls -lu (atime)  
ls -lc (ctime)  

文件授权 (ls -l输出)  

*** 可执行位仅对于可执行文件有意义。  

LINUX中必须即拥有执行权限也拥有读权限时才能够执行相个script命令。  

使用chmod命令  

chmod [Rfh] [agou] [+-=] [rwxXstugo] filelist  


权限  
r read  
w write  
x execute(or access for directories)  
X 仅当文件是一个目录或一个已经设备了某些执行位的文件时,设置执行权限  
s set user or group id  
t save program text on swap device(Sticky)  
u 从拥有者的授权中删除访问权  
g 从用户组的授权中删除访问权  
g 从其他用户的授权中删除访问权  

8进制的文件属性  
4000 SUID  
2000 SGID  
1000 sticky  
0400 -r--------  
0200 --w-------  
0100 ---x------  
0040 ----r-----  
0020 -----w----  
0010 ------x---  
0004 -------r--  
0002 --------w-  
0001 ---------x  


umask命令  
umask功能的接口是在sh,ksh,csh shell程序内的一个内在的命令!?
默认文件建立模式: 0666  
计算umask值的一个简便方法:在umask中,2屏蔽写准许位,7屏蔽所有权限。  

使用目录权限  
UNIX将目录的内容存放在普通的文件中。但目录的权限与普通文件有所区别。  

r 读 可用opendir() readdir()或ls找出那个文件在这个目录内  
w 写 可以新建、删除或重命名在这个目录内的文件或子目录  
x 执行 可以stat这个目录的内容(如确定目录的所有者,和在目录中的文件的长  
度). 仅在设置此位时才能使此目录成为当前的目录或打开在该目录(或  
它的子目录)内的文件。  

常用的目录权限  
0755 / /usr/bin 任何人可以看到目录的内容,但只有拥有者和root才能改变它  
1777 /tmp /var/mail 任何用户可以在该目录内建立文件,但不能删除其他用户的  
文件  
0700 $HOME 用户可以访问自己的主目录的内容,但其他用户则不可。  


删除不恰当的文件  

$rm ./-foo  
$rm - -foo  
$rm -i *  

SUID  
passwd su  

SUID/SGID/sticky  
---s------ SUID 执行此SUID的进程的有效UID被设置为程序拥有者的UID  
------s--- SGID  
---------t sticky(一般只用于目录)  
---S------ SUID 设置SUID但不设置相应位的执行位  

*** 不要写SUID的Shell Script, 必要时改用perl(taintperl)  


找到所有的SUID和SGID文件  

find / /( -perm -004000 -o -perm -002000 /) -type f -print  
OR ( Except for NFS )  
find / /( -local -o -prune /) /  
/(-perm -004000 -o -perm -002000 /) -type f -print  

在被mount的文件系统中关闭SUID和SGID  

mount -o nosuid ..... (一般用于NFS)  


设备文件  
设备文件是导致UNIX流行和灵活的原因之一。  
/dev 目录  
/dev/null  
/dev/kmem 伪设备  
/dev/MAKEDEV  

大多数设备文件应不允许普通用户读写.  

非法的设备文件  
不在/dev目录下,可能为非法侵入者提供可利用入口:  
find / /( -type c -o -type b /) -exec ls -l {} /;  

find / /! -type f -a /! -type d -exec ls {} /;  
(包含符号连接,PIPE等)  

chown 改变文件所有者  

chgrp 改变文件的属组

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Yaffs文件系统原理详解

  • 2016-07-22 10:05
  • 378KB
  • 下载

FAT文件系統原理.pdf

  • 2015-03-17 09:12
  • 1.03MB
  • 下载

分布式文件系统FastDFS设计原理

原文地址:http://blog.chinaunix.net/uid-20196318-id-4058561.html FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker...

fat文件系统原理

  • 2016-01-24 20:09
  • 970KB
  • 下载

Linux硬连接、软连接的原理 兼述磁盘组成&文件系统类型

硬链接 目录(?)[+] 引子 目前,UNIX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统)、ext3、ext4、ZFS和Reiserfs...

fat文件系统原理概述

  • 2013-12-06 09:15
  • 970KB
  • 下载

Hadoop学习笔记(6)-简述分布式文件系统HDFS原理

1.HDFS的基本框架与工作过程1.1 基本组成结构与文件访问过程HDFS是一个建立在一组分布式服务器节点的本地文件系统之上的分布式文件系统。其采用经典的主-从式结构,其基本组成结构如图1所示。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)