跟我学Linux系统管理

                                         -------by MT.sh  

                      第二讲   Linux下的文件系统管理

----------Linux下的文件系统

什么是文件系统呢?这是一个概念性问题,它是一种操作系统用于在磁盘上组织文件的方法。也有人说叫它文件系统种类,如windows下的文件系统我们比较熟悉的有fatntfs等。

下面我们还是主要讨论Linux中的文件系统,我记得我还是在上学的时候我的老师就经常跟我说Linux下一切皆文件。那么也就是一切的一切都是以文件的形式组成和呈现的,目录是特殊类型的文件,硬件设备、驱动程序和分区等等都是用文件表示的。Linux文件的组织系统被称之为文件系统层次标准(FHS)。因为它看上去很有层次结构的。在Linux下支持的文件系统类型有ext2ext3fatiso9660cramfs。实际上Linux内核也是支持NTFS文件系统的,但是只能读取,而无法写入。

Linux下最常用的还是ext2ext3这两种文件系统。Ext2GNU/Linux系统中标准的文件系统。它是专门为Linux设计的,EXT3EXT2的下一代,是在原有EXT2的基础加上了日志功能,最近看了一些书籍已经提到有ext4的文件系统格式。在Redhat server 6 下估计默认的文件系统就是ext4了,不过到现在我还没有接触6,所以是真是假无从判定。除此之外linux还支持fatiso9660cramfs等文件系统。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下还有lbc等表示的文件系统,l表示的是一个链接文件取的是ln命令的第一个字母,bc表示的是特殊文件,有可能只的是设备文件,就是我们经常听到的块文件。

   刚才我们有提到权限位,这里可能有人要问了,本来打算放在后面讲的,这里还是讲了吧,省的不明白的同志们范迷糊。

 

---------Linux下的权限位

   我们用ls –l 查看一个目录下,会看到在文件名最前面有这么一列“-rw-r--r--”第一个字符表示的是文件系统,后9位就是权限位,第一个3列表示的是用户属主的权限,第23列表示的是属组的权限,最后一个3列表示的是其他用户的权限。从上面的例子我们能看出

该文件属主的权限是读写,属组的权限是可读,其他用户的权限也是可读。其中r表示的是可读权限,w表示的是可写权限。取readwrite两个单词的首位字符。除了例子当中提到的rw权限外还有x权限,x表示的是可执行权限。这里所谓的可执行就是通过shell环境能在系统中运行。属主用u表示,属组用g表示,其他用户用o表示,分别取usergroupother三个单词的首位字符。另外还有一种表示就是a,取的是all单词的首位字符,我想大家应该能猜到它表示的什么了吧。没错,它表示的就是包括ugo在内的所用用户。刚才我们有提到rwx这三种权限,那么这三种权限还可以用数字来表示。即r=4w=2x=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=r2=w1=x,那正好不就读写执行的权限,第一个5表示的是属组的权限位,第三个5表示的是其他用户的权限位。到这里大家都应该明白了吧。好,留几个题给大家思考下吧:

Chmod g+r 2

Chmod o-r 2

Chmod a+x 2

分别是什么意思呢?

 

Linux中,除了读写执行权限意外,还有两个比较特殊的权限位,就是setUidsetGid,这两个特殊的权限为分别是设置用户的Id位和组的ID位,当一个程序一旦设置了这么一个标记以后,运行该程序的进程将拥有该程序所有者相同的权限。使用方法分别是chmod u+s文件名和chmod g+s 文件名。

除了setuidsetgid外还有一比较特殊的权限为,我们称之为粘着位(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:更改文件的属主或者属组

用法1chown 用户名 目录名/文件名  如:

[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用户了。

用法2chgrp 组名 目录名/文件名 如:

[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组了吧呵呵。

用法3chown 用户名.组名 目录名/文件名 如:

[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

 

如果有错误的地方,欢迎各界朋友跟我联系,大家相互讨论并学习,一起进步。