文件系统与权限设置
当所有人都把目光投注在操作系统身上时,却常常忘记了一个极为重要的配角――文件 系统。文件系统的优劣与否和操作系统的执行效率、稳定性以及可靠度息息相关。
一、认识系统的目录
在安装 Linux 的磁盘中会有很多系统默认的目录,这些目录依照不同的用途而放置特定 的文件。在前面已经简单介绍过一些常用的目录,以下将详细说明每一个默认目录的功能:
/: 根目录,包含整个 Linux 系统的所有目录和文件。
/bin:此目录放置操作系统时所需要使用的各种命令程序。例如 cp 、rpm 、kill 、tar 、mv、 rm 与 ping 等常用命令,还有各种不同的 Shell,如 bash 、bash2 、tcsh 等。
/dev:存放界面设备代号的文件。例如硬盘的/dev/had 、终端机等。这些文件比较特殊, 他们实际上都指向所代表的界面设备。
/etc:存放与系统设置、管理相关的文件。例如记录账号名称的 passwd 文件、投影口令 文件 shadow 都放在这里。
/etc/X11:X Window 配置文件的目录。
/etc/rc.d:这个目录包含了启动或关机时所运行的 script 文件。
/home:此目录默认用来设置用户账号的主目录。
/lib:放置一些共享的函数库。
/lib/modules:存放系统内核的模块。某些可被模块化的部分,并不需要在编译系统内核 本体, 避免内核过大导致效率较低。
/lost+found:文件系统发生问题时,Linux 会自动扫描磁盘试图修正错误,倘若找到遗失 或错误的区域, 就会将这些区域转成文件存放于目录中, 等候管理员来进一步处理。
/misc:默认空无一物,供管理员堆放公共杂物。默认权限时全部用户都可以读取和执 行文件,但是只有管理员能够写入文件。
/mnt:此目录下默认有/mnt/cdrom 和/mnt/floppy 两个目录,用来作为光盘与软件的加载点.
/proc:系统内核和执行程序之间的信息,如执行 ps 、free 等命令时所看到的信息,就是 从这里读取。这目录内的文件并非真的存在,用户看到的虚拟文件。
/root:系统管理员专用的目录, 即 root 账号的主目录。
/sbin:此目录存放启动系统需运行,例如 fsck 、init 、grub 、lilo 与 swapon 等
/tmp:供全部用户暂时放置文件的目录。系统默认可让所有用户读取、写入和执行文件, 因此对于一般用户来说, 若觉得自己的磁盘空间不够使用,便可暂时利用此目录存放文件。 这里也是临时文件的目录,某些程序在执行中说产生的临时文件会存放在这个目录内。
/usr:此目录包括许多子目录, 用来存放系统命令。程序等信息。
/usr/bin:放置用户可以执行的命令程序,如 find 、free 、gcc 等。
/usr/share/doc:存放各种文件的目录。
/usr/share/man:放置多种帮助文件。
/usr/src:存放源代码的地方,Linux 系统内核的源代码就放在此目录下。
/var:系统执行时, 需要暂时记录存放的数据或临时文件,都会放置在这个目录里。
/var/tmp:前面介绍的/tmp 目录除了放置所有用户暂时存放的文件之外,还提供给程序 产生的临时文件使用,因此经常会因对方许多文件,而显得非常杂乱。管理员通常会定时清 理/tmp 目录,维护磁盘空间的整洁。加入不想将某些文件混入/tmp 目录中,可以选择存放 在这里。
二、文件属性
d:表示这是一个目录。在 ext3 中,目录被视为一种特殊的文件。
-:表示这是一个普通的文件
l:表示这是一个符号链接的文件, 实际上它指向另一个文件。
b 、c :分别代表区块设备和其他的界面设备,是特殊类型的文件。
s 、p:这些文件关系到系统的数据结构和通道, 通常很少见到。
1 、一般权限
r (read ,读取):对文件而言,用户具有读取文件内容的权限。对目录而言,用户拥有浏
览目录内容的权限。
w (write,写入):对文件而言,用户具有修改文件内容的权限。对目录而言,用户具有删 除或移动目录内文件的权限。
x(execute,执行):对文件而言, 用户具有执行文件的权限。对目录而言, 用户具有进入 目录的权限。
2、特殊权限
其实文件与目录的权限设置不只如此,还有所谓的特殊权限存在。属于特殊权限会拥有 一些“特权”,因而用户若无特殊需求,不应该去打开这些权限,避免安全方面出现严重漏洞, 让黑客入侵。
设置 UID,S(SUID, Set UID):可执行的文件若搭配这个权限,该文件便能得到权限,可以 任意存取文件所有者能使用的全部系统资源。
设置 GID ,S(SGID ,Set GID):应用在文件上面,其效果和 SUID 相同,只不过将范围由 文件所有者扩大成组。也就是说,拥有此权限的文件,可以任意存取整个组所能使用的系统 资源。
三、用户与组的权限关系
假如用户 lambert 属于 cassia 组,其用户主目录的权限设为 rwxr-x—x ,表示统属 cassia 组的用户,可以读取和记入这个目录,其他用户则只能进入该目录,但完全看不到任何内容。
因而属于其他组的用户 saber,就无法读取 lambert 目录中的文件。但若将/etc 目录下的 group 文件内容作些修改, 情况就不同了:
postfic:x:89:
pvm:x:24:
cassia:x:501:lambert,saber ← 将 saber 账号加入 cassia 组
saber:x:502:
四、检查 inode 编号
链接的文件实际上都是指向磁盘中相同的数据, 因为每个文件仅占用一个 inode,所以 他们的 inode 编号应该一样。执行 ls –i 命令来查看文件的 inode 编号:
[lambert@free lambert]$ ls –i LambertLink
10423 LambertLink
[lambert@free lambert]$ ls –i /tmp/var/ForEveryOne
10423 /var/tmp/ForEveryOne
从上面的结果可看出这两个文件的 inode 编号一样的,倘若是用复制而非连接的方法, 便会是两个不相干的文件,各自拥有 inode 编号。
[lamnert@free lambert]$ ls –I LambertFile
366955 LambertFile ←这个文件的 inode 是 366955,而 ForEveryOne 的是104423