Chinaunix

标题: RHEL5.4文件系统管理(2) [打印本页]

作者: rhroot1112    时间: 2010-02-20 02:21
标题: RHEL5.4文件系统管理(2)

E-mail: rhroot1112@163.com                               2010-2-2
                      RHCE学习笔记

连载
RHEL5.4文件系统管理(1)
http://blog.chinaunix.net/u3/111899/showart_2182616.html

关于/etc/fstab文件
下来学习/etc/fstab这个文件的所有参数,这个文件是非常重要的。这个文件是配置文件系统的体系,创建的所有分区,都必须写在这个文件里面,否则下次启动的时候你的分区是挂不起来的。
首先学习一个mount –a 这个命令
这个命令会重启读取/etc/fstab这个文件,可以使用mount –a命令挂载/etc/fstab中所有的文件系统。做一个小实验,来验证一下
首先吧/dev/sda7给卸载掉
[root@localhost ~]# umount /dev/sda7
[root@localhost ~]# df
Filesystem           1K-blocks      Used      Available      Use%      Mounted on
/dev/sda3              4061572     2589456   1262468        68%          /
/dev/sda6              505604      10545       468955           3%            /home
/dev/sda2              4061572    1799208   2052716        47%          /var
/dev/sda1              101086      13588       82279            15%          /boot
tmpfs                    192132         0            192132           0%           /dev/shm
[root@localhost ~]#
/dev/sda7这个分区被成功卸载了
然后再/etc/fstab这个文件里面手动的添加这样一行
/dev/sda7             /mnt              ext3    defaults       0  0
~  
最后在使用mount  -a  这个命令
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem            Size        Used            Avail          Use%         Mounted on
/dev/sda3             3.9G       2.5G          1.3G             68%               /
/dev/sda6             494M     11M          458M            3%                 /home
/dev/sda2             3.9G      1.8G          2.0G              47%               /var
/dev/sda1             99M      14M           81M             15%                /boot
tmpfs                  188M      0               188M            0%                  /dev/shm
/dev/sda7            471M    18M           405M            5%                  /mnt
[root@localhost ~]#
/dev/sda7又被重新的挂载到/mnt下面了

使用mount来挂载文件系统  
使用umount来卸载文件系统
#mount  /dev/sda7  /mnt   (挂载)
Umount  /mnt            (卸载)

下面是/etc/fstab这个文件中每个参数的含义
来学习一下/etc/fstab这个文件的每个参数是什么意思
LABEL=/                   /                     ext3        defaults                  1       1
LABEL=/home          /home             ext3        defaults                   1       2
LABEL=/var             /var                 ext3        defaults                   1       2
LABEL=/boot           /boot              ext3        defaults                   1       2
tmpfs                        /dev/shm          tmpfs      defaults                   0       0
devpts                      /dev/pts           devpts    gid=5,mode=620     0       0
sysfs                         /sys                 sysfs       defaults                   0        0
proc                         /proc               proc       defaults                   0        0
LABEL=SWAP-sda5   swap          swap      defaults                   0        0
/dev/sda7                /mnt                  ext3       defaults                   0        0
~   
参数的解释
LBAEL=/      指用卷标的方式来表示,也可以用设备名。如/dev/sda7
/                    这个是指挂载点
Ext3,swap  这些都是文件系统的类型
Default          这个是最重要,这个default里面包含五个参数。
1            1           后面的1代表最先扫描,最先起来
1      2           后面的2代表优先级低一点,最后起来
0      0          的0代表忽略启动,计算机启动时不会读这个文件系统
可以看到根分区的是1,是因为系统启动的时候,根分区是肯定要起来的,如果根分区不起来,其他分区起来是没有意义的。而后面的0,忽略启动时因为后面的分区起不起来也没有太大关系,不会影响计算机的启动,如果将后面的分区也设为1,那么一旦后面分区坏了,或者被删除了,系统就起不来了。所以我们的普通分区一般设置为0.
前面的1或者0是代表dump机制。
关于ext3的默认选项
也就是刚才在/etc/fstab那个default里面包含的五个参数
rw  suid   dev  acl  exec
default其实里面就包含了这五个参数。
下面就来解释一下这五个参数是什么意思和他们对应的是那些参数,
Rw         ro        
可读可写        只读
Suid       nosuid     
suid功能        没有suid功能
Dev       nodev      
挂载设备文件    不可以挂载设备文件
Acl       noacl     
acl功能        没有acl功能
Exec     noexec      
执行功能        不可以执行
这些default里面参数的对应关系,而default默认就有前面的那五个参数了,如果想改变这些参数,就需要到/etc/fstab这个文件里面的default后面加上你要改变的参数
现在针对这五个参数来做实验,具体的了解一下这五个参数的含义

第一个参数是rw    将它改成ro
先看一下的文件系统是不是可读可写(这个是默认的)
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# mkdir file
[root@localhost mnt]# ls
file
[root@localhost mnt]#
可以看到,文件系统是可读可写的。下面将文件系统改为ro
在/etc/fstab文件中添加这样一行,
/dev/sda7               /mnt                    ext3    defaults,ro        0 0
文件系统改为ro了,但是并不能够立即生效,必须等到下次重启的时候才会生效,可以敲一条命令,让其立即生效
[root@localhost ~]# mount –o remount /dev/sda7
这条命令可以让刚才做的操作立即生效。
在使用mount命令来查询一下/dev/sda7是否变成只读了。
[root@localhost ~]# mount | grep /dev/sda7
/dev/sda7 on /mnt type ext3 (ro)
[root@localhost ~]#
已经看到了/dev/sda7已经变成ro了
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# mkdir file1
mkdir: cannot create directory `file1': Read-only file system
[root@localhost mnt]#
可以看到,当再次进入/mnt下面建立目录的时候,他就提示这是一个只读的文件

第二个参数suid   将它改成no suid
在正常情况下面,普通用户是可以改变自己的密码的。我们试一下
[root@localhost ~]# su - user1
[user1@localhost ~]$ passwd
Changing password for user user1.
Changing password for user1
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[user1@localhost ~]$
普通用户的确是可以改变自己的密码的,接下来,在/etc/fstab这个文件里面添加一行内容。
LABEL=/                 /            ext3    defaults,nosuid        1 1
同样的,使用命令将其立即生效。
[root@localhost ~]# mount -o remount /
[root@localhost ~]# mount |grep /dev/sda3
/dev/sda3 on / type ext3 (rw,nosuid)
[root@localhost ~]#
可以看到,的根文件系统已经有了一个nosuid的参数了
同样的,在切换到普通用户,修改自己的密码
[root@localhost ~]# su - user1
[user1@localhost ~]$ passwd
Changing password for user user1.
Changing password for user1
(current) UNIX password:
passwd: Authentication token manipulation error
[user1@localhost ~]$
看到了,没有suid,一个普通用户是无法改变自己的密码嘚。因为根文件系统没有suid的功能,普通用户没有办法写到/etc/shadaw里面去

第三个参数是exec,将它换成noexec
默认情况下,在linux系统,的脚本只要有执行权限,都是可以被执行的,
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
shell
[root@localhost mnt]# ./shell
shell is A
shell is B
shell is C
[root@localhost mnt]#
看到这个脚本是可以被执行的,
现在我给/mnt加上一个noexec的参数
看下在/mnt里面的脚本还可不可以被执行。
在/etc/fstab这个文件里面加入这样的一行,
/dev/sda7               /mnt           ext3    defaults,noexec        0 0
~  
还是要使用mount –o remount /mnt来让刚才的操作立即生效。
[root@localhost ~]# mount -o remount /mnt
[root@localhost ~]#
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
shell
[root@localhost mnt]# ./shell
bash: ./shell: /bin/sh: bad interpreter: Permission denied
[root@localhost mnt]#
看到了,脚本将不能够运行,这个因为文件系统没有了执行功能,所以我脚本就不能运行了。

第四个参数dev,将它改成nodev
在linux系统中,默认情况下,光盘是可以通过计算机的光驱的,但是如果加入了nodev  光盘就将挂不起来。

第五个参数acl, 将它改成noacl
在系统安装的时候划分的分区默认就是有acl属性的,在安装后创建的分区是没有acl属性,需要我们手动的添加。
root@localhost ~]# ls -ld /mnt/
drwxr-xr-x 2 root root 1024 Feb 20 00:51 /mnt/
[root@localhost ~]# su - user1
[user1@localhost ~]$ cd /mnt/
[user1@localhost mnt]$ mkdir file
mkdir: cannot create directory `file': Permission denied
[user1@localhost mnt]$
/mnt这个目录普通用户是没有写入的权限的,现在我们用acl的功能给普通用户一个写入的权限。
[root@localhost ~]# setfacl -m u:user1:rwx /mnt/
[root@localhost ~]# su - user1
[user1@localhost ~]$ cd /mnt/
[user1@localhost mnt]$ mkdir file1
[user1@localhost mnt]$ ls
file  file1  shell
[user1@localhost mnt]$可以看到,给/mnt设置的acl功能已经生效了,user1已经可以在/mnt目录里面建立文件了。
现在在/etc/fstab这个文件里面加入这样的一行
/dev/sda7               /mnt             ext3    defaults,noacl        0 0
~  
在来试试/dev/sda7还有没有acl的功能。
还是要用mount  -o  remount  /mnt 这条命令来让刚才的操作生效。
[root@localhost ~]# mount -o remount /mnt/
[root@localhost ~]#
现在重复刚才的操作,给user2也设置一个acl的权限。
[root@localhost ~]# setfacl -m u:user2:rwx /mnt/
setfacl: /mnt: Operation not supported
[root@localhost ~]#
现在就不可以给user2添加acl权限了。

其实mount命令还是很多的作用,下面介绍。
下面在来学习一下怎么在linux下面怎么挂载一个iso文件系统
[root@localhost ~]# mount -o loop boot.iso /media/
[root@localhost ~]# df
Filesystem           1K-blocks      Used        Available       Use%       Mounted on
/dev/sda3               4061572     2598728   1253196       68%           /
/dev/sda6               505604      10565       468935            3%           /home
/dev/sda2               4061572    1936516   1915408         51%         /var
/dev/sda1               101086      13588       82279            15%          /boot
tmpfs                      192132         0           192132           0%           /dev/shm
/dev/sda7               482214     19600       412816            5%           /mnt
df: `/media/RHEL_5.4 i386 DVD': No such file or directory
/root/boot.iso            9028      9028         0                100%            /media
[root@localhost ~]# cd /media/  
[root@localhost media]# ls
isolinux  TRANS.TBL
[root@localhost media]# cd isolinux/
[root@localhost isolinux]# ls
boot.cat     initrd.img    memtest      rescue.msg  vmlinuz
boot.msg     isolinux.bin  options.msg  splash.lss
general.msg  isolinux.cfg  param.msg    TRANS.TBL
[root@localhost isolinux]#
这样,iso文件就被挂载到了/media这个目录里面。

下面在来学习一下在挂载的时候指定一个拥有人和拥有组的
这个参数只适合fat32的格式文件系统(dosfstools-2.11-7.el5)
首先将/dev/sda7格式化成fat32
[root@localhost ~]# mkfs.vfat /dev/sda7
mkfs.vfat 2.11 (12 Mar 2005)
[root@localhost ~]#
已经吧/dev/sda7格式化成了fat32
[root@localhost ~]# id user1
uid=500(user1) gid=500(user1) groups=500(user1)
[root@localhost ~]# mount -o uid=500,gid=500 /dev/sda7 /mnt/
[root@localhost ~]# mount |grep /dev/sda7
/dev/sda7 on /mnt type vfat (rw,uid=500,gid=500)
[root@localhost ~]#
直接在挂载的时候加了一个uid gid 的参数
如果是正常情况,在系统中,以root的身份把一个文件从一个目录复制到另外一个目录,拥有人和拥有组都是root。现在呢
[root@localhost ~]# cp /etc/fstab /mnt/
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ll
total 8
-rwxr-xr-x 1 user1 user1 760 Feb 20 01:47 fstab
[root@localhost mnt]#
可以看到,复制过来的文件的拥有人和拥有组已经变成user1了,这个是因为刚才在挂载的时候已经指定了他文件系统的uid和gid

可以在挂载的时候添加一个给系统文件添加一个noexec的功能。
mount  -o  noexec  /dev/sda7  /mnt
这个就是在挂载的时候添加一个noexec的属性。

咱们在来看下面一个问题,怎么去扩展swap分区
先来查询一下系统的swap
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:      375        369          6          0          7         83
-/+ buffers/cache:        278         97
Swap:     1027        128        899
[root@localhost ~]#
现在系统中swap是1024M
扩展是swap分区有两种方法,
(1)    利用磁盘的剩余空间来扩展swap
首先分区并改变分区的类型
[root@localhost ~]# fdisk /dev/sda

The number of cylinders for this disk is set to 1958.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
First cylinder (1316-1958, default 1316):
Using default value 1316
Last cylinder or +size or +sizeM or +sizeK (1316-1958, default 1958): +500M

Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): 82
Changed system type of partition 8 to 82 (Linux swap / Solaris)

Command (m for help): wq
格式化swap
[root@localhost ~]# mkswap /dev/sda8
Setting up swapspace version 1, size = 509927 kB
[root@localhost ~]#
启动swap
[root@localhost ~]# swapon /dev/sda8
[root@localhost ~]#
现在我在查询一下swap的大小
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:      375        369          6          0          7         82
-/+ buffers/cache:        278         96
Swap:     1513        128       1385
[root@localhost ~]#
可以看到的swap分区已经增大了500M
最后,要想下次系统重启生效,必须写在/etc/fstab文件中
/dev/sda8               swap               swap    defaults        0 0
~  

(2)    利用分区的剩余空间来扩展swap
首先我一样要查询一下系统中swap分区的大小
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:     375        368          7          0          7         81
-/+ buffers/cache:        278         96
Swap:     1513        128       1385
[root@localhost ~]#
然后利用dd工具来创建一个swap文件
[root@localhost ~]# dd if=/dev/zero of=swapfile bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.632534 seconds, 166 MB/s
[root@localhost ~]#
格式化swap
[root@localhost ~]# mkswap swapfile
Setting up swapspace version 1, size = 104853 kB
[root@localhost ~]#
把这个文件当做一个分区来对待
启动swap
[root@localhost ~]# swapon swapfile
[root@localhost ~]#

现在来查询一下swap分区的大小
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:     375        368          6          0          1         90
-/+ buffers/cache:        276         98
Swap:     1613        128       1485
[root@localhost ~]#
可以看到系统的swap分区已经扩大100M

最后,要想下次系统重启生效,必须写在/etc/fstab文件中
/swapfile            swap                    swap    defaults        0 0
~  
以上的两种方法就是用来扩展swap分区的
还可以使用swapon  -a 激活交换分区,(该命令可以读取/etc/fstab文件,并开启它列出所有的交换条目
还可以利用swapon  -s 来查询交换分区的状态
[root@localhost ~]# swapon -s
Filename                    Type            Size           Used            Priority
/dev/sda5                    partition     1052216   131640        -1
/dev/sda8                    partition     497972       0                -2
/root/swapfile                 file          102392       0                -3
[root@localhost ~]#
在这里,可以看到swap是有哪些文件组成的,还有优先级,数字越大,优先级越高。可以在/etc/fstab文件中default后面加上pri=X(X为优先级)

在linux系统当中,怎么去挂载一个NFS的网络文件系统呢
可以通过showmount  -e  来查看对方计算机有哪些文件夹被共享了
[root@localhost ~]# showmount -e 192.168.0.254
Export list for 192.168.0.254:
/var/ftp/pub 192.168.0.0/24
[root@localhost ~]#
下面来挂载nfs网络资源
[root@localhost ~]# mount -t nfs 192.168.0.254:/var/ftp/pub/ /mnt/
[root@localhost ~]# df
Filesystem           1K-blocks      Used         Available      Use%                 Mounted on
/dev/sda3              4061572     2309084   1542840        60%                       /
/dev/sda6              505604      10565        468935          3%                       /home
/dev/sda2              4061572    1857588   1994336        49%                      /var
/dev/sda1              101086      13588       82279             15%                     /boot
tmpfs                    192132         0            192132            0%                      /dev/shm
/dev/hdc               2935370   2935370        0 100% /media/RHEL_5.4 i386 DVD
192.168.0.254:/var/ftp/pub/
                       4061600   1857600   1994336  49% /mnt
[root@localhost ~]#
Nfs网络资源就被成功挂载到本地了。
如果要每次启动的时候都要生效,就必须写在/etc/fstab文件里面
192.168.0.254:/var/ftp/pub  /mnt                nfs     defaults        0 0
~

关于
mount –a  
mount –o remount /dev/sda7 ,
mount –o remount,ro /dev/sda7
区别
Mount  -a  
它只是去挂载一个没有挂载的文件系统,它才会生效。当一个分区没有挂载,但是/etc/fstab这个文件却挂载了,就可以mount –a 来重新加载/etc/fstab文件。从而挂载文件系统
Mount –o remout /dev/sda7
在/etc/fstab这个文件里面加了一下属性参数,可以让其立即生效,而且下次启动的时候还会生效,因为写在了/etc/fstab这个文件里面了。
Mount –o remount,ro /dev/sda7  
手动的给/dev/sda7这个文件系统加一个ro的参数,只在当前生效,重启不生效,生效必须写在/etc/fstab这个文件里面



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/111899/showart_2182617.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2