您的位置:首页 > 运维架构 > Linux

LINUX选修课讲义:文件系统

2004-12-23 08:21 417 查看
发信人: albin (阿乐斌), 信区: LINUX
标  题: LINUX选修课讲义:文件系统
发信站: 碧海青天 (Wed Apr 21 23:35:36 1999), 转信

版权声明:
本文内容为大连理工大学LINUX选修课讲义,欢迎大家转载,但禁止使用本材料进行
任何商业性或赢利性活动。转载时请保留本版权声明。

作者:何斌武,hbwork@dlut.edu.cn,大连理工大学网络中心,April 1999.

URL: ftp://ftp.dlut.edu.cn/pub/PEOPLE/albin/ ------------------------------------------------------------------------------

文件系统
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 改变文件的属组

--
※ 来源:.碧海青天 bbs.dlut.edu.cn.[FROM: apple.dlut.edu.c]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: