跟我学Linux系统管理
-------by MT.sh
第二讲 Linux下的文件系统管理
----------Linux下的文件系统
什么是文件系统呢?这是一个概念性问题,它是一种操作系统用于在磁盘上组织文件的方法。也有人说叫它文件系统种类,如windows下的文件系统我们比较熟悉的有fat、ntfs等。
下面我们还是主要讨论Linux中的文件系统,我记得我还是在上学的时候我的老师就经常跟我说Linux下一切皆文件。那么也就是一切的一切都是以文件的形式组成和呈现的,目录是特殊类型的文件,硬件设备、驱动程序和分区等等都是用文件表示的。Linux文件的组织系统被称之为文件系统层次标准(FHS)。因为它看上去很有层次结构的。在Linux下支持的文件系统类型有ext2、ext3、fat、iso9660、cramfs。实际上Linux内核也是支持NTFS文件系统的,但是只能读取,而无法写入。
在Linux下最常用的还是ext2、ext3这两种文件系统。Ext2是GNU/Linux系统中标准的文件系统。它是专门为Linux设计的,EXT3是EXT2的下一代,是在原有EXT2的基础加上了日志功能,最近看了一些书籍已经提到有ext4的文件系统格式。在Redhat server 6 下估计默认的文件系统就是ext4了,不过到现在我还没有接触6,所以是真是假无从判定。除此之外linux还支持fat、iso9660、cramfs等文件系统。fat文件系统是提供对MS-DOS的文件系统的支持,ISO9660是标准的CD-ROM文件系统,cramfs文件是一种只读文件系统,在嵌入式系统中应用很广泛。
说到这里,我们来实际看下linux系统面得文件系统吧。
[root@MT ~]#ll
-rw------- 1 root root 1630 03-06 01:58 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 03-12 23:00 Desktop
在上面的截图中,我们看到在权限位前面的字符,也就是第一行和第二行第一个字符,有-和d表示的,-表示的是一个普通文件,d表示的是一个目录。在Linux下还有l、b、c等表示的文件系统,l表示的是一个链接文件取的是ln命令的第一个字母,b、c表示的是特殊文件,有可能只的是设备文件,就是我们经常听到的块文件。
刚才我们有提到权限位,这里可能有人要问了,本来打算放在后面讲的,这里还是讲了吧,省的不明白的同志们范迷糊。
---------Linux下的权限位
我们用ls –l 查看一个目录下,会看到在文件名最前面有这么一列“-rw-r--r--”第一个字符表示的是文件系统,后9位就是权限位,第一个3列表示的是用户属主的权限,第2个3列表示的是属组的权限,最后一个3列表示的是其他用户的权限。从上面的例子我们能看出
该文件属主的权限是读写,属组的权限是可读,其他用户的权限也是可读。其中r表示的是可读权限,w表示的是可写权限。取read和write两个单词的首位字符。除了例子当中提到的r、w权限外还有x权限,x表示的是可执行权限。这里所谓的可执行就是通过shell环境能在系统中运行。属主用u表示,属组用g表示,其他用户用o表示,分别取user、group、other三个单词的首位字符。另外还有一种表示就是a,取的是all单词的首位字符,我想大家应该能猜到它表示的什么了吧。没错,它表示的就是包括u、g、o在内的所用用户。刚才我们有提到rwx这三种权限,那么这三种权限还可以用数字来表示。即r=4、w=2、x=1。
下面我们看下如何改变文件的权限:
在Linux下我们使用chmod命令来改变文件的权限,当然我们能改变文件的权限前提是你是root用户或者你是该文件的属主用户,意思就是说你有修改该文件权限的权限才能去修改。
用chmod改变文件权限有两种方法:
1、 chmod 属主(属组或其他用户或所有用户)=(或者+或者-)权限 目录名/文件名
2、 chmod 数值 目录名/文件名
可以看出第一种方法还是比较笨拙的,但是我们还是必须要讲解的,免得我们看不懂别人写的命令,用例子来将吧
[root@MT 1]# ll
drwxr-xr-x 2 root root 4096 03-13 17:18 2
我们现在看到是2这个文件的属主权限是可读写可执行,那么我们来让属主改变成只读权限,看我怎么操作的啊
[root@MT 1]# chmod u=r 2
[root@MT 1]# ll
dr--r-xr-x 2 root root 4096 03-13 17:18 2
现在我们再看属主是对他只有只读权限了吧。我们在以后的维护当中尽量不要这么去做,我这里是用的root用户,以后你不一定就是用root用户维护,用root用户去维护是安全风险的,不使用root用户的情况下你把它的属主权限变成了只读,你再想改回来可就不好搞了,只能借助其他有权限的用户了。好,我们继续看例子,现在文件2的属主也就是root对于文件2是只读权限,现在我们给他加上写的权限:
[root@MT 1]# chmod u+w 2
[root@MT 1]# ll
drw-r-xr-x 2 root root 4096 03-13 17:18 2
现在在看会发现root对文件2已经是rw的权限了吧。呵呵,一鼓作气,我们在给他一个执行的权限,但是这里我们用第二种方式,也就是上面提到的第chmod 数值的方式,好了,看例子:我们要得效果是属主有读写执行的权限,属组和其他用户有读和写的权限。
[root@MT 1]# chmod 755 2
[root@MT 1]# ll
drwxr-xr-x 2 root root 4096 03-13 17:18 2
现在在看我们会发现果然跟我们想要的效果是一样的哈。呵呵 ,分析下吧,第一个7表示的是属主的权限位,7=4+2+1,那么回想下4=r,2=w,1=x,那正好不就读写执行的权限,第一个5表示的是属组的权限位,第三个5表示的是其他用户的权限位。到这里大家都应该明白了吧。好,留几个题给大家思考下吧:
Chmod g+r 2
Chmod o-r 2
Chmod a+x 2
分别是什么意思呢?
在Linux中,除了读写执行权限意外,还有两个比较特殊的权限位,就是setUid和setGid,这两个特殊的权限为分别是设置用户的Id位和组的ID位,当一个程序一旦设置了这么一个标记以后,运行该程序的进程将拥有该程序所有者相同的权限。使用方法分别是chmod u+s文件名和chmod g+s 文件名。
除了setuid和setgid外还有一比较特殊的权限为,我们称之为粘着位(sticky),这个粘着位主要是针对目录使用的,当一个目录被设置粘着位(chmod a+t),则该目录下的文件只能由root超级用户或者该目录的所有者删除。
眼尖的朋友们,可能在看了上面得文档后发现
[root@MT 1]# ll
drwxr-xr-x 2 root root 4096 03-13 17:18 2
中在权限位 后面 有两个root,这里解释下,第一个root表示的是属主,第二个root表示的是属组,那么接下来我们讨论下Linux文件或者说目录的属主与属组的更改。
-----------chown命令,修改文件属主和属组
Chown:更改文件的属主或者属组
用法1:chown 用户名 目录名/文件名 如:
[root@MT oracle]# ll
drwxr-xr-x 2 root root 4096 03-13 22:34 oracle
[root@MT oracle]# chown oracle oracle
[root@MT oracle]# ll
drwxr-xr-x 2 oracle root 4096 03-13 22:34 oracle
我们看上面这几行代码,首先我们第一次ll查看发现oracle目录的属主是root用户,然后我们chown oracle oracle 将oracle目录的属主改变成oracle用户了。
用法2:chgrp 组名 目录名/文件名 如:
[root@MT oracle]# ll
drwxr-xr-x 2 oracle root 4096 03-13 22:34 oracle
[root@MT oracle]# chgrp dba oracle
[root@MT oracle]# ll
drwxr-xr-x 2 oracle dba 4096 03-13 22:34 oracle 我们将属组改成了dba组了吧呵呵。
用法3:chown 用户名.组名 目录名/文件名 如:
[root@MT oracle]# chown oracle.dba oracle
[root@MT oracle]# ll
drwxr-xr-x 2 oracle dba 4096 03-13 22:34 oracle
这个时候我们看到我们时候chown 用户名.组名 oracle 将oracle目录的属主和属组分别改成了oracle用户和dba组。
那第二讲基本上到此就结束了,最后附上在linux系统下经常用的默认目录。
/bin :常见的用户命令
/boot :可引导Linux内核和引导装载程序配置文件
/dev :设备目录
/etc :存放管理配置文件的目录
/home:诸多用户的主目录
/media :提供挂在设备的目录
/proc :内核进程目录
/root :超级用户root的主目录
/sbin :存放管理命令和守护进程的目录
/sys :类似/proc
/tmp :临时目录
/usr :存放用户文档、游戏、库文件和管理员命令的目录
/var :各种应用程序使用数据的目录
kaodaxia@139.com 我的邮箱
1368773585 我的QQ
如果有错误的地方,欢迎各界朋友跟我联系,大家相互讨论并学习,一起进步。