QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1175|回复: 1

大家认为此方法可行吗 我试过对/tmp /var读写还是回到/

[复制链接]
发表于 2008-2-23 05:30:03 | 显示全部楼层 |阅读模式
网上流传的
很多Linux用户,尤其是个人用户习惯于为安装Linux准备两个分区:一个/分区,一个Swap分区,这是安装Linux的最低要求,但不是最安全的方案。一般来说,分区较多数据的安全性会高一些,因为当一个分区遭到破坏无法恢复的时候,其它分区的数据可以不受太大的影响。如果将所有的数据和程序文件都放在一个分区上,一旦这个分区出现问题就是灭顶之灾。另外多分几个区还可以预防一些拒绝服务攻击(Dos,Denial Of Service)。比如,/tmp目录对于所有用户而言都是可写的,如果将/tmp目录挂在/分区上,一个恶意用户即便权限非常低也可以通过向/tmp目录中写入大量垃圾数据而撑满/分区,导致系统瘫痪。如果将/tmp挂在一个单独的分区上就可以避免这个问题。/var目录也是一样,这里存放有日志文件,如果它被挂在/分区上,攻击者可以设法让日志文件迅速涨大直至撑爆/分区。这里只是举了两个例子,对于其它的目录也是一样,比如超级用户的root目录中经常会存有重要的文档,单独分区可以大大提高其安全性。

但是,如果按照上面所说的很多的目录都要建立单独的分区。其实可以采用变通的方式,将性质类似的目录链接到一个分区中。比如/var和/tmp都有遭到攻击的可能,则可以建立一个分区存放这两个目录:

ln -s /tmp /new/tmp
ln -s /var /new/var


首先,在/new(这是一个单独的分区)上建立并清理两个目录/new/tmp和/new/var;然后,用符号连接将/tmp、/var链接过来,以后所有对/tmp和/var的读写都会转而指向/usr/tmp、/usr/var。
  
   试过行不通对于/new/tmp和/new/var的读写还是回到原来的/分区

[ 本帖最后由 hew 于 2008-2-23 09:54 编辑 ]
 楼主| 发表于 2008-2-23 05:43:28 | 显示全部楼层
已解决

用下面方法  原文没署名作者  但还是在此谢过

整理数据
  首先,必须创建一个新分区专门用于存储频繁修改的文件。您可能希望将这个分区置于单独的磁盘上以增强性能。接下来,我将逐步说明将 /tmp 和 /var 移动到这个新分区上的各个步骤。
  
  警告
  下面的技术说明如何移动一个或多个分区。尽管这项技术经过专门设计,使您能够“撤销”失败的分区移动,但它并不防止用户的错误。换言之,只要进行格式化分区或复制大量文件的操作,就存在因输入错误而导致大量数据被破坏的可能性。因此,强烈建议您 在行动之前采取适当的措施来备份所有的重要文件。
  
  1. 在新分区上创建文件系统
  这个过程的第一步是创建一个足以容纳 /var 和 /tmp 并有一点额外空间的新分区。您需要另有一个硬盘驱动器或者一个备用的(未使用的)分区来存储经常修改的文件。如果确实需要使用 fdisk 或 cfdisk 来创建分区,则必须重新启动一次系统。现在就可以格式化新分区了,如下所示(完全可以在多用户模式下完成这一工作;我将提示您何时切换到单用户模式):
  
  # mkfs.ext2 /dev/???
  
  2. 将新分区挂载到 /mnt/rwstorage
  正如在我的前一篇技巧中那样,应该用刚创建的空分区的设备名替换 ???。意外键入错误的名称将破坏现有分区上的数据,所以一定要小心!键入这个命令以后,您就在新分区上创建了一个新的 ext2 文件系统。现在几乎就可以挂载这个分区了,但我们首先要创建一个挂载点。
  
  # mkdir /mnt/rwstorage
  
  我选择名称 "rwstorage" 是为了提醒我们,这个特殊的分区将专用于存储频繁读写的文件系统。要挂载分区,请键入:
  
  # mount /dev/??? /mnt/rwstorage
  
  3. 创建新的 /tmp
  分区已经挂载好,现在就可以创建新的 /tmp 目录了:
  
  # cd /mnt/rwstorage
  # mkdir tmp
  # chmod 1777 tmp
  
  4. 进入单用户模式
  我们的新目录 /mnt/rwstorage/tmp 具有临时目录应该具有的权限。现在,请进入单用户模式,因为我们必须复制整个 /var。像往常一样,我们将进入单用户模式推迟到最后一刻进行。从现在起我们不希望任何程序读写 /var 中的文件,所以必须停止所有守护程序,断开所有用户,执行一些快速的维护,为此请键入以下命令:
  
  # init 1
  
  如果提示您输入口令来进行系统维护,请按指示操作。您现在应该在 root shell 中,所有不必要的守护进程已被停止。键入以下命令为 /var 中的文件创建一个新位置:
  
  # cd /mnt/rwstorage
  # mkdir var
  
  5. 复制 /var
  在我们的新 /mnt/newstorage/var 目录上的默认权限应该是正确的,现在就可以将原来的全部 /var 数据复制到新分区上了:
  
  # cd /var
  # cp -ax * /mnt/rwstorage/var
  
  6. 执行备份并创建符号链接
  这个命令完成以后,/mnt/rwstorage/var 就成为 /var 的一个完全相同的副本。现在您可能会问,如何让 Linux 正确使用 /mnt/rwstorage/var 和 /mnt/rwstorage/tmp 而不是根目录下的默认位置呢?使用符号链接很容易实现这一点 -- 我们将创建新的符号链接 /tmp 和 /var,它们指向 /mnt/rwstorage 中的正确目录。我们首先备份原来的目录:
  
  # cd /
  # cp var var.old
  # cp tmp tmp.old
  
  最后一行可能没有必要,因为通常您不会将任何重要的文件放在 /tmp 中,但我们这样做更安全一些。现在开始创建符号链接:
  
  # cd /
  # ln -s /mnt/rwstorage/var /var
  # ln -s /mnt/rwstorage/tmp /tmp
  
  7. 最后修改 /etc/fstab
  现在,当任何用户或程序使用 /var 时,他们将被自动转移到 /mnt/rwstorage/var!对于 /tmp 也一样。我们还有一个步骤要做;但是这一步可以安全地在多用户模式下执行。现在可以让 apache 恢复运行了,也可以让您的所有用户重新登录了。请按 CTRL-D 退出 runlevel 1。系统应该正常启动。请以 root 身份登录。
  
  我们必须完成的最后一个步骤是配置 /etc/fstab 文件,以便将 /dev/??? 挂载到 /mnt/rwstorage。必须在 /etc/fstab 中添加这样一行:
  
  /dev/???    /mnt/rwstorage ext2  defaults    1   2
  
  重要说明:如果您使用的内核版本属于 2.3+,则在您的 /etc/fstab 文件中很可能有这样一行:
  
  none      /var/shm    shm   defaults    0   0 
  
  该行在系统中启用共享内存,默认情况下它挂载在 /var 中。为了使该行正常工作,它必须出现在您刚添加的那一行的下一行。这样,当 Linux 启动时,/mnt/rwstorage 将首先被挂载(启用 /var)。然后,并且仅当在此以后,shm 设备将被挂载在 /var/shm,而后者实际上是 /mnt/rwstorage/var/shm。确保这两行的次序为:
  
  /dev/???    /mnt/rwstorage ext2  defaults    1   2
  none      /var/shm    shm   defaults    0   0
  
  在保存了对 /etc/fstab 的更改以后,您的系统已经成功升级了!在证实一切工作正常以后,您可删除所备份的 /tmp.old 和 /var.old 目录。恭喜您 -- 为了获得最佳性能,您已经成功地对您的系统分区进行了重新配置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-9-21 19:35 , Processed in 0.150068 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表