| 您的当前位置:首页 --> CentOS入门 |
| CentOS系统结构 文件属性 权限解析 |
| 浏览次数:2868 关键词 ( 文件属性 权限 结构 系统 ) |
一、Linux 硬盘分区和系统结构:
![]()
根目录 1. /bin 是binary的缩写,包含了引导启动所需的命令,和普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序,多是系统中重要的系统文件。 2. /sbin 类似 /bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。 3. /etc 存放系统管理配置文件,其中包括了用户信息文件 /etc/passwd ,系统初始化文件 /etc/rc 等。linux正是依靠这些文件才得以正常地运行。 /etc/rc 或 /etc/rc.d 或 /etc/rc?.d:启动、或改变运行级时运行的脚本或脚本的目录。 /etc/passwd:用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息。 /etc/fdprm:软盘参数表,用以说明不同的软盘格式。可用setfdprm进行设置。更多的信息见setfdprm的帮助页。 /etc/fstab:指定启动时需要自动安装的文件系统列表。也包括用swapon-a启用的swap区的信息。 /etc/group:类似/etc/passwd,但说明的不是用户信息而是组的信息。包括组的各种数据。 /etc/inittab:init的配置文件。 /etc/issue:包括用户在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。具体内容由系统管理员确定。 /etc/magic:“file”的配置文件。包含不同文件格式的说明,“file”基于它猜测文件类型。 /etc/motd:motd是messageoftheday的缩写,用户成功登录后自动输出。内容由系统管理员确定。常用于通告信息,如计划关机时间的警告等。 /etc/mtab:当前安装的文件系统列表。由脚本(scritp)初始化,并由mount命令自动更新。当需要一个当前安装的文件系统的列表时使用(例如df命令)。 /etc/shadow:在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd文件中的加密口令移动到/etc/shadow中,而后者只对超级用户(root)可读。这使破译口令更困难,以此增加系统的安全性。 /etc/login.defs:login命令的配置文件。 /etc/printcap:类似/etc/termcap,但针对打印机。语法不同。 /etc/profile、/etc/csh.login、/etc/csh.cshrc :登录或启动时bourne或cshells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。 /etc/securetty:确认安全终端,即哪个终端允许超级用户(root)登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过调制解调器(modem)或网络闯入系统并得到超级用户特权。 /etc/shells:列出可以使用的shell。chsh命令允许用户在本文件指定范围内改变登录的shell。提供一台机器ftp服务的服务进程ftpd检查用户shell是否列在/etc/shells文件中,如果不是,将不允许该用户登录。 /etc/termcap:终端性能数据库。说明不同的终端用什么“转义序列”控制。写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap中查找要做的工作的正确序列。这样,多数的程序可以在多数终端上运行。 4. /root 超级用户的目录。 5. /lib 根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。又叫标准程序设计库,又叫动态链接共享库,作用类似 windows 里的 .dll 文件。 6. /lib/modules 包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。 7. /dev 存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问 /dev/mouse 来访问鼠标的输入,就像访问其他文件一样。 /dev/console:系统控制台,也就是直接和系统连接的监视器。 /dev/hd:ide硬盘驱动程序接口。如:/dev/hda指的是第一个硬盘,had1则是指/dev/hda的第一个分区。如系统中有其他的硬盘,则依次为/dev/hdb、/dev/hdc、......;如有多个分区则依次为hda1、hda2...... /dev/sd:scsi磁盘驱动程序接口。如有系统有scsi硬盘,就不会访问/dev/hda,而会访问/dev/sda。 /dev/fd:软驱设备驱动程序。如:/dev/fd0指系统的第一个软盘,也就是通常所说的a:盘,/dev/fd1指第二个软盘,......而/dev/fd1h1440则表示访问驱动器1中的4.5高密盘。 /dev/st:scsi磁带驱动器驱动程序。 /dev/pty:提供远程登陆伪终端支持。在进行telnet登录时就要用到/dev/pty设备。 /dev/ttys:计算机串行接口,对于dos来说就是“com1”口。 /dev/cua:计算机串行接口,与调制解调器一起使用的设备。 /dev/null:“黑洞”,所有写入该设备的信息都将消失。例如:当想要将屏幕上的输出信息隐藏起来时,只要将输出信息输入到/dev/null中即可。 /dev/ttynn 直接连接的终端 /dev/ttyxnn 多路的终端(x典型的是a、b等) /dev/ptsnnn X Windows系统和网络伪设备 /dev/fd0 软盘设备的通用名字 /dev/ftape 连接到磁带设备 /dev/cdrom 通常连接到CD-ROM设备 /dev/lp0 打印机并行口 /dev/tty:提供虚拟控制台支持。如:/dev/tty1指的是系统的第一个虚拟控制台,/dev/tty2则是系统的第二个虚拟控制台。tty0是tty1或者ttyn的一个别名或者链接,为什么这么说呢?当我们使用tty0的时候,我们得到他的子设备号是0,于是在宏TTY_TABLE中,我们会得到tty_table[fg_console]这个终端设备。fg_console是当前的终端设备在tty_table数组中的下标。通过这个宏,找到了tty0对应的ttyn,然后读键盘,写显示器这些操作都是对ttyn进行的。 8. /tmp 公用的临时文件存储点,存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用 /var/tmp 来代替 /tmp ,因为前者可能拥有一个更大的磁盘空间。 9. /boot 这里存放的是启动Linux使用的一些核心文件,引导加载器(bootstrap loader)如 lilo 会使用这些文件,当计算机启动时这些文件首先被加载。这个目录也会包含Linux核,但是Linux核也可以放在别处,只要配置LILO并且LILO知道Linux核在哪儿。 存放引导加载器(bootstraploader)使用的文件,如 lilo ,核心映像也经常放在这里,而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系会更好一些。还有一点要注意的是,要确保核心映像必须在 ide 硬盘的前 1024 柱面内。 10. /mnt 这个目录是空的,系统提供这个目录时让用户临时挂载别的文件系统。系统管理员临时安装 (mount)文件系统的安装点。程序并不自动支持安装到 /mnt。/mnt下面可以分为许多子目录,例如 /mnt/dosa 可能是使用 msdos 文件系统的软驱,而 /mnt/exta 可能是使用 ext2 文件系统的软驱, /mnt/cdrom 可能是光驱等等。 11. /proc 这个目录是一个虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘里而是在内存里。 /proc/x:关于进程x的信息目录,这里x是这一进程的标识号。每个进程在/proc下有一个名为自己进程号的目录。 /proc/cpuinfo:存放处理器(cpu)的信息,如cpu的类型、制造商、型号和性能等。 /proc/devices:当前运行的核心配置的设备驱动的列表。 /proc/dma:显示当前使用的dma通道。 /proc/filesystems:核心配置的文件系统信息。 /proc/interrupts:显示被占用的中断信息和占用者的信息,以及被占用的数量。 /proc/ioports:当前使用的i/o端口。 /proc/kcore:系统物理内存映像。与物理内存大小完全一样,然而实际上没有占用这么多内存;它仅仅是在程序访问它时才被创建。(注意:除非你把它拷贝到什么地方,否则/proc下没有任何东西占用任何磁盘空间。) /proc/kmsg:核心输出的消息。也会被送到syslog。 /proc/ksyms:核心符号表。 /proc/loadavg:系统“平均负载”;3个没有意义的指示器指出系统当前的工作量。 /proc/meminfo:各种存储器使用信息,包括物理内存和交换分区(swap)。 /proc/modules:存放当前加载了哪些核心模块信息。 /proc/net:网络协议状态信息。 /proc/self:存放到查看/proc的程序的进程目录的符号连接。当两个进程查看/proc时,这将会是不同的连接。这主要便于程序得到它自己的进程目录。 /proc/stat:系统的不同状态,例如,系统启动后页面发生错误的次数。 /proc/uptime:系统启动的时间长度。 /proc/version:核心版本。 12. /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。 /user/x11r6:存放x window的目录。包含xwindow系统的所有可执行程序、配置文件和支持文件。为简化x的开发和安装,x的文件没有集成到系统中。xwindow系统是一个功能强大的图形环境,提供了大量的图形工具程序。用户如果对microsoftwindows或machintosh比较熟悉的话,就不会对xwindow系统感到束手无策了。 /usr/x386:类似/usr/x11r6,但是是专门给x11release5的。 /user/bin:众多的应用程序。集中了几乎所有用户命令,是系统的软件库。另有些命令在/bin或/usr/local/bin中。 /user/sbin:超级用户的一些管理程序。包括了根文件系统不必要的系统管理命令,例如多数服务程序。 /user/doc:linux文档 /user/include:linux下开发和编译应用程序所需要的头文件。包含了c语言的头文件,这些文件多以.h结尾,用来描述c语言程序中用到的数据结构、子过程和常量。为了保持一致性,这实际上应该放在/usr/lib下,但习惯上一直沿用了这个名字。 /usr/lib 常用的动态链接库和软件包的配置文件。包含了程序或子系统的不变的数据文件,包括一些site-wide配置文件。名字lib来源于库(library);编程的原始库也存在/usr/lib里。当编译程序时,程序便会和其中的库进行连接。也有许多程序把配置文件存入其中。 /usr/man 帮助文档 /usr/src:linux的开放源代码,比如linux内核的源代码就放在/usr/src/linux里 /usr/local :本地安装的软件和其他文件放在这里。这与/usr很相似。用户可能会在这发现一些比较大的软件包,如tex、emacs等。 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库 13. /var 某些大文件的溢出区,比方说各种服务的日志文件。 /var/catman:包括了格式化过的帮助(man)页。帮助页的源文件一般存在/usr/man/man中;有些man页可能有预格式化的版本,存在/usr/man/cat中。而其他的man页在第一次看时都需要格式化,格式化完的版本存在/var/man中,这样其他人再看相同的页时就无须等待格式化了。(/var/catman经常被清除,就像清除临时目录一样。) /var/lib:存放系统正常运行时要改变的文件。 /var/local:存放/usr/local中安装的程序的可变数据(即系统管理员安装的程序)。注意,如果必要,即使本地安装的程序也会使用其他/var目录,例如/var/lock。 /var/lock:锁定文件。许多程序遵循在/var/lock中产生一个锁定文件的约定,以用来支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件时,就不会再使用这个设备或文件。 /var/log:各种程序的日志(log)文件,尤其是login(/var/log/wtmplog纪录所有到系统的登录和注销)和syslog(/var/log/messages纪录存储所有核心和系统程序信息)。/var/log里的文件经常不确定地增长,应该定期清除。 /var/run:保存在下一次系统引导前有效的关于系统的信息文件。例如,/var/run/utmp包含当前登录的用户的信息。 /var/spool:放置“假脱机(spool)”程序的目录,如mail、news、打印队列和其他队列工作的目录。每个不同的spool在/var/spool下有自己的子目录,例如,用户的邮箱就存放在/var/spool/mail中。 /var/tmp:比/tmp允许更大的或需要存在较长时间的临时文件。注意系统管理员可能不允许/var/tmp有很旧的文件。 14. /home 其他文件系统的安装点。 15. /Lost+found 这个目录平时是空的,当系统不正常关机时,这里就成了一些无家可归的文件的避难所 二、Linux 系统下会以不同颜色来标明不同类型的文件属性,一般来说主要有以下几种: 蓝色: 代表目录 浅蓝色:代表链接文件 绿色: 代表可执行文件 红色: 代表压缩文件 灰色: 代表其他文件 黄色: 代表设备文件(包括block、char、fifo) 红色闪烁:代表链接文件有问题
第一栏:类型与权限(permission): 当在linux下用命令 ll 或者 ls -la 的时候会看到这些字眼,这些字眼表示为不同用户组的权限:
![]() 这里总共会有10个“-”,第一个表示文件类型: d 文件夹,例如上表档名为 .gconf 那一行; - 文件,例如上表档名为 install.log 那一行; l 连结档(link file); b 装置文件,里面的可供储存的接口设备(可随机存取装置); c 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置) 后面9个按照三个一组分,就是前面三个表示所有者权限,中间三个表示同组用户权限,最后一组表示其他用户权限(其他用户,不包括root这个super user)。
r: read 就是读权限 --十进制数字4表示 二进制数是100 x: excute 就是执行权限 --十进制数字1表示 二进制数是001
读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,-rw-r--r-- 用数字表示成 644。
以passwd文件为例:
vbird 对於 /usr/bin/passwd 这个程序来说是具有 x 权限的,表示 vbird 能运行 passwd; ![]() SGID: 与 SUID 不同的是,SGID 可以针对文件或目录来配置! 如果是对文件来说, SGID 有如下的功能: •SGID 对二进位程序有用,程序运行者对於该程序来说,需具备 x 的权限 •运行者在运行的过程中将会获得该程序群组的权限 如果针对的是目录,SGID 有如下的功能: •使用者若对於此目录具有 r 与 x 的权限时,该使用者能够进入此目录; •使用者在此目录下的有效群组(effective group)将会变成该目录的群组; Sticky Bit: 这个 Sticky Bit, SBIT 目前只针对目录有效作用是: •当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时; •当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件 换句话说:当甲这个使用者於 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示『甲使用者对该目录内任何人创建的目录或文件均可进行 "删除/更名/搬移" 等动作。』 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。 ![]() user, group 以及 others 都没有 x 这个可运行的标志( 因为 666 ),所以,这个 S, T 代表的就是『空的』 第二栏:多少档名连结到此节点(i-node) 记录有多少不同的档名连结到相同的一个i-node(每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node) 第三栏:文件(或目录)的拥有者 第四栏:文件的所属群组 在Linux系统下一个账号会附属于一个或多个的群组中(假设某个文件所属的群组为projecta,且该文件的权限如图所示(-rwxrwx---), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限). 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了) 第五栏:文件的容量大小(默认单位为bytes) 第六栏:文件的建档日期或者是最近的修改日期
这一栏的内容分别为日期(月/日)及时间.如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已.如下所示: 第七栏:文件的全路径及其文件名
这个字段就是档名了. 比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,在上表中的.gconf那一行,该文件就是隐藏档. 你可以使用『ls』及『ls -a』显示隐藏文档 除了基本r, w, x权限外,在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性. 不过要先强调的是,底下的chattr命令只能在Ext2/Ext3的文件系统上面生效, 其他的文件系统可能就无法支持这个命令了.底下我们就来谈一谈如何配置与检查这些隐藏的属性吧! chattr (配置文件隐藏属性)
这个命令是很重要的,尤其是在系统的数据安全上面!由於这些属性是隐藏的性质,所以需要以 lsattr 才能看到该属性呦!其中,个人认为最重要的当属 +i 与 +a 这个属性了.+i 可以让一个文件无法被更动,对於需要强烈的系统安全的人来说, 真是相当的重要的!里头还有相当多的属性是需要 root 才能配置的呢! 此外,如果是 log file 这种的登录档,就更需要 +a 这个可以添加,但是不能修改旧有的数据与删除的参数了!怎样?很棒吧! 未来提到登录档 (十九章) 的认知时,我们再来聊一聊如何配置他吧! lsattr (显示文件隐藏属性)
使用 chattr 配置后,可以利用 lsattr 来查阅隐藏的属性.不过, 这两个命令在使用上必须要特别小心,否则会造成很大的困扰.例如:某天你心情好,突然将 /etc/shadow 这个重要的密码记录文件给他配置成为具有 i 的属性,那么过了若干天之后, 你突然要新增使用者,却一直无法新增!别怀疑,赶快去将 i 的属性拿掉吧! 修改文件属性 [chgrp][chown][chmod][umask] chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件或目录的访问权限, SUID, SGID, SBIT等等的特性。该命令有两种用法: 数字设定法:语法格式为:chmod [mode] 文件名 关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将 rwx 看成二进制数,如果有则有1表示,没有则有0表示。那么 rwx r-x r- -则可以表示成为: 111 101 100 ,再将其每三位转换成为一个十进制数,就是754。
自己 同组用户 其他用户 那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到 6(自己) 6(同组用户) 4(其他用户)。 因此我们执行命令: chmod 664 a.txt
各权限的分数对照表如下: SUID:4SGID:2 SBIT:1 r:4 w:2 x:1 每种身份特殊权限(SUID/SGID/SBIT)和(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的
例如当权限为: [- rwx rwx ---] 分数则是: 例如当权限为: [- rws r-s r-x] 分数则是:
特殊权限 = SUID&&SGID = 4+2 = 6 所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
符号类型改变文件权限 :语法格式为:chmod [who] [opt] [mode] 文件/目录名 who 表示对象,是以下字母中的一个或组合: u: 表示文件所有者 g: 表示同组用户 o: 表示其它用户 a: 表示所有用户 opt 则是代表操作,可以为: +: 添加某个权限 -: 取消某个权限 =: 赋予给定的权限,并取消原有的权限 mode 则代表权限: r w x 还有一个改变权限的方法呦。从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦。那么我们就可以藉由u, g, o来代表三种身份的权限。此外, a 则代表 all 亦即全部的身份。那么读写的权限就可以写成r, w, x。SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 。也就是可以使用底下的方式来看: chmod u g o a + (加入) - (除去) = (设定) r w x 文件或目录 来实作一下吧!假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是: user (u):具有可读、可写、可执行的权限;group 与 others (g/o):具有可读与执行的权限。 所以就是:
例如:为 同组用户 增加对 文件a.txt 的 读写权限: chmod g+rw a.txt 文件默认权限:umask
umask 就是指定 『目前使用者在创建文件或目录时候的权限默认值』 umask 的分数指的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分 在默认权限的属性上,目录与文件是不一样的。 x 权限对於目录是非常重要的! 但是一般文件的创建则不应该有运行的权限,默认的情况如下: 若使用者创建为『文件』则默认『没有可运行( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分若使用者创建为『目录』,则由於 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分
例题: 三、目录与文件之权限意义 [权限对文件的意义][权限对目录的意义] 权限对文件的意义:
权限对目录的意义:
由此可以看出,如果一个人要想进入目录必须对目录具有 x 这个权限,但是只具备 x 这个进入目录的权限是没有什么意义的,因为你无法读取目录下的文件.所以你想要让以个人进入该目录并可以读取目录下的文件结构必须具备 x 与 r 这两个权限 四、Linux文件种类与扩展名 [文件类型][Linux文件扩展名][Linux文件长度限制] 我们在基础篇一直强调一个概念,那就是:任何装置在Linux底下都是文件 文件类型:
基本上,Linux系统上的文件名真的只是让你了解该文件可能的用途而已, 真正的执行与否仍然需要权限的规范才行!但是能不能执行成功,当然就得要看该文件的内容 虽然如此,不过我们仍然希望可以藉由扩展名来了解该文件是什么东西,所以, 通常我们还是会以适当的扩展名来表示该文件是什么种类的.底下有数种常用的扩展名:
Linux文件长度限制 在Linux底下,使用预设的Ext2/Ext3文件系统时,针对文件的档名长度限制为:
Linux文件名的限制: 由于Linux在文字接口下的一些指令操作关系,一般来说,你在设定Linux底下的文件名时, 最好可以避免一些特殊字符比较好!例如底下这些: * ? > < ; & ! [ ] | \ ' " ` ( ) { } 因为这些符号在文字接口下,是有特殊意义的!另外,文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』喔!同时,由于指令下达当中,常常会使用到 -option 之类的选项, 所以你最好也避免将文件档名的开头以 - 或 + 来命名啊! |
| 下载次数:62 |
| 下载地址:点击下载 |
| 本资源为程序自动采集,如有侵权请联系我们移除 admin#80vps.com 来信请将#替换为@ |
| 下一条 centos系统中网络配置相关 上一条 CentOS中tcpdump参数用法详解 |