Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103678177
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-28 13:13:07

  出处:Unix爱好者家园unix-cd.com  
1、UnixWare 7.1.1中tmp文件系统的问题

创建了一个vxfs的文件系统,大小为300M,正常mount的时候显示为300M但是,我这样mount的时候显示却为2493548k bytes,为什么? 
mount -F memfs /dev/dsk/c0b0t0d0s11 /tmp 
??? 
答:
需要加-o swapmax=...(你文件系统实际大小,字节单位) 
不加这个参数,mount将会按所有swap交换区的大小分配你的memfs, 
如果交换区很大不加这个参数mount还会把系统搞死, 
所以对于memfs的mount一定要设置swapmax


2、Sendmail 8.12.8及以前版本缓冲区溢出漏洞 

UnixWare 7.1.3是Open UNIX8和UnixWare7.1.1的后续版本,它标志着自UnixWare 7.1.2被更名为OpenUnix 8.0.0后,UnixWare商标名的恢复使用,UnixWare是基于Intel架构和ADM处理器服务器最重要的UNIX操作系统。 

UnixWare 7.1.3是唯一既能运行UnixWare应用,同时又能够运行Linux应用的操作系统。在这模式下运行的Linux 应用,通常能获得比其它Linux版本更好的性能。 

Michal Zalewski发现Sengmail存在远程可利用漏洞,攻击者能够获得sendmail服务器控制权。由于一个类型转换变量,sendmail不能充分检验地址的长度。特定的emai可能触发堆栈溢出。 


受影响系统: 

UnixWare 7.1.3 
Open UNIX 8.0.0 

解决方案: 

下载相应的补丁程序: 

UnixWare 7.1.3:ftp://ftp.sco.com/pub/updates/UnixWare/CSSA-2003-SCO.23 

Open UNIX 8.0.0: ftp://ftp.sco.com/pub/updates/OpenUNIX/CSSA-2003-SCO.23 

参考: 

详细描述:

SCO : http://www.sco.com/support/security/index.html 

漏洞资料提供:

3、Openserver启动盘制作 
方法有三: 
(1)在windows下用gzcp:提示符下运行E:\images\gzcp E:\images\boot\install.img A:。其中A:为你的软盘符,E为你的光盘符。 
(2)在windows下用floppcp:提示符下运行E:\images\floppcp d/ A: /f E:\images\boot\install.img 
(3)在Unix下:root注册后,在机器上插入3.5寸软盘,并将系统软件光盘放入光驱,然后敲入下面的命令: 
#mount /dev/cd0 /mnt<回车> 
#dd if=/mnt/images/boot/N00 of=/dev/rfd0135ds18<回车> OK!

4、同一硬盘里如果SCO空间不足怎么使用Window没有用的空余空间? 

本方法也适用于硬盘大,但安装SCO时硬盘上预留有空余空间没有用完的情况。 

本法不适用于硬盘对拷ghost做出来的硬盘,原因在于: 
ghost目的盘中的SCO操作系统使用fdisk建立分区时使用的内核参数是ghost源盘的参数, 
这样fdisk会认为目的盘的物理空间和源盘相同,没有空余的空间来建立新分区 

1)、首先在硬盘其他window分区里用PQMAGIC分割出一部分空闲空间出来 
2)、在SCO里面运行fdisk创建一个UNIX分区,不要激活哦,它只用于mount 
分区起始位置及大小不要和当前已经有的分区交叉啊,否则后果自负 
3)、下面以IDE第1个硬盘为例啊, 
(对于IDE呢,/dev/rhd02~rhd04分别是第1块硬盘的2/3/4主分区, 
对于SCSI呢,/dev/dsk/0s2~0s4分别是第1块硬盘的2/3/4主分区, 
详情请看# man HW hd) 
如果你新建的分区是硬盘上的排第3个分区(前面有1个SCO和1个WINDOW了啊) 
这个次序可以从fdisk里看的哦,不要搞错把window枪毙了, 
那么使用 divvy -m /dev/rhd03 
系统会提示是否只建1个文件系统啊,可以直接回车, 
然后系统会提示是否手工调整啊,建议选Y调整啊, 
这样你又可以在这个新fdisk的主分区上最多再建7个SCO扩展逻辑分区了, 
当然每个逻辑分区大小你自己分吧 
4)、最后呢,你用scoadmin把它们都设为自动mount上, 
重启动后df -kv一看, 哇好多分区啊! 
5)、如果不过瘾,你还可以fdisk增加一个主分区,直到你fdisk不了为止(一个硬盘最多4个主分区哦), 然后重复上述从3开始的工作 


5、克隆的硬盘启动不了OpenServer的原因和对策
当使用ghost等克隆工具克隆出来的硬盘和源盘不一样的时候, 
很多朋友都发现有的克隆出来的硬盘引导不了OpenServer操作系统, 
屏幕上提示NO OS,本坛也常有帖子在问为什么。 

原因就在于OpenServer操作系统的引导模块过分依赖硬盘的几何参数(geometry), 
如果克隆出来的硬盘上的SCO分区起始位置即: 
柱面号(Cylinder)、扇区号(Sector)和源盘相同, 
那么OpenServer就能正确地被引导,否则将因找不到SCO的分区而提示"NO OS"。 

解决办法: 
1)、5.0.6a/5.0.7的源盘: 
根据国外一些SCO论坛的帖子讲, 
SCO针对5.0.6a/5.0.7发布的"Wd Driver Supplement"补丁解决了这个问题, 
在克隆前在源盘上使用custom安装这个补丁软件, 
那么再克隆它应该能够解决克隆硬盘NO OS的问题, 
即使硬盘几何参数不同,安装Wd补丁后引导模块也能按实际参数自动修正以正确引导。 
看SCO的说法,该补丁提供下列新功能: 
* All compliant PCI IDE controllers now recognized. 
* UDMA mode 6 (UDMA 133) now supported. 
* Improved ATAPI device recognition. 
* ATAPI CD and DVD writer devices now supported. 
* More readable and useful debug output. To turn on debug output, use 
the wd.debug=[option] bootstring, where [option] can be any of the 
following: 
i for IDE controller identification 
u for Ultra DMA configuration 
g for disk geometry calculations 
* Better disk geometry configuration. 
* IDE hard disks larger than 137GB now recognized as having 137GB of 
space. Previously these drives were seen as smaller, possibly as 
small as 2GB. 
* When kernel debugger is enabled, driver no longer enters the debugger 
on certain unusual conditions. 
* Driver no longer panics when attempting to access a non-existent ATAPI 
device. 
5.0.7的用户需要注意一点,如果你准备安装UpdatePack1, 
那么需要先装UpdatePack1再装Wd Driver Supplement, 
Wd Driver Supplement的VOL安装包(用custom安装)下载地址: 
ftp://ftp.sco.com/pub/openserver5/drivers/OSR507/btld/wdsupp 

另外补充一点,SCO针对无法安装5.0.6/5.0.7的新型硬盘提供了wd btld补丁: 
wd补丁在5.0.6a下的boot引导串是link=wd506, 
在5.0.7的boot引导串是link=wd,下载地址都是: 
ftp://ftp.sco.com/pub/openserver5/drivers/OSR507/btld/wd/ 

2)、对于5.0.5及其以下版本的OpenServer,SCO没有提供补丁, 
目前只能找H(heads)和S(Sector)参数和源盘完全相同的硬盘作为克隆目的盘。 

3)、老外们都很推崇Lone-Tar或BackupEDGE称为"SuperTar"的系统备份恢复工具, 
支持已安装的操作系统在IDE硬盘之间,IDE和SCSI硬盘之间,SCSI硬盘之间的平滑移动, 
包括root等逻辑分区大小调整等高难度动作都有完美的支撑, 
但是价格对于个人用户看来不菲,在老美那里还标$300,不知国内有无代理商。 
 

6、ghost硬盘模式对拷出来的IDE目的盘空间大于源盘空间的情况下如何让SCO使用全部的硬盘空间? 
本方法在SCO5.0.5/5.0.6/5.0.7上均已测试通过: 

1、首先确认ghost目的盘实际的C/H/S值(CMOS设置LBA模式Auto Detect硬盘检测出来) 

2、引导启动ghost的目的盘上的SCO操作系统进入单用户下 
# dkinit /dev/rhd00 
第1块IDE是rhd00,第2块是rhd10, .... 
有些OS可能无法执行dkinit命令,用dparam也可以,见后面的有关说明。 

使用dkinit后将提示: 
Hard Disk Drive 0 Configuration 
1. Display current disk parameters 
2. Modify current disk parameters 
3. Select default disk parameters 
Enter your choice or q to quit: 选择2 
Disk Parameters value
--------------- ------ 
1. Cylinders 源盘参数 
2. Heads 源盘参数 
3. Write Reduce 
4. Write Precomp 
5. Ecc 
6. Control 
7. Landing Zone 源盘参数 
8. Sectors/track 源盘参数 
Enter a parameter to modify or q to return to the main menu: 
分别选1,7,2,8将其改为目的盘的实际参数 
其中第1、第7项为磁道个数(建议比实际数-1),第2项为磁头个数,第8项为扇区数 
改完后输入q退出 

有些OS可能无法执行dkinit命令,这时候用dparam也可以: 
首先运行# dparam /dev/rhd00 
查出当前内核里的硬盘参数设置,依次分别是: 
cyls heads wrt_reduce precomp ecc control landzone sectors 
注意landzone(硬盘全部的磁道数)和cyls(系统使用的磁道数)一般是相同的值,除非源盘安装SCO时没有用完所有的硬盘空间。 

然后按照实际的硬盘参数设置内核参数: 
#dparam /dev/rhd00 new_cyls new_heads wrt_reduce precomp ecc control new_cyls new_sectors 

这样一样能把内核的硬盘参数修改成实际需要的值. 

3、运行fdisk将整个硬盘划为UNIX。 
# fdisk 

1. Display Partition Table 
2. Use Entire Disk for UNIX 
3. Use Rest of Disk for UNIX 
4. Create UNIX Partition 
5. Activate Partition 
6. Delete Partition 
Enter your choice or q to quit: 选择2(对于高手,也可选择4建立1个新unix主分区来实现更复杂的要求) 
Current Hard Disk Drive: /dev/rhd00 
Total disk size: xxxxx tracks (xxxx reserved for masterboot and diagnostics) 
Warning! All data on your disk will be lost! 
Do you wish to continue? (y/n) 不要害怕,按Y继续,数据不会丢的 
Current Hard Disk Drive: /dev/rhd00 
Total disk size: xxxxx tracks (xxxx reserved for masterboot and diagnostics) 
这样执行完后,在没有损坏ghost出来的目的盘操作系统的基础上,就可用硬盘的全部实际空间了 

4、为了使用新的空间,还要在新增的空间上新建文件系统,千万不要去修改已有的文件系统boot/swap/root哦! 
# divvy 

显示出逻辑分区表 
n[ame] Name or rename a division. 
c[reate] Create a new file 
system on this division. 
t[ype] Select or change 
filesystem type on new filesystems. 
p[revent] Prevent a new file system 
from being created on this division. 
s[tart] Start a division on 
a different block. 
e[nd] End a division on a 
different block. 
r[estore] Restore the original 
division table. 
Enter your choice or q to quit: 
建议修改原分区表里的recover分区的s和e值, 把它还挪到分区表最后的位置,大小不要变, 
然后分别依次选择n、s、e、c四项内容对未使用的新空间进行新分区的创建操作, 
最后选i建立新文件系统 

5、让新增的文件系统可自动在开机时刻mount 
#mkdev fs 
Filesystem Initialization Program 
This program performs maintenance 
tasks required to add or delete 
an existing filesystem. Would you like to: 
1. Add a new filesystem to system. 
2. Remove a filesystem. 
Select an option or enter q to quit: 选择1增加 
Enter a device name and press 
< Return > or q to quit: /dev/你刚刚建立的新分区名称 
Enter a directory name and press 
< Return > or q to quit: 输入你想mount到的安装点目录名 

好了,系统重启后你就会发现df -kv 多了一行哦,在新增的文件系统上去放你的东东吧 


7、非匿名ftp用户限制用户只能在自己目录中的办法 

1、修改/etc/passwd,把需要限制的用户的根目录后加上/./ 
例如:原来的目录为/usr/test, 那么改成/usr/test/./ 
看起来改后的/etc/passwd该用户的内容像这样子: 
代码: 

test:x:215:50::/usr/test/./:/bin/sh 



2、建立并修改相关文件 
登录进入root帐户 
代码: 

# su - test(你的用户名) 
$ mkdir bin 
$ cp /bin/ls bin 
$ mkdir lib 
$ cp /lib/libprot.so.1 lib 
$ mkdir -p usr/lib 
$ cp /usr/lib/libc.so.1 usr/lib 
$ cp /usr/lib/libsocket.so.1 usr/lib 
$ mkdir etc 
$ cp /etc/passwd etc 
$ cp /etc/group etc 
$ cd etc 
$ vi passwd 把不用ftp的用户都删了 
$ vi group 把不用ftp的组都删了 


# exit 退回到root用户 
# cd /etc 
# vi inetd.conf 
找到ftp那行,首先确认行首没有被#号注释掉,然后在末尾加上-a 
看起来修改后的inetd.conf中ftp那行内容像这个样子: 
代码: 

ftp stream tcp nowait root /etc/ftpd ftpd -a 


存盘退出激活inetd.conf参数: 
代码: 

# ps -e | grep inetd 记下inetd的进程号 
# kill -HUP inetd进程号 


# vi ftpaccess 
找有无guestgroup的行, 
有则先确认行首无#号后把test用户的组名(你的用户所属的组名)加上,用空格分隔名字 
无则加上一行,看起来像这个样子: 
代码: 

guestgroup group(你用户的组名) 


x!强制存盘退出(该文件默认方式是只读) 
建议给此类ftp的用户单独建立一个组,以便日后的安全设置 

3、对于不想用户修改内容的目录或文件,把写权限用chmod -w 去掉即可 
对于不想用户取走的文件或不想用户访问的目录,chmod -r把读权限去掉 

4、如果想让test用户只能ftp不能telnet, 
那么现在可以开始做相应的修改了: 
首先/etc/shells里加入一行/bin/false后: 
代码: 

/etc/shells文件内容实例: 

/bin/csh 
/bin/sh 
/bin/ksh 
/usr/bin/scosh 
/bin/false #加入是为了让/bin/false成为系统认可的shell, 无则ftp会提示错误 


然后再把/etc/passwd该用户的shell改为/bin/false即可 
看起来修改后的/etc/passwd该用户的内容像这个样子: 
代码: 

test:x:215:50::/usr/test/./:/bin/false 
阅读(451) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~