把用户限制在特定目录下
[ 2008/09/02 15:16 | by selboo ]
1.先建立目录
mkdir -p /tmpdir/bin
cp /bin/bash /tmpdir/bin
2.建立chroot所需要的环境
./cr.sh /tmpdir
more cr.sh
#!/bin/sh
ROOT=$1
libs=`find $ROOT -type f -perm /111 -exec "ldd" {} \;|cut -d \> -f 2|cut -d \( -f 1|sort |uniq`
echo $libs
for lib in $libs
do
if [ -f $lib ] ;then
if [ ! -f $ROOT/$lib ] ;then
dir=`dirname $ROOT$lib`
if [ ! -d $dir ];then
mkdir -pv $dir
fi
cp -av $lib $ROOT$lib
if [ -h $lib ]; then
source=`dirname $lib`/`readlink $lib`
cp -av $source $ROOT$source
#echo $source >> liblist
fi
fi
fi
done
echo "Done!"
ROOT=$1
libs=`find $ROOT -type f -perm /111 -exec "ldd" {} \;|cut -d \> -f 2|cut -d \( -f 1|sort |uniq`
echo $libs
for lib in $libs
do
if [ -f $lib ] ;then
if [ ! -f $ROOT/$lib ] ;then
dir=`dirname $ROOT$lib`
if [ ! -d $dir ];then
mkdir -pv $dir
fi
cp -av $lib $ROOT$lib
if [ -h $lib ]; then
source=`dirname $lib`/`readlink $lib`
cp -av $source $ROOT$source
#echo $source >> liblist
fi
fi
fi
done
echo "Done!"
此shell目的是把运行bash的相关内容复制过来。
3.把chroot /tmpdir这个指令加入启动过程中
注:这个不一定安全,有些安全选项需要自己注意。
三万元搭建LINUX服务器集群
[ 2008/08/26 13:08 | by selboo ]
1.什么是服务器集群
随着Internet的爆炸性增长,Internet与人的生活越来越息息相关,通过Internet上进行交易也就越来越受关注.近几年,电子商务的年增长均超过100%.服务器的工作量也迅速增长,所以服务器(特别是一个受人欢迎的WEB服务器)很容易在访问高峰时期过载.而另一方面,计算机从1946年单纯的科学计算任务到现在大量纷繁复杂的信息处理,工作量越来越大,需要越来越快的处理能力.所以计算机界就不得不不断研究更快的处理器,存储器,以适应这一需求.然而,科学家们意识到,单块处理器的速度发展空间是有限的,为什么不能让计算机象人一样协同工作,“群策群力”地将工作完成好呢!这时,就掀起了“并行计算”的研究.举个例子来说,我们架设了一台WWW服务器,上面构建了一个电子商务网站,然而随着时间的推移,名声越来越大,这时点击率也就越来越高,WWW服务器的负载也就越来越高.这种情况下,我们就必须提升WWW服务器的能力,以满足以益增长的服务请求.这时,我们就面临两种选择:
(1)升级WWW服务器,采用更快的CPU,增加更多的内存,使其更具有POWER;但日益增长的服务请求又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈.还有,升级时还得考虑到服务如何接续,能否中止!
(2)增加WWW服务器,让多台服务器来完成相同的服务.
这种方法就是服务器集群,通过并行技术来大大提升系统性能.也就是这一章的主要内容,这种方法具有很好的扩展性,而且可以最大限度地利用已有投资.
1.1.集群的概念
集群,是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算机.近几年来,微处理器、内存、总线技术、网络技术有了非常大的进步,软件的并行技术也有了非常大的进步,这使得让一组廉价的个人电脑与工作站协同工作成为可能,甚至可以与拥有强大的芯片处理能力的超级计算机竞争.比如,16个普通微处理器组成的集群系统可以达到亿次级浮点计算机能力,而且总的成本小于40万元.不幸的是,建造一个集群并不是一件简单的事件.集群的组成部分必须根据要运行的主要应用进行调整,以使之运行在最佳状态.这此因素带来的结果就是,建造集群系统不是只有一个标准的方案,在本章中,我们就会看到许多种建造方案.集群技术是计算机系统结构的前沿领域,笔者也仅是略有了解,希望本文能起到抛砖引玉之用.
1.2.并行技术
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解.
2.使用MPICH构建一个四节点的集群系统
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解.
2.1 所需设备
(1).4台采用Pentium II处理器的PC机,每台配置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器.
(2).5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接.)
(3).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线
(4).1个快速以太网(100BASE-Tx)的集线器或交换机
(5).1张Linux安装盘
2.2 构建说明
对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力.如果是这样,请找一些有经验的专业人士寻求帮助.
(1). 准备好要使用的采用Pentium II处理器的PC机.确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的PC机上安装上一块快速以太网卡.当然别忘了要加上附加的内存.确定完成后盖上机箱,接上电源.
(2). 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上.使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源.
(3). 使用LINUX安装盘在每一台PC机上安装.请确信在LINUX系统中安装了C编译器和C的LIB库.当你配置TCP/IP时,建议你为四台PC分别指定为192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4.第一台PC为你的服务器节点(拥有两块网卡的那台).在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址.
(4).当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:
192.168.1.1 node1 server
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
编辑每台机器的/etc/hosts.equiv文件,使其包含以下几行:
node1
node2
node3
node4
$p#
以下的这些配置是为了让其能使用MPICH's p4策略去执行分布式的并行处理应用.
1. 在服务器节点,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:/mirror node1(rw) node2(rw) node3(rw) node4(rw)
2. 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:server:/mirror /mirror nfs rw,bg,soft 0 0
3. /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发.
4. 在服务器节点上,安装MPICH.MPICH的文档可在http://www.mcs.anl.gov/mpi/mpich/docs.html获得.
5. 任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如/mirror/username,用来存放MPI程序和共享数据文件.这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序.
2.3 MPICH安装指南
1.如果你有gunzip,就d下载mpich.tar.gz,要不然就下载mpich.tar.Z.你可以到http://www.mcs.anl.gov/mpi/mpich/downloa下载,也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目录拿.(如果你觉得这个东西太大,你可以到pub/mpi/mpisplit中取分隔成块的几个小包,然后用cat命令将它们合并)
2.解压:gunzip ;c mpich.tar.gz tar xovf-(或zcat mpich.tar.Z tar xovf-)
3.进入mpich目录
4.执行:./configure为MPICH选择一套适合你的实际软硬件环境的参数组,如果你对这些默认选择的参数不满意,可以自己进行配置(具体参见MPICH的配置文档).最好选择一个指定的目录来安装和配置MPICH,例如:./configure -prefix=/usr/local/mpich-1.2.0
5.执行:make >& make.log 这会花一段较长的时间,不同的硬件环境花的时间也就不同,可能从10分钟到1个小时,甚至更多.
6.(可选)在工作站网络,或是一台单独的工作站,编辑mpich/util/machines/machines.xxx(xxx是MPICH对你机器体系结构取的名称,你能很容易的认出来)以反映你工作站的当地主机名.你完全可以跳过这一步.在集群中,这一步不需要.
7.(可选)编译、运行一个简单的测试程序:
cd examples/basic
make cpi
ln ;s ../../bin/mpirun mpirun
./mpirun ;np 4 cpi
此时,你就在你的系统上运行了一个MPI程序.
8.(可选)构建MPICH其余的环境,为ch_p4策略使
用安全的服务会使得任何启动速度加快,你可以执行以下命令构建:
make serv_p4
(serv_p4是一个较新的P4安全服务的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一个更快版本,但他需要tk 3.6版的源代码.如果你有这个包,你就用以下命令可以构建它:
make nupshot
9.(可选)如果你想将MPICH安装到一个公用的地方让其它人使用它,你可以执行:
make install 或 bin/mpiinstall
你可以使用-prefix选项指定MPICH安装目录.安装后将生成include、lib、bin、sbin、www和man目录以及一个小小的示例目录,
(可选)到此你可以通告所有的用户如何编译、执行一个MPI程序.
2.4 费用统计
这个小的集群方案总的费用大致如下:
设备费用:
4台 带EIDE CD-ROM 的机器: 24000元
5块快速以太网卡: 800元
1个快速以太网的集线机:2000元
5根双绞线:50元
软件费用:
LINUX安装光盘:50元
MPICH:0元
合计:26900元.
这样一个集群系统可以用于一些大量的科学计算,信息处理,而且其性价比实在是太好了,仅需不到三万元.
linux./etc/fstab文件详解
[ 2008/08/26 10:37 | by selboo ]
通常情况下,一个Linux系统将拥有很多的文件系统,然而,仅仅通过一个或非常少的文件系统来配置Linux系统也是可能的,你希望创建多个文件系统 的一个原因就是通过使用/etc/fstab文件中指定的mount选项来控制对它们的访问.
/etc/fstab文件的内容主要包括六项:
/dev/hda1 / ext3 defaults 1 1
/dev/hda5 /usr ext3 defaults 1 2
/dev/hda1 /home ext3 defaults 1 2
/dev/hda6 /var ext3 defaults 1 1
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext3 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
第一列:设备名或者设备卷标名,(/dev/sda10 或者 LABEL=/)
第二列:设备挂载目录 (例如上面的“/”或者“/mnt/D/”)
第三列:设备文件系统 (例如上面的“ext3”或者“vfat”)
第四列:挂载参数 (看帮助man mount)
对于已经挂载好的设备,例如上面的/dev/sda2,现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设备,remount 这个参数无效)#mount /mnt/cdrom/ -o remount,ro (改defaults为ro)为了安全起见,可以指明其他挂载参数,例如:
default 设置该安装选项为rw,suid(允许SUID和SGID执行),dev(允许字符和块专用设备),exec(允许二进制文件的执行),auto(允许mount -a),nouser(只有根用户能配置该文件系统,不允许普通用户挂载)和async(异步I/O)
nodev 不解释或允许在该文件系统上创建字符或块专用文件(设备文件),(不允许挂载设备文件)
noexec 在该文件系统上不允许二进制文件或脚本的执行,(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了!
ro 设置此文件系统为只读
user 允许除根用户以外的用户配置该文件系统.除非被明令撤销否则该选项会自动设置noexec,nosuid和nodev选项
nosuid,nosgid 不允许SUID或SGID对该文件系统产生作用(不允许有suid和sgid属性)
noatime 取缔在此文件系统内所有文件和目录上的访问时间更新,该选项在2.2.x版及其之后的内核中可以使用
第五列:指明是否要备份.(0为不备份,1为要备份,一般根分区要备份)
第六列:指明自检顺序. (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
在安装之前,请仔细考虑你的用户需要的访问类型,这样可以更好的对创建的系统提出要求.对于本地文件系统,考试下列这些选取mount选项的指导方针:
(1)用户主目录不应当成为SUID脚本和程序的发源地,而且也不应该拥有字符和块专用文件.
(2)任何文件系统如果拥有可被除根用户以外的人定入的目录,在最低程度上都应该使用nosuid选项./var文件系统就是这样一个文件系统,并且该文件系统对于你的系统至关重要.
(3)任何不需要被写入的文件系统(特殊情况除外)应当被安装设置为只读文件.
我们应对/var文件系统应用第二条指导原则,而对/home文件系统应用第一条指导原则.为了方便用户,我们还希望将user选项增加到/mnt/cdrom上,这样便可以允许非根用户在没有根用户干预的情况下安装CD-ROM.与user选项相联系的那些附加限制选项如nosuid,noexec和nodev应该为此提供足够的安全保障.
假设在/usr文件系统中拥有一个/usr/local/bin子目录,该子目录包含了那些被很多用户使用的可执行程序,如果这些可执行文件不会经常改变,你或许希望创建一个单独的文件系统并用ro选项对/usr/local/bi目录进行配置.可惜的是,如果确实这样去做了,那么每当需要修改/usr/local/bin或/usr/local/lib目录中的文件时,都要重新配置它的rw选项(最好是以单用户模式).在不出意外 的情况下,增强系统和网络的安全性.将会影响到性能或用户的方便性.
一个更安全的/etc/fstab表
/dev/hda1 / ext3 defaults 1 1
/dev/hdb4 sr/local/bin ext3 ro,nosuid 1 2
/dev/hdb9 sr/local/lib ext3 ro,nosuid 1 2
/dev/hda5 /usr ext3 defaults 1 2
/dev/hdb1 /home ext3 noexec,nodev,nosuid 1 2
/dev/hda6 /var ext3 nosuid 1 1
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext3 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0
none /proc proc defaults 0 0
1,加或不加auto,开机时会自动挂载;加noauto时不自动挂载,当执行mount -a的时候也不能挂载,只有通过手动挂载.
2,user 允许除根用户以外的用户配置该文件系统.
3,noexec 在该文件系统上不允许二进制文件或脚本的执行
Linux系统下MBR分区表的备份与恢复
[ 2008/08/26 10:33 | by selboo ]
备份MBR分区
1.使用fdisk -l 确定MBR位置
2.备份MBR
dd if=/dev/sda1 of=/root/mbr bs=512 count=1
3.恢复MBR
dd if=/root/mbr of=/dev/sda1 bs=512 count=1
4.恢复分区表
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
注:mbr大小512 所以bs=512 count=1
bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置
一.填空题:
1. 在Linux系统中,以 文件 方式访问设备 .
2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统.
3. Linux文件系统中每个文件用 i节点 来标识.
4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块.
5. 链接分为: 硬链接 和 符号链接 .
6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息.
7. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 .
8. 前台起动的进程使用 Ctrl+c 终止.
9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置.
10. 网络管理的重要任务是: 控制 和 监控 .
11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 .
13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限.
14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新.
15. 系统交换分区是作为系统 虚拟存储器 的一块区域.
16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统.
17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作.
18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和 子网掩码 等必要信息.
19. 唯一标识每一个用户的是用户 ID 和用户名.
20. RIP 协议是最为普遍的一种内部协议,一般称为动态路由信息协议.
21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 .
22. DHCP可以实现动态 IP 地址分配.
23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源.
24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心.
25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 .
26. Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 .
27. vi编辑器具有两种工作模式: 命令模式 和 输入模式 .
28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文件所有者 对该文件的权限.
29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) .
30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换.
31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序.
32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 .其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份.
33. CD-ROM标准的文件系统类型是 iso9660 .
34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo .
35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b .
36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat .
37. 设定限制用户使用磁盘空间的命令是 quota .
38. 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc .
39. 硬连接只能建立对 文件 链接.符号链接可以跨不同文件系统创建.
40. 套接字文件的属性位是 s .
41. 结束后台进程的命令是 kill .
42. 进程的运行有两种方式,即 独立运行和使用父进程运行 .
43. Links分为 硬链接和符号链接 .
44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux .
45. 管道文件的属性位是 p .
46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 .
47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename .
48. 进行远程登录的命令是 telnet .
49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 .
50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件.
51. Apache服务器进程配置文件是 httpd.conf .
52. 在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip .
53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt .
54. 可以在标准输出上显示整年日历的命令及参数是 cal -y .
55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 .
56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 .
57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 .
58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 .
59. 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup .
60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb .
61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 .
62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件.
63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件.
64. 在vi编辑环境下,使用 Esc键 进行模式转换.
65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成.
66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf /home/wang.tar.gz /home/stud1/wang .
67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 .
68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf 文件.
69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab .
70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录.
71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件.
72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 .
73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid .
74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R .
75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名.
76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 .
77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议(internet控制信息协议)来实现.
78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享.
79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问.
80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言. bash是Linux的缺省shell.
81. 用 >;>; 符号将输出重定向内容附加在原文的后面.
82. 增加一个用户的命令是:adduser 或useradd .
83. 进行字符串查找,使用grep命令.
84. 使用 * 每次匹配若干个字符.
85. /sbin 目录用来存放系统管理员使用的管理程序.