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下面了
下面是/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.
关于ext3的默认选项
也就是刚才在/etc/fstab那个default里面包含的五个参数
rw suid dev exec sync
default其实里面就包含了这五个参数。
下面就来解释一下这五个参数是什么意思和他们对应的是那些参数,
Rw 可读可写
ro 只读
Suid suid功能
nosuid 没有suid功能
Dev nodev
挂载设备文件 不可以挂载设备文件
Sync nosync
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 光盘就将挂不起来。
下面在来学习一下怎么在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
咱们在来看下面一个问题,怎么去扩展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
阅读(968) | 评论(0) | 转发(0) |