社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 112228阅读
  • 89回复

★ Linux&Unix→专辑 ★

楼层直达
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 15 发表于: 2007-05-04
引用
第二节.安装过程


引用
1.启动机器:无论从光盘启动还是从软盘启动,机器会出现下列安装提示符:
SCO UNIX Openserver(TM)5.0.X
Boot: *你可以在此输入?查询可启动的地址或打回车。

2.安装驱动:如果你的机器有Scsi卡或阵列卡或网卡,你需要在此输入驱动包的地址。
如:defbootstr link=”amird slha” sdsk=amird(0,0,0,0) Srom=wd(0,0,0,0)
其中,link=“amird slha”指出安装时需要联入的驱动程序名称(BTLDs,bootime loadable
driver),sdsk=amird(0,0,0,0)指出系统根盘的位置,几个数字分别为SCSI的适配器号
(adapter number),总线号(bus number),SCSI ID,逻辑单元号(lun),Srom=(0,0,0,0)指
出的是EIDE(IDE)CDROM的位置。在这种情况下,(n,n,n,n)分别代表(IDE Controller,
Master/Slave,LUN,BUS),合*值为0和1。在上面的例子中,IDE Controller:0
=primary,
Master/Slave :0=master,LUN从:0(LUN for an EIDE/IDE device is always 0),BUS:0(BUS
for an EIDE/IDE device is always 0).

3.开始安装:

⑴.系统检测硬件,等待出现下列提示:

⑵.Press to begin installation。回车。

⑶.安装介质的选择:

Media device to be used:IDE CD ROM *按空格键选择另外的介质
IDE Controller:Secondary *按空格选择Primary
Master or Slave:Master *按空格选择Slave
Accept above choice回车
注:如果只出现Media device to be used,而不出现下列两项,则需要组合硬盘及光驱的接*,建议都挂主(Master)。

⑷.键盘类型的选择,直接Accept above chioces

⑸.许可证:

License number:
License code:
License data:
Accept above choices 回车

⑹.安装类型的选择:

Upgrade(升级) Fresh(全新安装)回车选OK
⑺.配置系统:
System name:
Domain name:
Security profile:Traditional
Time zone:China Standard Time *按空格选择此项
Languge:Standard C (English)
Accept above choice

⑻.系统初始化:
……………………………………
……………………………………
……………………………………
……………………………………
Database services:YES *如果你的机器要运行大型数据库按空格选YES
Accept above choices

⑼.硬盘的配置:

Hand disk setup:UNIX only :Bad Tracking ON
Optional software:SCO Openserver Enterprise System,265MB
Accept above choice *如果你的硬盘没有其它系统打回车
注:如果你的硬盘安装了多系统或你不打算把整个硬盘给UNIX,就要设置硬盘。
亮条移到上面,回车出现:
1.Preservation
2.UNIX only
3.Customize
4.interactive
选4
1.Display patition table
2.Use entire disk for unix(整个硬盘给UNIX)
3.Use rest of disk for unix(把剩余空间给UNIX)
4.Create unix patition(创建UNIX分区)
5.Active(激活刚分的区)
6.Delete(删除)
7.Create(创建)
选3或4,创建以后别忘了激活刚创建UNIX分区

⑽.选择基本配置:

Network card: *按空格选择
Network address: *按空格选择
Video and graphics:VGA
Mouse:High Resolution Keyboard Mouse *按空格选择
Email system:MMDF *按空格选择其它
Accept above choices

⑾.设置root用户口令

⑿.扫描硬盘的坏磁道

⒀.建立文件系统

⒁.安装进程

⒂.重新启动机器

4.安装完毕
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 16 发表于: 2007-05-04
引用
第三节.基本配置


引用
1.重启机器。

2.系统出现:
SCO OpenServer TM Release 5
Boot : *回车

3.系统出现:
INIT:SINGLE USER MODE
Type CONTROL-d to proceed with normal startup,
(or give root password for system maintenance): 输入root密码或按CONTROL-d

4.按CONTROL-d系统出现:
SCO Openserver(TM)Release 5
Login:root
Password:

5.登录机器,系统提示:#

6.配置鼠标:
1) mkdev mouse
2 )add a mouse to system
3 )ps-2style keyboard mouse
4 )high resolution keyboard-mouse 注意依次选择:

7.配置显卡: Mkdev graphics

8.配置网卡:
1).通过custom安装驱动
2).Install new
3).Netconfig
4).Install new lan adapter

9.启动X Window:
配置完鼠标和显示器后,#下键入startx就可以进入图形界面了。执行scologin enable 则开机自动进入x-windows的登陆界面。

10.关机*作:
1).一般用户:exit;delete键;ctrl+d键
2).超级用户:shutdown;reboot;haltsys;init 0。
3).由多用户模式变为单用户模式:init 1
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 17 发表于: 2007-05-04
引用
第四节.基本操作


引用
1.Unix认识
UNIX发展的历史有点悠久,所以成熟而博大。与历史的兼容,他里面保留了一些古老的命令和文件。热心的扩展使得她对不同的人有不同的答案。在UNIX中,很多问题不是只有唯一的解决办*。这要看你使用的是什么时候,谁的参考书。其实这并不重要,重要的就是你找到了你要的答案。因此,我认为把UNIX摸透很难,也没有必要。因为,即使你精力充沛,你的记忆力恐怕也不会给你面子。掌握基本命令、系统的结构、设计思想是非常重要的,需要的时候再去找你的答案吧!当然,这是我个人的观点,你也许能找到适合你的更好办*。
UNIX家族产品很多,但其一般用户命令均符合POSIX标准。掌握这些基本命令,我们就可以在这个产品平台上开展工作。下面简要介绍SCO OPENSERVER 部分常用命令,其中大部分是POSIX标准的。掌握这些命令的关键是如何从这些命令出发找到自己需要的命令,学会使用联机帮助就是很好的办*。

2.命令执行环境

UNIX提供给用户执行命令的环境,称之为SHELL。有sh,ksh,csh等,其中sh为基本SHELL,其余为根据不同用户习惯扩展的。
用户登录后,系统将执行配置文件设置用户工作环境。如果没有在配置文件中exec一个程序或自动退出。用户将得到命令行提示符。此时用户的shell一般对应于/etc/passwd中的设置。
不同SHELL的配置文件为:
sh.profile
ksh.profile .kshrc
csh.login .cshrc

注意点:
用户登录后虽然得到指定的SEHLL环境,只是说明在这个环境中你可以执行这个SHELL的特有命令,在执行另外一个SHELL程序时如无特殊指定(见SHELL编程),被执行程序的环境为sh。
环境变量虽在不同的SHELL中有不同的设置方*,但工作环境的变量,所有运行程序均可使用。
执行程序中设置的环境变量,除非这个程序是被(. dot)调用的,程序执行完后不会带到工作环境中来。

输入输出和联机帮助

输入输出重定向
在UNIX的SHELL环境中,其输入输出的重定向的功能非常有用。其中可以使用标准输入输出设备,0表示标准输入、1表示标准输出、2表示标准错误输出。
1).> filename输出重定向(更新方式)。
将输出定向到文件,文件为更新方式。
2).>> filename输出重定向(追加方式)。
将输出定向到文件,文件为追加方式。
3).< filename输入重定向。
将文件的内容作为执行程序的输入。
4).<< word输入重定向。
Word为输入结束标志符,将后续输入的内容作为执行程序的输入。输入以word或control-D结束。
5).| 管道。
将前一个命令的输出作为后一个命令的输入。

UNIX中提供了很详细有用的帮助,使用man 命令可以去看你所需要的命令的帮助。
Man的基本用*:man [段节] 主题
man –k 关键词
段节指主题所属的范畴,有:

ADM 系统管理命令
C 用户命令
F 文件格式
HW 硬件属性
M 其他的
TCL SCO Visual Tcl(TM) commands
只有一个主题有多个范畴的帮助时,才须指定你需要的段节。
Man –k 可以显示帮助文档中出现这个词的所有主题。
技巧:

我们需要找一个想要的命令时,man一下我们知道的命令。从相关命令出发就可找到答案。Man –k 搜索也是很好的办*。
在XWINDOW的HELP中找答案会更方便、详细。

!警告:不要随意执行你不知道是用来做什么的命令!不要使用 .*做参数

3.基本命令:

env显示设置命令执行环境
env [ - | -i ] [ name=values ] ... [ command [args] ]
date显示和设置时间
date [ -u ] [ +format ]
date [ -u ] [ MMDDhhmm[YY] | -t [CC]YYMMDDhhmm[.SS] ]
clear清除当前屏幕
grep找到与字符串匹配的行
wc计算字、行数、字节数
cat显示文件内容
more分屏显示文件内容


文件系统*作

ls列文件名
cp拷贝文件
mv移动文件
rm删除文件
cd目录切换
mkdir建目录
rmdir删除目录
pwd显示当前所在目录
find搜索文件
sort对文件进行排序
cut对文件进行列切割
paste对文件进行列组合
ln文件或目录链接
进程管理

ps显示当前进程状态
kill杀死进程


用户和权限管理
useradd添加用户
userdel删除用户
usermod修改用户
userls列可用用户
passwd修改口令
chmod修改文件目录权限
chown修改文件目录属主
who显示当前在线用户
finger显示用户信息
设备和终端管理
mkdev 设备管理
hwconfig显示当前设备信息
stty设置终端模式
enable打开终端
disable关闭终端
IPC管理
Ipcs显示IPC状态
Ipcrm删除信号量集、消息队列、共享内存


网络

telnet登录远程服务器
ftp文件传输
route路由管理
netstat显示网络状态
traceroute跟踪网络访问路由
netconfig网络配置管理
/etc/hosts网络主机名文件
/etc/services网络服务端口文件
/etc/inetd.conf网络服务文件
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 18 发表于: 2007-05-04
引用
第五节.机器启动的认识


引用
1.Tcp/Ip的启动:

⑴.TCP/IP受/etc/tcp脚本文件的控制,在你进入多用户状态时启动,在你进入单用户状态时关闭/etc/tcp文件*作内容:他是一个脚本文件,其功能如下:通过配置支持TCP/IP所必须的流设备来启动或关闭TCP/IP,并启动或关闭与TCP/IP相关的daemon.

⑵.以ROOT登录,使用命令行:TCP START或TCP STOP手工启动或关闭TCP/IP。该文件与etc/rc2.d和/etc/rc0.d目录下的文件都有链连关系,使得/etc/tcp在系统进入或退出多用户状态时,可以运行START或STOP选项。无论你通过Network Confugration Manager 来增加还是删除一个网络接口,都会在脚本中增加或删除 ifconfig命令,修改/etc/tcp文件,同时导致/etc/strcf文件也被修改。下面列出了启动TCP/IP时系统的工作步骤:
. Initializes STREAMS and sockets  
. Sets the host name  
. Configures Interfaces  
. Starts network daemons  
. Undoes all of the above on shurdown
⑶./etc/tcp的*作:TCP/IP核心支持的配置仅需一次即可完成。主要包括TCP/IP所需的STREAMS模块栈的设置。系统核心在引导时即设置STREAMS栈。前提条件即是在BOOT:提示符下不用 ksl.disable引导串。设置STREAMS栈时,/etc/tcp脚本文件会调用slink命令,在进行任何其他设置或启动之前先建立STREAMS栈。

2.UNIX5的启动:

㈠.UNIX5 基本可分为六步:

1)、PC机的BIOS将Master Boot Block 装入内存。(读取硬盘的Track 0 , Sector 0处的信息
2)、Master Boot Block将分区引导块(boot0)装入。(读取活动分区的sector0处的信息)。
3)、若 Unix 分区是活动的,则继续装入boot1。
4)、boot1装入/stand/boot 。(读取Unix的可引导文件系统区的信息,一般为boot文件系统)
5)、/stand/boot负责执行所有在.bootrc中发现的命令,并读取/stand/etc/default/boot 文件中的参数.
6)、/stand/boot 显示Boot:提示符,引导成功。

㈡.UNIX5 启动的说明:

1)、/stand 是UNIX5缺省的引导系统/dev/boot的挂接点。一般标记为“read only”。若想修改其中内容,须将其卸载后重新挂载。
2)、.bootrc is especially useful in network installations , where a packet driver and tftp driver may have to be load before user can load a kernel from network .
3)、在Boot:后可以使用外部bootos 程序。Bootos 可以识别的标识有:ccpm (Concurrent CP/M)、dos、dos_12/16/32、dos_ext、nt、os2、os2.hpfs、unix、xenix等。
可用bootos ?列出现有已安装文件系统。Bootos 后跟分区标识或分区号即可引导对应系统。
4)、unix5中一般有四个核心,存放于/stand目录中。除unix、unix.old外,另两个核心为unix.install(安装盘上的原始核心备份)、unix.safe(第一次重连核心后的备份)。


3.UINX5常用的几个命令主要有:

一)、 PS

我们可以用ps 的 – l 选项,得到更详细的进程信息.
?; F(Flag):一系列数字的和,表示进程的当前状态。这些数字的含义为:
00:若单独显示,表示此进程已被终止。
  01:进程是核心进程的一部分,常驻于系统主存。如:   
    sched、 vhand 、bdflush 等。
02:Parent is tracing process.
  04 :Tracing parent's signal has stopped the process; the parent is waiting ( ptrace(S)).
  10:进程在优先级低于或等于25时,进入休眠状态,而且不能用信号唤醒,例如在等待一个inode被创建时   
   20:进程被装入主存(primary memory)
   40:进程被锁在主存,在事务完成前不能被置换   e
?; S(state of the process )
O:进程正在处理器运行 
  S:休眠状态(sleeping)
R:等待运行(runable)   
I:空闲状态(idle)
  Z:僵尸状态(zombie)   
  T:跟踪状态(Traced)
B:进程正在等待更多的内存页
?; C(cpu usage):cpu利用率的估算值 

二)、 Sar:统计单CPU系统的系统活动情况

Cpusar:多处理器系统中单个处理器的活动情况
Mpsar:多处理器系统中处理器的总体活动情况
?; Sar -u:检查是否有逃逸进程大量占用CPU
此命令的显示有四个字段,含义如下:
%usr:执行用户进程的时间
%sys:执行系统进程的时间
%wio:等待完成I/O的时间
%idle:空闲时间
显示结果分析说明:
1) 一般情况下,%usr与%sys的值基本相等
2) 在一般的多用户系统中,%idle通常大于40%
3) 若%wio经常>15%,意味着硬盘有可能会造成瓶颈
4) 若%idle经常小于30%,意味着处理器能力较弱
5) 若%idle经常小于10%,表明处理器负担过重,或者存在逃逸进程
6) 若%idle接近于0,并且%sys又远远高于%usr,则可能是因为内存短缺引起了大量的swapping和paging
?; Sar -p:检查系统中是否有过多的等待进程
此命令有四个相关字段:
runq-sz:内存(memory)中可以运行的进程数
%runocc:进程进入内存等待的概率
swpq-sz:对换区(swap)中等待运行的进程数
%swpocc:进程进入swap等待的概率
显示结果分析汇总如下:
1) 若runq-sz经常大于2并且%runocc经常大于90%,意味着处理器负载过重
2) 若%swpocc不为0,表示系统已经置换出了进程。可以采用增加内存或减少缓冲的方*来减少swap和paging。
?; 自动统计程序:
对系统运行状况的判断不能依赖于某个特定时期的数据,它需要一个长期的积累和收集的过程。Unix5提供了两个基于月的自动统计程序sa1(以二进制形式收集、存放于目录/usr/adm/sa中,以sadd为文件名,dd是一个数字,表示当月第几天)、sa2(以可读文本形式存放在目录/usr/adm/sa中,文件名为:sardd)。这两个命令可以通过crontab启动。相关文件位于/usr/spool/cron/crontabs下sys和 root。
?; 激活自动记录:
/usr/lib/sa/sar_enable -y
?; 显示记录内容:
sar –q -f /usr/adm/sa/sa10
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 19 发表于: 2007-05-04
引用
第六节.软件安装


引用
1.安装方法

1).custom
2).Install new

3).dd if=/dev/fd0 of=/mnt/super *(super为新建的文件)
4).mv super VOL.000.000
5).Install new
6).选择安装介质。

2.删除方法:

1).custom
2).remove
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 20 发表于: 2007-05-04
引用
第七节.高级进阶


引用
1.问题:我改了 hosts 文件,譬如: 127.0.0.1 localhost改成: 127.0.0.1 local 不重起系统,怎样让它生效?
答:# tcp stop
# tcp start
建议:好多地方要用到本机的反馈地址的,建议不要修改!!!

2.问题:我想修改主机名,如何修改?
答:如果想修改主机名,用uname -S 主机名。

3.问题:怎么看我的SCO是多少用户?
答:uname -X
在liences manager中也可以看到!!
uname -A 更好

4.问题:如何使可以访问软驱和光驱?
答:访问软驱:#mount /dev/fd0135ds18 /mnt
#cd /mnt
/mnt下的内容就是软盘的内容
#umount /dev/fd0135ds18
访问光驱:#mount /dev/cd0 /mnt
#cd /mnt
/mnt下的内容就是光驱的内容
#umount /dev/cd0
软去考出和考入 c 文件还可以用doscp

5.问题:系统开发包(开发系统)在何处,怎么找到,如何安装?是用系统盘引导系统安装,还是其他方式安装?
答:就在你的光盘上,用custom安装。在ROOT下:scoadmin->soft

6.问题:我gzip压缩软件,应该有unix版的,因我对*.tar.gz解压后文件以远大于软盘容量,无*tar进unix系统。我应到那里下载gzip,应怎样安装?恳请帮助!
答:ftp://sdccf.mine.nuftp://ftp2.cal...ware/osr5/vols/

7.问题:SCO UNIX 5.0.5 装了开发系统,再装网卡驱动。PING 自己通,PING 别人不同,这和安装开发系统有关吗?怎样解决?
答:IP地址在同一个网段吗?如是,网线接*对吗?不在一个网段上要加路由的!!

8.问题: 如何构建WEB服务器?
答:Internet/Intranet的网络应用过程中,Web服务器的建设必不可少,而国内的企事业单位在组网方案中多考虑向Intranet靠拢,构建自己的Web服务器,利用其中的WWW、E-mail等服务提高办公效率。在国内,SCO UNIX作为一个技术成熟的商用网络*作系统,广泛地应用在金融、保险、邮电等行业中。其自身内建了丰富的网络功能,自SCO OpenServer 5.0版以后,各项网络服务内容大大加强,加上其良好的稳定性和安全性,无需追加任何投资完全可以配置成企业内部的Web服务器,利用各客户端(Win 9x)的浏览器软件即可实现WWW的各项功能,是充分利用已有投资、降低成本的好办*;UNIX Web服务器在一些商业网站中被成功地使用,如果你熟悉SCO UNIX,可以考虑选用SCO UNIX网络*作系统建立企业级Internet Web服务器。
本文以SCO OpenServer 5.0.5为例,介绍在已有办公网的基础上构建企业网Web服务器的方*。在A网段中构建一个SCO UNIX Web服务器(IP地址:205.100.100.52),在该局域网内客户机*作系统是Win 95/98/NT,浏览器为IE,这样具有良好的网页编辑环境和浏览界面(当然,也可以选用Linux环境下的网页浏览环境)。其中,有一台Win 9x客户机(IP地址:205.100.100.170)具有远程管理Web服务器和上传网页的功能;在广域网内的另一个B网段,有一些Web浏览的客户机,其中有一台Win 9x客户机(IP地址:204.1.191.2)也设置为具有远程管理Web服务器的功能。

1).Internet Manager软件包的安装

2).SCO OpenServer 5.0.5系统的安装及网络配置在此就不讲述了,只是用户需要注意在安装过程中选择缺省软件包安装,这样该系统就包括了Intranet/Internet的Web服务功能。如果没有选择缺省软件包安装,就要安装Netscape Communicator (Ver 4.0.5b)和SCO OpenServer Enterprise System Internet FastStart
(Ver 5.0.5m)软件包。具体步骤是插入SCO OpenServer 5.0.5的系统安装光盘,用#scoadmin→software命
令,选择安装光盘中的上述两个软件包进行安装,安装完毕,重新启动主机。

3).WWW服务器远程管理的设置
  虽然SCO OpenServer 5.0.5在主控台的图形界面中提供了管理WWW服务器的功能,但是对WWW服务器远程管
理的设置,使管理员能够更方便灵活地通过远程客户机维护WWW服务器。在这里WWW服务器IP地址为:
205.100.100.52,WWW服务器远程管理的客户机IP地址为:205.100.100.170,WWW主页存放在目录/usr/www下 (系统缺省WWW的主页目录为/usr/internet/ns_httpd/docs)。

4).Internet Manager配置:用root 登录SCO UNIX主机,编辑/usr/internet/admin/access/site文件,在文件 中加入远程管理服务器的本地客户机IP地址:205.100.100.170。编辑/usr/internet/admin/conf/httpd.conf文件,将“ServerName localhost ”一行改为 “ServerName 205.100.100.52”。

5).重启主机,更新配置。

6). Netscape FastTract Server 的配置:用root 登录,编辑/usr/internet/ns_httpd/admserv/ns-admin.conf 文件,将“ServerName scosysv.ccb”一行改为“ServerName 205.100.100.52”;将“Addresses 127.0.0.1” 一行改为“Addresses 205.100.100.170”。
进入/usr/internet/ns_httpd/httpd-80目录,运行stop,停止http服务管理程序;

7).远程启动 Internet Manager
  在windows 95/98/NT客户机启动IE浏览器,在地址栏输入服务器的IP地址和Internet Manager的端口号(615) 及首页文件名——http://205.100.100.52:615/mana/mana...首次登录时可使用系统默认的Internet Manager的管理用户“admin”和缺省口令“root”,登录后进入 Internet Manager的界面。
  系统显示了各种服务内容,单击“Web”按钮,进入“Netscape FsatTrack Server”的管理入口,选择超
链结Netscape FastTrack Server (port 80),出现管理界面的登录对话框,输入admin用户名和缺省口令
root,成功登录后进入Netscape FastTrack Server 2.01的管理画面。

8).对Web Server Manager的配置进行修改
  在管理界面上一排选项中,单击System Settings,再通过选择“Network Settings”、“performance tuning” 等选项,可对服务器主目录、服务器名、httpd的监听端口号(缺省为80)、服务器的进程数等参数进行设置。在管理界面上一排选项中,单击Content Mgmt,再单击左边“Primary Document Directory”,在正文区的Primary Directory框中,输入将存放WWW主页的主路径名“/usr/www”;如果在主文档目录中需要为新用户myweb建立一个目录 ,那么一定要对所建立的目录设置访问控制权限。

  #cd /usr/www

  #mkdir myweb

  #chown nouser myweb

  #chgrp nouser myweb

  #chmod 755 myweb

  进入Internet Manager的界面后,单击System Settings,再单击左边“Document preferences”,可增加或修改缺省首页HTML文件名,点击OK按钮,选择“save and apply”,使修改有效。该系统缺省首页HTML文件名为index.html、home.html。

  进入Internet Manager的界面后,点击Security,选择Set Internet Manager Password,可修改admin的口令;也可以用root身份登录,在字符模式下键入/etc/internetpw来进行。

进入Internet Manager的界面后,点击Security,选择Control Access from Remote Sites,输入204.1.191.2,这样可以增加一个远程管理Web服务器的客户机。该方*比在UNIX字符环境下编辑/usr/internet/admin/access/site 文件更加方便快捷。

  Web服务器设置完成后,将网页上传到WWW主页的主路径/usr/www下,系统缺省首页文件名为:index.html,在SCO UNIX系统中,文件名是严格区分字母大小写的,所以上传到UNIX主机中的网页文件名的字母大小写有可能和Win 9x上的不同。网页上传完成后,这样在客户机上就能浏览到SCO UNIX系统中Web服务器上的网页了。

9.问题:机器上如何安装开发系统?
答: 放入安装介质, custom->Software->Install New->CD-ROM-> Sco Openserver Development Sys-tem 输入系列好!!

10.问题:如何添加网关和DNS服务?(unkonwn host name)
答:route add default xxx.xxx.xxx.xxx
答:网关需要在/etc/rc2.d/目录下的S打头的文件中加入
route add default xxx.xxx.xxx.xxx 1
这么一行,要不然每次启动后都要在#?葱幸淮?
添加DNS服务:vi /etc/resolv.conf 内容为nameserver xxx.xxx.xxx.xxx ,既DNS地址。

11.问题:如何启动时自动添加网关?
答:可以在/etc/rc2.d目录下用vi创建一个名为S10route的文件,内容为:
route add default xxx.xxx.xxx.xxx 2 其中xxx.xxx.xxx.xxx为网关。

在vi /etc/tcp 找到route 那行修改一下岂不更为简单?在ifconfig后。在/etc/tcp文件里面添加也可以。
在/etc/rc中更方便
SCO UNIX环境下自动增加网关的两种方*:
1).方*一:编辑产生一个/etc目录下的gateways文件。 以root注册。

#cd /etc

#vi gateways

在该文件中增加以下语句:

net目的网络gateway网关地址metric values [passive/active]

  其中values表示一个到达目的网络所经过的路程段的数目即跳数。passive,active表示 网关为被动的或主动的。例如,笔者单位局域网上的unix主机要访问上级行100.88.1.0局域 网段,可用如下语句:

net 100.88.1.0 gateway 100.88.198.1 metric 2 passive

  其中100.88.198.1是本单位路由器的局域网IP地址。同样要访问别的分行的局域网可按 上述方*增加相应的语句。

2).方*二:编辑产生一个/etc/rc2.d目录下以大写S开头的文件如S96gateway。

  我们知道,在UNIX中有几种运行级,如运行级0表示系统停机状态,运行级1表示系 统管理状态,运行级2是系统常规运行级即多用户状态,而每个运行级都对应一个/etc/rcn .d目录。如运行级2对应/etc/rc2.d目录,这个目录包含一些shell文件,unix系统启动进入 多用户状态自动执行这些文件中的命令,而且这些shell文件名具有如下格式:Snnname。S 表示系统进入这个运行级需执行该文件以启动文件中指定的进程;nn是一个00-99的数字, 该数字是这个进程被启动的顺序号;name文件名,根据这一特点,我们可以编辑产生一个文 件如S96gateway达到机器启动自动加入网关的目的。

以root注册。

#cd /etc/rc2.d

#vi S96gateway

在该文件中,增加以下语句:

route add net目的网络 网关地址 跳数

如前例为访问100.88.1.0网段,上述语句为:

route add net 100.88.1.0 100.88.198.1 2

  其中100.88.198.0是本单位路由器IP地址。访问不同的网络,可相应增加对应的语句。 如果局域网上仅有一个路由器,可指定其为缺省网关,方*是在S96gateway中加入:

route add default 网关地址 1

  如路由器地址为:100.88.198.1上述语句就是:

route add default 100.88.198.0 1

12.问题:如何启动X Windows?
答:安装完后,如何进入sco unix图形界面装完后要先配置鼠标和显示器,startx就可以进入图形界面了
执行scologin enable 则开机自动进入x-windows的登陆界;在/etc/default/中 #vi boot,在最后一行添加TIME=3保存,重启。下次开机就会直接进入图形界面。

13.问题:如何修改主机的域??
答:用vi 直接修改 /etc/hosts,不REBOOT使修改后的域生效!!可以在运行netconfig时修改。

14.问题:我能Ping得通别人的机子,但别人却Ping不通我的机子,还有,我能Ping 得通所有局域网内的机子,但就是Ping不通INternet上的主机。 (Ping IP地址也不行,提示,not router)
答:你PING不通INTERNET是因为你没设好网关, 网关可以用route命令设置的 。你的电脑能PING通其他机子,其他电脑不能PING能你的电脑倒是很奇怪,不知道你是不是PING电脑的IP地址的,还是机器名的?
检查一下自己机器的 /etc/hosts 还有在/etc/tcp文件中增加一条语句 route add default 网关 1 或者在/etc/rc2.d目录下创建一个文件,名为S10route,内容为:
route add default xxx.xxx.xxx.xxx 1
其中xxx.xxx.xxx.xxx是网关。

15.问题:unix下如何解.tar.gz文件?
答:一般来说,我们都会顺便将.tar档用compress压缩成.Z档,节省储存空间;
要还原时,要先uncompress,再解tar:
% compress backup.tar 压缩
% ls -l backup*
% uncompress backup.tar.Z 解压缩
% tar xf backup.tar 解tar压缩
你还可以用gzip/gunzip来代替compress/uncompress。

16.问题:将一台WINDOWS 2000*作系统的机器作为代理服务器,用SCO OPENSERVER5。06作为客户端上网,不知有什么办*,把配置98的机器网关可以吗?
答:
(1)配置网卡,IP地址要和服务器在同一个网段。
(2)在/etc/rc2.d下用VI编辑S10route ,加入网关,既服务器网卡的IP地址,如192.168.0.1
(3)vi /etc/resolv.conf 内容为nameserver xxx.xxx.xxx.xxx ,既DNS地址。就是说把UNIX下的网关的DNS服务器设为WINDOWS主机就能上网了!

17.问题:20G的硬盘在sco unix 5.05中没什么没有完全认到。1 track 是多大?
答:1).安装时,在“boot”提示符下,输入以下内容:
defbootstr biosgeom=(25249,16,63) 括号中的值是你硬盘的参数(cylinder/heads/sectors-per-track),不要照搬。
2).选择“interactive/divvy”方式,然后手动调整硬盘的cylinder/heads/sectors-per-track的值。以后的安装按照通常的方式。
3).继续安装,ok 。

18.问题:SCSI硬盘的驱动怎样做,defbootstr link=...这里应怎样写?
答:Boot:提示符时输入:defbootstr link=”amird slha” sdsk=amird(0,0,0,0) Srom=wd(0,0,0,0)
其中,link=“amird slha”指出安装时需要联入的驱动程序名称(BTLDs,bootime loadable
driver),sdsk=amird(0,0,0,0)指出系统根盘的位置,几个数字分别为SCSI的适配器号
(adapter number),总线号(bus number),SCSI ID,逻辑单元号(lun),Srom=(0,0,0,0)指
出的是EIDE(IDE)CDROM的位置。在这种情况下,(n,n,n,n)分别代表(IDE Controller,
Master/Slave,LUN,BUS),合*值为0和1。在上面的例子中,IDE Controller:0=primary,
Master/Slave :0=master,LUN从:0(LUN for an EIDE/IDE device is always 0),BUS:0(BUS
for an EIDE/IDE device is always 0).

19.问题:很多软件产品完工之后,都会做成一个软件包,以便于用户用custom工具进行安装。
哪位能详细描述一下,做软件包的过程?
答:SCO OPENSERVER 下custom发布软件的制作方*
在SCO OPENSERVER5.0.x下,软件都用cutsom管理用户通过该工具,可以很好地进行软件的安装、升级、删除;开发商通过该工具,可以很好地管理好开发的发布软件的版本。利用SCO OPENSERVER下的一个工具——Custom Distribution Master ToolKit,本文提供了custom发布软件的制作方*。
  CDMT生成的发布软件,根据其介质可为软盘、磁带或光盘版。其中光盘发布软件的生成比较困难,这是由于SCO OPENSERVER支持的光盘刻录机比较少,往往只好借助于windows或linux下的刻录工具。然而,现在软件大都通过光盘来安装,因此,光盘发布软件的制作显得尤为重要。下面将具体介绍CDMT生成发布软件的具体过程,包括软盘、磁带和光盘。
  
  一、确定你的产品结构
  
  SCO OPENSERVER下,custom按照如下层次组织系统上安装的软件:
  如产品SCO OpenServer 5.0.x被分成很多组件,如Xclient和Wserver,每一个组件又分成多个包,如man等。
  为了说明方便,我们所举的例中名称都取为一个,并且只有一个组件和一个包,名字全部为test。
  
  二、确定每个文件的属性
  
  属性有shared(/opt)和non-shared(/var/opt)之分,其中shared的文件为只读,non-shared的文件为可读可写。本处为说明方便,所举的例子中的文件全部为shared。

  三、构件软件的目录结构
  
  所安装的test软件的目录结构为:
  /usr/test/.profile
       database/
       dblog/
       bin/
       tmp/
  
  四、设置CDMT的环境
  
  设置生成该Distribution的根目录CDMT-DIR环境变量,在命令行下键入:
  #CDMT-DIR=/usr/test
  #export CDMT-DIR
  
  五、生成CDMT命令所需的输入文件
  
  包括三个文件,分别是:
  $CDMT-DIR/input/test.prd
$CDMT-DIR/input/test.cmpnt
$CDMT-DIR/input/test.pkg上述三个文件可以用vi生成,也可以用如下两条命令生成后用vi修改:
  在$CDMT-DIR目录下:
  find.-print>/tmp/TEST.files
cdmtConvert/tmp/TEST.files
在input目录下,生成了四个文件,其中一个是为生成cdmt.config文件的。
  转到$CDMT-DIR目录下,执行命令:
  #vi$CDMT-DIR/cdmt.config
  在该文件下输入:
  CONFIG:
  ArchiveMedia=CD
  CD-MEDIA:
  DistCode=“CDDist”
  再把input目录下的test.config文件中的内容拷贝到test.config中。
  以上的config文件是为生成光盘介质,生成其它介质的config也类似,可以参考随机手册。
  
  六、生成SSO树
  
  在CDMT-DIR宏已设定的条件下,在任何目录下(当然,一般都在$CDMT-DIR/下)先后执行以下三个命令:
  1cdmtParse,该命令软件存储对象(SSO)数据库,它读取CDMT的input文件,并把生成的SSO放在$CDMT-DIR/sso下。
  2CdmtCompress,该命令构件SSO的目录,并压缩它。
  3CdmtArchive,该名另生成可custom安装的格式。
  
  七、从硬盘上移到指定介质上
  
  1若是FLOPPY,可以用以下命令
  cdmtArchive -media FLOPPY -copy
  默认状态下,系统用cpio拷贝到软盘上,cpio有个缺点,不检查写得是否正确;用tar也一样。往往在多张软盘tar到硬盘上时,发现最后一张盘有问题,而不得不从头来。
  2若是TAPE,可以用以下命令
  cdmtArchive -media TAPE -copy
  默认状态下,在磁带上生成一个文件系统。此步完成即完成整个制作过程。
  3若是CD介质,比较复杂
  (1)#cd /usr/test/sso#ls可在其下看见—opt目录
  (2)用mkisofs工具生成ISO9660的文件系统
  mkisofs可从internet上downlad下来,编译后可以使用
  mkisofs -r -T -o cd-image.iso
  其中,表示对当前目录*作,不可改为opt。
  此时,在/usr/test目录下,生成文件cd-image.iso,该文件即是用来刻录的镜像文件。
  (3)把cd-image.iso移到windows*作系统下,在该*作系统下进行刻录。可以用ftp方式(windows和openserver不在同一计算机中),也可以用mount方式(windows和openserver在同一计算机中)。用windows下的刻录软件刻录该软件。

20.问题:Unix下如何访问DOS分区?
答:mount /dev/hd0d /mnt 安装硬盘上的DOS分区,只能访问FAT16格式,不访问FAT32格式。

21.问题:如何在系统启动时自动启动Oracl或其他应用程序?
答:在/etc/rc中加入执行命令。或在 /etc/rc2.d目录下,建立脚本文件!!!就是建立一个文件,文件的内容就是你要启动应用程序的命令。如让系统启动时自动加上网关,可在/etc/rc2.d目录下
#vi S96gateway(这个为文件名)
然后在S96gateway中写如下内容(其实就是加网关的命令)
route add default 192.168.1.1(如果你要启动应用程序,可在此换为你启动应用程序的命令)。

Oracle这样加:
vi S20dbadmin
su -u oracle -c svrmgrl<connect internal
startup
exit
EOF
su -u oracle -c "lsnrctl start";启动侦听
关机时自动关掉oracle在/etc/rc0.d目录里建一个文件
vi K20dbadmin
su -u oracle -c svrmgrl<connect internal
shutdown immediate
exit
EOF
su -u oracle -c "lsnrctl stop"

22.问题:sco unix5.06如何配置DNS?
答:vi /etc/resolv.conf 内容为:nameserver xxx.xxx.xxx.xxx。xxx.xxx.xxx.xxx就是实际的DNS。

23.问题:NetScape如何使用?
答:1).加网关
以超级用户登录,并键入以下命令:
route add default 192.168.0.1 (IP 地址为网关地址)
同时可以用vi /etc/rc2.d/S99route建立文件,使机器开机后会自动加载网关
文件内容为: route add default 192.168.0.1
2). 加dns
修改/etc/resolv.conf,加入:
nameserver 192.168.0.1
(nameserver为dns 服务器,后面的IP是dns服务器的IP)
重启即可
3).netscape的代理配置:
edit->preferences->点击advanced前边的小三角形->proxies->manual proxy
configuration view 设置就行了。

24.问题:ps/2鼠标在unix下设置的步骤是什么?
答:1 mkdev mouse
2 add a mouse to system
3 ps-2style keyboard mouse
4 high resolution keyboard-mouse

25.问题:我在修改scounix5.0.5 ip地址后,同时也把hostname修改了,(用netconfig命令,改网卡的tcp/ip属性)。但是重新链接后打入hostname命令显示主机名仍然为原来的,ping自己,别人(用修改后的ip地址)均正常。 能否告诉我如何把主机名也修改调?我这样修改为什么不幸?
答:直接修改/etc/hosts文件或uuinstall,uname -S nodename 都可以.

26.问题:本单位有一台COMPAQ 3000 服务器,配一个4.3G SCIS硬盘,由于全部安装
好informix 数据库数据后容量超过4.3G,现想在加一块4.3G SCIS硬盘专门存放informix 数据,问是否可行,如何实现?
答:当然可以,首先使用超级用户mkdev hd 输入SCIS HOST ADAPTER ID(DEFAULT 0),LUN ID(DEFAULT 0),SCIS ID(硬盘的实际ID,例如4),然后用divvy分区,只要一个分区,做成裸设备名称为data(文件系统类型选用NON FS),做好后重新启动机器,修改属性chmod 666 /dev/rdata,chown informix:informix /dev/rdata;现在可以用INformIX用户执行tbmonitor(5。0 version)或者onmonitor(version 7。0以上),选择spaces-》add chunk,输入PATH:/dev/rdata,SIZE:2000000k,OFFSET:0,注意由于每个CHUNK 最多2G,所以只能SIZE输入最大200000K,增加第二个时只要OFFSET设置为2000001即可,增加第三个时为4000001。

27.问题:请教挂接软驱、磁带机的命令--tar的具体用*?
答:列文件
tar tv6
tar tv8
向软盘、磁带上拷贝文件
tar cv6 files
tar cv8 files
从软盘、磁带上拷贝文件到硬盘
tar xv6
tar xv8
6、8代表设备名,在/etc/tar里面有详细的说明,最后一行为缺省的软盘设备。
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 21 发表于: 2007-05-04
引用
28.问题:何谓NFS?

答:SCO NFS详解:我现在向大家介绍一下SCO的NFS,在大都数UNIX版本中都用NFS(Net File System)来访问局域网内的远程文件系统。它是系统用户被动使用的工具,通常用户是感觉不到正在使用NFS。作为系统管理员,如果对NFS进行适当地配置,你的任务会变的更加容易,因为你的用户可以在网上透明地使用磁盘空间。NFS语序管理员将一个主机上整个文件系统或目录提供给其他主机使用,这些主机将磁盘空间
看成是自己的一样。NFS通过语序用户安装(mount)远程磁盘资源来实现磁盘的共享,而安装远地磁盘资源与安装本地文件系统没有什么区别。

1),NFS概念
  作为一个系统管理员,你可能需要用mount命令手工在磁盘上安装文件系统。这种可安装文件系统的概念允许系统管理员以透明的方式给系统增加磁盘空间。
 网络文件系统允许用户将远程主机的文件系统看做好象是本地文件系统一样,并且是可安装的,可读的和可写的。系统使用与本地文件系统一样的命令mount把NFS文件系统挂接在本地文件树结构上。但对这些文件系统的所有管理(如fsck,mkfs等)必须在实际拥有物理盘的系统上进行。

2),NFS术语
 拥有实际的物理磁盘并且通过NFS将这个磁盘共享的主机叫NFS文件服务器,通过NFS访问远程文件系统的主机叫NFS客户机。一个NFS客户机可以利用许多NFS服务器提供的服务。相反,一个NFS服务器可以与多个NFS客户机共享它的磁盘。一个共享了部分磁盘的NFS服务器可以是另一个NFS服务器的客户机。
  NFS服务器输出的目录叫远程资源并且通常写作:host : pathname 其中host是文件服务器的名字而pathname是服务器上被输出目录的绝对路径。
  远程资源被安装到客户机上的饿那个目录叫安装点(mount point)。
3),NFS输入输出规则
规则一:NFS输出目录。
  服务器输出的是目录而不是文件系统。
 规则二:如果服务器已经输出了一个目录,如/usr/local,并且有一个文件系统安装在/usr/local
/extra,那么/usr/local/extra的内容在客户端看不到,除非服务器明确地输出了它,或客户机明确地安装了它。
 规则三:客户机可以安装一个输出目录的子目录,前提是此子目录不是另一个文件系统。
 规则四:一个主机不可以将一个输入的目录再次输出。例如,如果一个主机通过NFS安装/usr/local,它就不能将/usr/local输出给另外的主机。
 规则五:一个已经输出目录的子目录不可以再输出,除非子目录在一个不同的文件系统上。这可能不太好明白,还是举个例子:假设你要按只读方式输出根文件系统的跟(/)目录,但是又要按读写方式输出/tmp目录。你不可能做到这一点,除非/tmp被安装在不同于跟的文件系统上。
  对NFS有大概的了解了么?下面我会向大家介绍NFS在SCO中的具体配置。


  了解了NFS的概念后,我们来看一下如何配置客户机和服务器。
  配置NFS客户机和服务器可以用scoadmin中的Filesystem Manager,也可以通过修改相关文件并执行简单的命令来手工配置(我推荐大家的是遇到这种配置问题,都要寻个究竟,具体到某某的配置文件,在自己的系统里调出来看看,修改修改,才能真正了解它,scoadmin是个好的管理工具,那是针对简单用户的,我们毕竟是高级用户嘛,哈哈这样无论是LINUX,SCO,SOLARIS对于你来说都是一样了)。作为一个标准,用scoadmin执行大多数系统管理任务更容易一些。

配置NFS文件服务器非常简单,它只不过是把那些要输出的目录列出来,然后指明这些目录是向哪些客户机输出。
  scoadmin中输出一个新文件系统,选择scoadmin--Filesystem--Filesystem Manager--Export NFS--Add Export Configuration。按以下规则填充这个表。
Directory to Export
  输入希望输出的目录名。
Read-only and Read-Write clients
 表上的这两个条目协同工作并指出文件系统是否以只读或读写方式输出。如果将Read-only Clients按钮设置为All systems,那么Read-Write按钮就默认为None。这表示目录将以只读方式输出,并且任何主机可以安装它。如果你将Read-only Clients按钮设为Selected Systems,那么Read-write clients按钮自动变为none。它表示目录以只读方式输出并且只有那些选择的主机可以安装输出的文件系统。如果你将Read-only clients按钮设为none,那么READ-WRITE CLIENTS按钮自动边为ALL。它表示目录以读写方式输出并且所有的主机可以安装输出的目录。
 如果一个目录可以让一个主机以读写方式访问,那么这个主机可以按读写安装NFS文件系统或以只读方式安装。如果一个目录可以让一个主机以只读方式访问,那么这个主机只可以按只读方式安装NFS文件系统。
Export Now
  如果现在就要求Filesystem Manager运行exportfs,将这个选择设为Yes;如果设为No,那么输出将在瑕疵启动NFS时起作用。
Advancded Options
 通过直接编辑/etc/exports文件而能得到所有NFS的特点没有在这个图形接口中全部体现出来,但是对大多数需要来说,接口提供的选择已经足够用了。
 手工配置:在NFS文件服务器上配置和重新配置NFS服务器包括两个步骤:
1,更改NFS服务器与其他系统共享的文件系统列表,并确定以什么方式与它们共享。在NFS中,共享又叫输出。这些信息保存在、/etc/exports文件中。
2,mountd输出列表已经改变。可以通过exportfs命令来实现此目的。

  下面介绍一下/etc/exports文件。
  /etc/exports文件包含一个目录列表,这些不路就是NFS服务器共享给客户机的那些目录。可以将它配置成只允许一组限定的主机来访问一个NFS文件系统,或者配置成让网络上的所有主机都可以访问NFS文件系统。也可以对每个主机允许的访问权限进行配置,例如只读或读写。
 注意:启动NFS守护进程的脚本文件叫/etc/nfs,它通常只启动用于NFS客户*作的守护进程。只有/etc/exports文件存在时,它才会启动用于NFS服务器的守护进程,如mountd。
 不论你对/etc/exports文件做如何的修改*作,用户都需要巡行exportfs命令来通知mountd输出列表已经改变。按如下步骤*作:
-u选项运行exportfs,取消所有输出文件的输出。
-a选项运行exportfs,将/etc/exports文件中现存记录都进行输出。

29.问题:怎样改x-windows中的刷新率?
答:mkdev graphics

30.问题:如何安装IMG文件?
答:用HD-COPY恢复到软盘进行安装。

31.问题:装完网卡后,该机子ping通了局域网中其他机子,但是上不了网。
该局域网是这样的:windows2000代理局域网中各机子上网。装有unix的机子通过交换机挂在局域网上。
现在的问题是该机子怎样才能上网呢?又怎样共享其他机子上的资源呢? 其他机子又如何共享该机子上的资源?
答:在/etc/rc中加route add default windows2000代理机IP地址 1
其他机子共享该机子上的资源通过telnet和ftp谢谢!
运行netscape,提示没有DNS入口。该这么设置vi /etc/resolv.conf
内容为:
nameserver DNS地址(例如:202.102.128.6 )

32.问题:怎样安装大硬盘?
答:这个问题复杂一点,需要多费点笔墨。一般来SCO UNIX只能管 理8G以内的硬盘,如果你的硬盘大于8G,你的SCO UNIX也只能安装在前8G的空间里,而且 8G以外的硬盘分区也只能用WINDOWS下的fdisk或其它分区工具来做,DOS和UNIX的FDISK对此无能为力。因此, 如果你要对一个大于8G的硬盘安双系统(也只能安装双系统,除非你 打算不用剩余的空间), 你就应该按下面的方*做:
(1)、在WIN998的DOS下划分硬盘区间,其中 主分区必须在8G以内,其余空间划给扩展分区。
(2)、在UNIX下用FDISK将DOS主分区删 除,然后再创建一个分区给DOS(空间必须从第一块开始),然后将其余空间留给UNIX。
(3)、为了使UNIX创建的DOS分区能够使用,你可还要在DOS下用FDISK将UNIX下创建的 DOS主分区删除后重建。


END

级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 22 发表于: 2007-05-04
引用
UNIX几种系统故障及解决


引用
故障之一

  打开计算机电源后,主控台屏幕上出现如下信息:boot not found cannot open Stage 1 boot failure:error loading hd(40)/boot,然后死机。

  分析:这表明系统根目录下的Boot文件丢失。Boot是用于装载并执行UNIX程序的交互式程序,主要用于装载和执行UNIX操作系统的核心。在引导过程中Boot将读取/etc/default/boot,显示引导过程信息,装入并执行/unix。所以当Boot文件受损时将导致系统引导失败。

  解决方法:1.将Boot盘插入驱动器并重新对机器加电, 此时由Boot盘开始引导;

  2.在系统引导提示下敲入hd(40)/unix, 这个命令用于从硬盘把UNIX核心装入。然后输入Root口令进入单用户模式, 此时出现超级用户提示符#;

  3.用命令把Boot盘安装到硬盘上,mount /dev/fd0135ds18/mnt,然后用命令:cp/mnt/boot/恢复硬盘根目录下的Boot文件;

  4.用命令umount/dev/fd0135ds18把Boot盘从硬盘上卸下来;

  5.敲入haltsys关闭系统,然后再取出Boot盘,则故障排除,系统可正常引导;

  6.在系统正常引导后进入超级用户,将/boot文件的属主和组均改为系统原来所定义的bin即可。

  故障之二

  机器加电后, 主控台屏幕出现如下信息:unix not found,然后死机。

  分析:这表明UNIX核心丢失。因为/unix包含核心,unix文件受损将导致系统无法装入并行内核,从而出现死机。

  解决方法:1.将Boot盘插入驱动器并重新对机器加电,此时由Boot盘开始引导;

  2.在系统引导提示下键入:fd(64) unix root=hd(40) swap=hd(41) pipe=hd(40)或仅键入fd(64)/unix亦可。这个命令用于从Boot盘把UNIX核心装入,然后输入Root口令进入单用户模式,此时出现超级用户提示符#;

  3.用命令mount/dev/fd0135ds18/mnt把Boot盘安装到硬盘上,然后用命令:cp/mnt/unix/恢复硬盘根目录下的unix文件;

  4.用命令umount/dev/fd0135ds18把Boot盘从硬盘上卸下来;

  5.键入haltsys关闭系统,取出Boot盘,则故障排除,系统可以正常引导;

  6.在系统正常引导后进入超级用户,将/unix文件的属主和组改为系统原来所定义的bin和mem即可。

  故障之三

  机器加电后在系统引导提示符下键入回车键, 当第一屏被刷新后显示第二屏时出现许多错误信息, 如: INIT: command exec /etc/brc 1〉/dev/console 2〉&&1 failed to execute, errno=9 (exec of shell failed) ...

  分析:这表明系统/bin/sh文件受损或丢失。因为sh是Shell标准、作业控制和限制性命令的解释程序,所以,该文件受损或丢失将导致系统启动失败。

  解决方法:1.将Boot盘插入驱动器并重新开启电源,在系统引导提示符下按回车键,当提示插入Root盘时把Boot取出并将Root盘插入,这样系统全部由应急引导盘引导,直到出现提示符#;

  2.用命令mount/dev/hd0root/mnt把硬盘mount到软盘上;

  3.把/bin/sh文件从软盘上拷贝到所安装的硬盘上: cp/bin/sh/mnt/bin/sh;

  4.用命令umount/dev/hd0root把硬盘从软盘上umount下来;

  5.用命令haltsys关闭系统后将Root盘取出, 此时系统已可以正常引导;

  6.在系统正常引导后进入超级用户下, 将文件/bin/sh的属主与组均改为系统原来所定义的bin即恢复了系统。

  故障之四

  系统可以引导, 亦能正常处理日常事务, 但每当关机时总会在主控台屏幕上出现错误信息:/etc/initscript:/etc/uadmin:not found,然后系统死机,从而导致系统不能正常关机,这样每次系统在启动时都需要清理文件系统, 不仅浪费时间,还可能严重破坏文件系统,导致系统瘫痪。

  分析:系统文件/etc/uadmin丢失或损坏所致。

  解决方法:1.在系统引导并清理文件系统完成后, 以超级用户Root注册(进入单用户模式亦可);

  2.在超级用户提示符#下,用命令mount/dev/fd0135ds18/mnt把Root盘安装到硬盘上;

  3.把/etc/uadmin文件从软盘上拷贝到所安装的硬盘上:cp/mnt/etc/uadmin/etc/uad min;

  4.用命令mount/dev/fd0135ds18/mnt把软盘从硬盘上卸下来,然后把Root盘取出;

  5.将文件/etc/uadmin的属主与组分别改为系统原来所定义的bin,至此,故障排除,系统可正常关机。

  故障之五

  机器加电后在系统引导提示符下键入回车键, 当第一屏被刷新后在第二屏的最后一行出现如下信息:Kernel: i/o bufs=600k,然后系统挂起。 机器加电后在系统引导提示符下键入回车键, 当第一屏被刷新后在第二屏的最后一行出现如下信息:Kernel: i/o bufs=600k,然后系统挂起。

  分析:这表明系统的/etc/init文件丢失。 因为init程序在核心初始化的最后阶段开始执行, 其进程号(pid)为1。该进程按一定规则启动/etc/inittab文件中所列的进程, 引导系统进入所规定的运行级别。它首先读/etc/init tab中的initdefault项,当所有的进程都创建成功后, init进入循环等待。init主要用于打开主控台/etc/console,检查文件系统的一致性,执行/etc/rc 进行必要的设置。init在单用户模式下启动Shell,而在多用户模式下运行/etc/brc、/etc/bchk等外壳程序并启动/et c/rc。另外,它还调用/etc/getty为每个终端生成一个getty进程,以便在读入用户注册名后完成用户的注册过程。如果/etc/init文件受损,新的进程就无法创建, 从而导致系统挂起。

  解决方法:1.将Boot盘插入驱动器并重新对机器加电,此时由Boot盘开始引导,在系统引导提示符下按回车键,然后在提示插入Root盘时取出Boot盘并将Root盘插入,这样系统全部由应急引导盘引导,直至出现提示符#;

 2.用命令mount/dev/hd0root/mnt把硬盘mount到软盘上;

 3.把/etc/init文件从软盘上拷贝到所安装的硬盘上:cp/etc/init /mnt/etc/init;

  4.用命令umount/dev/hd0root把硬盘从软盘上umount下来;

  5.用命令haltsys关闭系统后把Root盘取出,此时系统已可正常引导;

  6.在系统正常引导后进入超级用户,将/etc/init文件的属主与组均改为系统原来所定义的bin即可。


[ 本帖最后由 尉迟小乐 于 2007-5-5 00:01 编辑 ]
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 23 发表于: 2007-05-04
引用
SCO UNIX基本命令


引用
第一章 目录及文件操作


引用
1.1 ls
[语法]: ls [-RadCxmlnogrtucpFbqisf1] [目录或文件......]
[说明]: ls 命令列出指定目录下的文件,缺省目录为当前目录 ./,缺省输出顺序为纵向按字符顺序排列。
  -R 递归地列出每个子目录的内容
  -a 列出所有文件,包括第一个字符为“.”的隐藏文件
  -d 若后面参数是目录,则只列出目录名而不列出目录内容,常与-l选项连用以显示目录状态。
  -C 输出时多列显示
  -x 横向按字符顺序排列
  -m 输出按流式格式横向排列,文件名之间用逗号(,)分隔
  -l 长列表输出,显示文件详细信息,每行一个文件,从左至右依次是:文件存取模式 链接数 文件主 文件组 文件字节数 上次修改时间其中文件存取模式用10个字母表示,从左至右的意义如下:
  第一个字母表示文件种类,可以是以下几种情况:
    d 为目录文件
    l 为链接
    b 为块文件
    c 为字符型文件
    p 为命名管道(FIFO)
    - 为普通文件
  后面9个字母分别表示文件主、同组用户、其他用户对文件的权力,用r表示可读,w 表示可写,x 表示可执行。如果是设备文件,则在文件字节数处显示:主设备 从设备。
  -n 与-l选项相同,只是文件主用数字(即UID)显示,文件组用数字 (即GID)表示
  -o 与-l选项相同,只是不显示文件组
  -g 与-l选项相同,只是不显示文件属主
  -r 逆序排列
  -t 按时间顺序排列而非按名字
  -u 显示时间时使用上次访问时间而非上次修改时间
  -c 显示时间时使用上次修改i节点时间而非上次修改时间
  -p 若所列文件是目录文件,则在其后显示斜杠(/)
  -F 在目录文件后加’/’,在可执行文件后加’*’
  -b 文件名中若有非打印字符,则用八进制显示该字符
  -q 文件名中的不可打印字符用’?’表示
  -i 显示节点号
  -s 显示文件长度时使用块长度而非字节长度
  -f 将后面的参数解释为目录并列出其中的每一项
  -1 每行仅列一项
  [例子]:
  ls 列出当前目录下的文件
  ls -al /bin 以长列表的形式列出目录 /bin 下的所有文件,包括隐藏文件

1.2 pwd
[语法]: pwd
[说明]: 本命令用于显示当前的工作目录
[例子]:
  pwd 显示出当前的工作目录

1.3 cd
[语法]: cd [目录]
[说明]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME 作为其参数,$HOME 一般为注册时进入的路径。
[例子]:
  cd 回到注册进入时的目录
  cd /tmp 进入 /tmp 目录
  cd ../ 进入上级目录


1.4 mkdir
[语法]: mkdir [-m 模式] [-p] 目录名
[说明]: 本命令用于建立目录,目录的存取模式由掩码(umask)决定,要求对其父目录具有写权限,目录的UID和GID为实际UID和GID
-m 按指定存取模式建立目录
-p 建立目录时建立其所有不存在的父目录
[例子]:
  mkdir tmp 在当前目录下建立子目录 tmp
  mkdir -m 777 /tmp/abc 用所有用户可读可写可执行的存取模式
  建立目录 /tmp/aaa (存取模式参看命令 chmod)
  mkdir -p /tmp/a/b/c 建立目录 /tmp/a/b/c ,若不存在目录 /tmp/a
及/tmp/a/b 则建立之


1.5 rmdir
[语法]: rmdir [-p] [-s] 目录名
[说明]: 本命令用于删除目录
-p 删除所有已经为空的父目录
-s 当使用-p 选项时,出现错误不提示
[例子]:
  rmdir /tmp/abc 删除目录 /tmp/abc
  rmdir -p /tmp/a/b/c 删除目录 /tmp/a/b/c ,若目录 /tmp/a /b及/tmp/a 空,则删除


1.6 cat
[语法]: cat [-u] [-s] [-v[-t] [-e]] 文件...
[说明]: 显示和连接一个或多个文件至标准输出
  -u 无缓冲的输出(缺省为有缓冲输出)
  -s 对不存在的文件不作提示
  -v 显示出文件中的非打印字符,控制字符显示成^n ,n为八进制数字,其他非打印字符显示成M-x,x为该字符低7位的8进制数值
  -t 在使用-v 选项时,将制表符(tab) 显示成 ^I,将换页符(formfeed)显示成 ^ L
  -e 在使用-v 选项时,在每一行的行尾显示 $
[例子]:
  cat file 显示文件
  cat -s -v -e file1 file2 file3 逐个显示文件 file1 file2 file3


1.7 head
[语法]: head [-n] [文件 ...]
[说明]: 将文件的头n 行显示输出,缺省值为 10 行,显示多个文件时,请按序列出文件名
[例子]:
 head -9999 file1 file2 显示文件 file1 和 file2 的头 9999 行


1.8 more
[语法]: more [-cdflrsuw] [- 行数] [+ 行数] [+ / 模式 ] [ 文件 ... ]
[说明]: 将文件显示在终端上,每次一屏,在左下部显示 --more--,若是从文件读出而非从管道,则在后面显示百分比,表示已显示的部分,按回车键则上滚一行,按空格键则上滚一屏,未显示完时可以使用more 命令中的子命令。
  -c 显示文件之前先清屏
  -d 当输错命令时显示错误信息而不是响铃(bell)
  -f 不折叠显示长的行
  -l 不将分页控制符(CTRL+D)当作页结束
  -r 一般情况下,more 不显示控制符,本选项使more 显示控制符,例如,将 (CTRL+C) 显示成 ^ C
  -s 将多个空行转换成一个空行显示
  -u 禁止产生下划线序列
  -w 一般情况下 more 显示完后立即推出,本选项在显示完后作提示,敲任意键后推出
  -n 行数 指定每屏显示的行数
   + 行号 从指定行号开始显示
  +/ 模式 在文件中搜索指定模式,从模式出现行的上两行开始显示。文件未显示完时,可以使用more 命令中的子命令,命令中除了! 和 / 以外均不回显,也不用敲回车,当命令破坏 more 提示行时,可用退格键恢复提示行。在以下子命令操作中,i 表示数字,缺省值为 1。
    i 空格  上滚一屏多 i 行
    i 回车  上滚 i 行
    i CTRL+D i 缺省时上滚 11 行,否则上滚 i 行
    id    i 缺省时上滚 11 行,否则上滚 i 行
    iz    i 缺省时上滚一屏,否则定义每屏为 i 行
    is    跳过 i 行后显示一屏
    if    跳过 i 屏后显示一屏
    i CTRL+B 跳回 i 屏后显示一屏
    b     跳回一屏后显示一屏
    q 或 Q  退出 more

  = 显示当前行号
  v 从当前行开始编辑当前文件编辑器由环境变量$EDITOR定义
  h 显示帮助信息
  i /模式向前搜索,直至模式的第 i 次出现 , 从该行的上两行开始显示一屏
    in 向前搜索,直至上一模式的第 i 次出现 , 从该行 的上两行开始显示一屏
    单引号 回到上次搜索的出发点,若无搜索则回到开始位置
    !   激活一个sh 去执行指定的命令
    :i   跳到后面第 i 个文件,若不存在则跳到最后一个文件
    :f   显示当前文件名和行号
   :q 或:Q 推出 more
   . (点) 重复上次命令

[ 例子]:
  more -c +50 file 清屏后,从第50行开始显示文件 file
  more -s -w file1 file2 file3 显示文件 file1 file2 file3


1.9 cp
[语法]: cp [ -p ] [ -r ] 文件 1 [ 文件 2 ...] 目标
[说明]: 将文件1(文件2 ...)拷贝到目标上,目标不能与文件同名,若目标是文件名,则拷贝的文件只能有一个,若目标是目录, 则拷贝的文件可以有多个,若目标文件不存在,则建立这个文件,若存在,则覆盖其以前的内容,若目标是目录,则将文件拷贝到这个目录下。
  -i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止
  -p 不仅拷贝文件内容,还有修改时间,存取模式,存取控制表,但不拷贝UID 及 GID
  -r 若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时目标必须为目录
[例子]:
  cp file1 file2 将文件 file1 拷贝到文件 file2
  cp file1 file2 /tmp 将文件 file1 和文件 file2 拷贝到目录 /tmp 下
  cp -r /tmp /mytmp 将目录 /tmp 下所有文件及其子目录拷贝至目录/mytmp


1.10 mv
[语法]: mv [-f] [-i] 文件1 [文件2...] 目标
[说明]: 将文件移动至目标,若目标是文件名,则相当于文件改名
  - i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止
  - f 覆盖前不作任何提示
[例子]:
  mv file1 file2 将文件 file1 改名为 file2
  mv file1 file2 /tmp 将文件 file1 和文件 file2 移动到目录 /tmp 下


1.11 rm
[语法]: rm [-f] [-i] 文件...
或 rm -r [-f] [-i] 目录名... [文件]
[说明]: 用来删除文件或目录
 - f 删除文件时不作提示
 - r 递归地删除目录及其所有子目录
 - i 删除文件之前先作提示
[例子]:
  rm file1 删除文件 file1
  rm -i /tmp/* 删除目录 /tmp 下的所有文件
  rm -r /mytmp 递归地删除目录 /mytmp


1.12 chmod
[语法]: chmod [-R] 模式 文件... 或 chmod [ugoa] {+|-|=} [rwxst] 文件...
[说明]: 改变文件的存取模式,存取模式可表示为数字或符号串,例如:
chmod nnnn file , n为0-7的数字,意义如下:
  4000 运行时可改变UID
  2000 运行时可改变GID
  1000 置粘着位
  0400 文件主可读
  0200 文件主可写
  0100 文件主可执行
  0040 同组用户可读
  0020 同组用户可写
  0010 同组用户可执行
  0004 其他用户可读
  0002 其他用户可写
  0001 其他用户可执行
nnnn 就是上列数字相加得到的,例如 chmod 0777 file 是指将文件 file 存取权限置为所有用户可读可写可执行。
  -R 递归地改变所有子目录下所有文件的存取模式
  u 文件主
  g 同组用户
  o 其他用户
  a 所有用户
  + 增加后列权限
  - 取消后列权限
  = 置成后列权限
  r 可读
  w 可写
  x 可执行
  s 运行时可置UID
  t 运行时可置GID
[例子]:
  chmod 0666 file1 file2 将文件 file1 及 file2 置为所有用户可读可写
  chmod u+x file 对文件 file 增加文件主可执行权限
  chmod o-rwx 对文件file 取消其他用户的所有权限


1.13 chown
[语法]: chown [-R] 文件主 文件...
[说明]: 文件的UID表示文件的文件主,文件主可用数字表示, 也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。
-R 递归地改变所有子目录下所有文件的存取模式
[例子]:
  chown mary file 将文件 file 的文件主改为 mary
  chown 150 file 将文件 file 的UID改为150


1.14 chgrp
[语法]: chgrp [-R] 文件组 文件...
[说明]: 文件的GID表示文件的文件组,文件组可用数字表示, 也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。
  -R 递归地改变所有子目录下所有文件的存取模式
[例子]:
  chgrp group file 将文件 file 的文件组改为 group


1.15 cmp
[语法]: cmp [-l] [-s] 文件1 文件2
[说明]: 比较两个文件,若文件1 为 "-" ,则使用标准输入, 两个文件相同则无提示,不同则显示出现第一个不同时的字符数和行号。
  -l 显示每个不同处的字节数(10进制)和不同的字节(8进制)
  -s 不作任何提示,只返回码
[例子]:
  cmp file1 file2 比较文件 file1 和 file2
  cmp -l file1 file2 比较文件file1 和 file2 的每处不同

1.16 diff
[语法]: diff [-be] 文件1 文件2
[说明]: 本命令比较两个文本文件,将不同的行列出来
  -b 将一串空格或TAB转换成一个空格或TAB
  -e 生成一个编辑角本,作为ex或ed的输入可将文件1转换成文件2
[例子]:
  diff file1 file2
  diff -b file1 file2
  diff -e file1 file2 >edscript


1.17 wc
[语法]: wc [-lwc] 文件...
[说明]: 统计文件的行、字、字符数,若无指定文件,则统计标准输入
  -l 只统计行数
  -w 只统计字数
  -c 只统计字符数
[例子]:
  wc -l file1 file2 统计文件file1和file2 的行数


1.18 split
[语法]: split [-n] [ 文件 [名字]]
[说明]: split 将指定大文件分解为若干个小文件,每个文件长度为n行(n 缺省时为1000),第一个小文件名为指定的名字后跟aa,直至zz,名字缺省值为x,若未指定大文件名,则使用标准输入
[例子]:
   split -500 largefile little
   将文件largefile 每500行写入一个文件,第一个文件名为littleaa


1.19 touch

[语法]: touch [-amc] [mmddhhmm[yy]] 文件...
[说明]: 将指定文件的访问时间和修改时间改变,若指定文件不存在则创建之,若无指定时间,则使用当前时间,返回值是未成功改变时间的文件个数,包括不存在而又未能创建的文件。
  -a 只改变访问时间
  -m 只改变修改时间
  -c 若文件不存在,不创建它且不作提示
mmddhhmm[yy] 两位表示 月日时分[年]
[例子]:
  touch file
  更新文件file的时间
  touch 0701000097 HongKong
  将文件HongKong的时间改为97年7月1日0时0分


1.20 file
[语法]: file [-f 文件名文件] 文件...
[说明]: file 对指定文件进行测试,尽量猜测出文件类型并显示出来
  -f 文件名文件 文件名文件是一个包含了文件名的文本文件, -f 选项测试
文件名文件中所列出的文件
[例子]:
  file * 显示当前目录下所有文件的类型


1.21 pack
[语法]: pack 文件...
[说明]: pack 将指定文件转储为压缩格式,文件名后加 ".z ", 文件存取模式,访问时间,修改时间等均不变
[例子]:
  pack largefile 将largefile 压缩后转储为largefile.z


1.22 pcat 显示压缩文件
[语法]: pcat 文件...
[说明]: pcat 显示输出压缩文件
[例子]:
  pcat largefile.z 显示压缩前的largefile
  pcat largefile.z > oldfile 显示压缩前的laregfile,并将其重定向到文件oldfile中


1.23 unpack
[语法]: unpack 文件...
[说明]: 将压缩后的文件解压后转储为压缩前的格式
[例子]:
  unpack largefile.z 将压缩文件largefile.z解压后转储为largefile


1.24 find
[语法]: find 路径名... 表达式
[说明]: find 命令递归地遍历指定路径下的每个文件和子目录,看该文件是否能使表达式值为真,以下 n 代表一个十进制整数,+n 代表打印 n , -n 代表小于 n ,下面是合法表达式说明:
  -name 模式 文件名与模式匹配则为真,(\ 为转意符)
  -perm [-]八进制数 文件存取模式与八进制数相同则为真若有- 选项,则文件存取模式含有八进制数规定模式即为真
  -size n[c] 文件块长度为 n 则真(一块为512字节),若有c 选项,则文件字节长度为 n 则真
  -atime n 若文件的最近访问时间为 n 天前则为真。
find 命令将改变其访问的目录的访问时间
  -mtime n 若文件的最近修改时间为 n 天前则为真
  -ctime n 若文件状态为 n 天前改变则为真
  -exec 命令 { }\; 若命令返回值为0则真,{ }内为命令参数,此命令必须以 \; 为结束
  -ok 命令 { }\; 与 exec 相同,只是在命令执行前先提示,若回答 y 则执行命令
  -print 显示输出使表达式为真的文件名
  -newer 文件 若文件的访问时间比newer 指定的文件新则真
  -depth 先下降到搜索目录的子目录,然后才至其自身
  -mount 仅查找包含指定目录的文件系统
  -local 文件在当前文件系统时为真
  -type c 文件类型为 c 则真,c 取值可为 b(块文件) c (字符文件) d(目录) l (符号链接) p (命名管道) f (普通文件)
  \( 表达式 \) 表达式为真则真
  -links n 文件链接数为 n 时为真
  -user 用户 当文件属于用户时为真,用户可用数字表示UID
  -nouser 当文件不属于 /etc/passwd 中的一个用户时为真
  -group 文件组 当文件属于文件组时为真,文件组可用数字表示GID
  -nogroup 当文件不属于 /etc/group 中的一个组时为真
  -fstype 类型 当文件所属文件系统类型为指定类型时真
  -inum n 当文件 i 节点号为 n 时为真
  -prune 当目录名与模式匹配时,不再搜索其子目录
  可以用逻辑操作符将简单表达式连接成复杂表达式。逻辑操作符有 ! 表示非操作, -o 表示或操作,两个表达式并列则表示与操作
[例子]:
  find / -name find* -print
  从根目录开始搜索文件名如 find* 的文件并显示之
  find ./ -exec sleep{1}\; -print
  每秒显示一个当前目录下的文件
  find $HOME \(-name a.out -o -name '*.o' \) -atime +7 -exec rm {} \;
  从$HOME目录开始搜索,删除所有文件名为a.out 或 *.o 且访问时间在7天前的文件


1.25 grep
[语法]: grep [选项] 模式 [文件...]
[说明]: 在指定的文件中搜索模式,并显示所有包含模式的行,模式是一个正规表达式,在使用正规表达式时,最好将其引在单引号(') 中,若指定文件为缺省,则使用标准输入,正规表达式可以是:
  . 匹配任意一个字符
  * 匹配0个或多个*前的字符
  ^ 匹配行开头
  $ 匹配行结尾
  [] 匹配[ ]中的任意一个字符,[]中可用 - 表示范围,例如[a-z]表示字母a 至z 中的任意一个
  \ 转意字符
命令中的选项为:
  -b 显示块号
  -c 仅显示各指定文件中包含模式的总行数
  -i 模式中字母不区分大小写
  -h 不将包含模式的文件名显示在该行上
  -l 仅显示包含模式的文件名
  -n 显示模式所在行的行号
  -s 指定文件若不存在或不可读,不提示错误信息
  -v 显示所有不包含模式的行
[例子]:
  grep 'good' * 在所有文件中搜索含有字符串 good 的行
  grep '^myline' mytext 在文件mytext中搜索行首出现myline字符串的行

第二章 设备管理

2.1 stty
[语法]: stty [-a] [-g] [选项]
[说明]: 本命令设置终端,无参数时报告终端设置,本命令功能十分强大,应谨慎使用,下面仅介绍部分常用功能
  -a 显示当前终端所有设置
  -g 以能作为 stty 命令参数的方式显示终端设置
以下是终端常用设置,在设置前加-表示清除设置:
(1).控制方式
  ispeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
  本命令设置终端输入波特率,若为0则使用缺省波特率。
  例如 stty ispeed 9600
  ospeed 0 110 300 600 1200 1800 2400 4800 9600 19200 38400
  本命令设置终端输出波特率,参看 ispeed。
(2).输入方式
  ingbrk(-ignbrk) 忽略(不忽略)中断(BREAK)
  brkint(-brkint) 设置(清除)信号INTR为中断信号
  inlcr(-inlcr) 将换行转换(不转换)成回车
  icrnl( -icrnl) 将回车转换(不转换)成换行
  igncr(-ignrc) 忽略(不忽略)回车
  iuclc( -iuclc) 将大写字母转换(不转换)成小写字母
(3).输出方式
  olcut(-olcut) 将小写字母转换(不转换)为大写字母
  onlcr(-onlcr) 输出时将换行符转换(不转换)为回车换行
  ocrnl(-ocrnl) 输出时将回车符转换(不转换)为换行符
(4).本地方式
  echo (-echo) 设置(清除)回显
  stwrap(-stwrap) 截断(不截断)大于79个字符的行
  echoctl(-echoctr) 将控制键回显为^

2.2 tty
[语法]: tty
[说明]: 显示出终端的设备名
[例子]:tty

2.3 lp
[语法]: lp 文件...
[说明]: 将文件送打印机打印
[例子]: lp myfile 将文件myfile 送打印机输出

2.4 lpstat
[语法]: lpstat [选项] [打印任务号]
[说明]: 显示打印机状态,选项的意义如下:
  -a [打印机表] 显示打印机表中指定的打印机可否接收打印请求
  -c [打印机类名] 显示打印机种类及在该打印机种类下的成员
  -d 显示系统预设的打印机
  -p [打印机表] 显示打印机表中打印机状态
  -r 显示lp 请求程序表( lp request scheduler)
  -s 打印系统统计表
  -t 打印所有状态信息
  -u [用户] 显示由用户发出的打印请求
  -v [打印机名表] 显示每个打印机名称,是对应于该打印机设备文件的路径名
[例子]:
lpstat -t 打印所有状态信息

2.5 cancel
[语法]: cancel 打印任务号
cancel 打印机名
cancel -u 用户名 [打印机]
[说明]: 本命令可按打印机名,打印任务,用户来取消打印任务
[例子]: cancel -u mary 取消用户 mary 的所有打印请求

2.6 enable
[语法]: enable 打印机表
[说明]: 本命令可激活一个或多个打印机

2.7 disable
[语法]: disable [-cw] 打印机表
[说明]: 使一个或多个打印机不能打印
  -c 立即取消正在打印的打印请求
  -w 等正在打印的内容打完后,才禁止打印机

2.8 sync
[语法]: sync
[说明]: 将磁盘缓冲区内容写回磁盘

2.9 mount
[语法]: mount [-r] 设备 目录
[说明]: 将设备安装到目录下
  -r 以只读方式安装

2.10 umount
[语法]: umount 设备
[说明]: 将已安装的文件系统卸下

2.11 tar
[语法]: tar -c[vwfbL] [设备] [块] 文件...
  tar -r[vwfbL] [设备] [块] 文件...
  tar -t[vfL] [设备] [文件...]
  tar -u[vwfbL] [设备] [块] 文件...
  tar -x[lmovwfL] [设备] [文件...]
[说明]: 将多个文件归档,命令中各参数的意义为:
  r 附加方式归档
  x 抽取文件
  t 显示文件
  u 附加方式归档,同时删除旧版文件
  c 建立新档案文件
  v 显示所处理的文件名
  w 处理文件前,要求用户确认
  f 文件名 使用指定文件名作为档案文件
  bn 每次读写 n 块,缺省值为1,最大值为20
  m 将新的文件修改时间设为获取时的时间
  o 获取出来的文件以下达tar指令的UID和GID存储
[例子]:
  tar cvf file.tar *
  tar tvf file.tar

2.12 df
[语法]: df [-t] [文件系统]
[说明]: 显示剩余 i 节点和块数,使用 -t 选项,还显示总块数和 i 节点数
[例子]: df -t

2.13 du
[语法]: du [-ars] [目录]
[说明]: 显示磁盘空间专用情况
  -r 提供无法打开的文件信息
  -s 仅显示指定目录所占空间的总和
  -a 显示文件大小及目录总空间,其后可根文件名作参数

第三章 进程管理

3.1 sleep
[语法]: sleep 时间
[说明]: 挂起参数指定的秒数

3.2 ps
[语法]: ps [ -efl] [ -t 终端表] [ -u 用户表] [ -g 组表]
[说明]: 显示出有关进程的状态
  -e 显示出现在正在运行的所有进程
  -f 显示所有信息
  -l 产生一个长列表
  -t 显示指定终端进程
  -u 显示指定用户进程
  -g 显示指定组进程


3.3 at
[语法]: at [-f 命令文件] [-m] [-q 队列] -t 时间
[说明]: at命令由cron管理,在未来一个指定的时间内执行一组命令,命令可以从指定文件读入,也可从键盘读入,从键盘读入时以EOF结束,(通常为CTRL D)
  -f 从指定命令文件中读入命令
  -m 命令执行完后给用户发邮件
  -q 将命令放入指定队列
  -t 指定时间 指定的时间格式为 [[CC]YY]MMDDhhmm[.ss],CC表示年的前两位,YY表示年的后两位,MM表示月,DD表示日,hh表示时,mm表示分,ss表示秒


3.4 kill
[语法]: kill -信号 进程号
[说明]: kill 将信号传递给指定进程,信号意义如下:
  1 暂停(hangup)
  2 中断(interrupt)
  3 退出(quit)
  4 非法指令(illeqgal instruction)
  5 跟踪中断(trace trap)
  6 Abort
  7 EMT 指令(Emulation trap)
  8 浮点格式异常(floating point exception)
  9 kill(不可忽略)
  10 通道错误(bus error)
  11 不合法内存段
  12 错误的系统调用参数
  13 写入不可读的连通管道
  14 alarm clock
  15 软件结束信号
  16 用户定义信号一
  17 用户定义信号二
[例子]:
  kill -9 444 杀死进程号为 444 的进程
第四章 系统和用户管理

4.1 who
[语法]: who
who am i
[说明]: 列出现在系统中的用户,who am i 显示自己

4.2 whodo
[语法]: whodo [-h] [-l] [用户]
[说明]: 显示系统中用户及进程,若指定用户,则只列出该用户的信息
  -h 不显示头部信息
  -l 长列表格式输出

4.3 passwd
[语法]: passwd [用户]
[说明]: 修改密码,指定用户则修改指定用户密码

4.4 logname
[语法]: logname
[说明]: 取得当前用户注册名

4.5 su
[语法]: su [-] [用户名]
[说明]: su 命令使当前用户成为指定用户,若无指定,则成为超级用户,但必须输入该用户的密码,-选项表示用该用户的注册环境成为该用户

4.6 time
[语法]: time 命令
[说明]: 执行命令,并在执行完后显示其运行的时间

4.7 date
[语法]: date
date mmddhhmm[yy]
[说明]: date 无参数时用于显示系统时间,修改时间时参数形式为月日时分[年]

4.8 shutdown
[语法]: shutdown [-y] [-gn] [-in]
[说明]: UNIX 系统必须先关闭系统,再关电源-y 对提示的所有问题都回答 y
  -gn 给其他用户n 秒的时间退出,缺省值为60秒
  -in 系统退到第n种方式,方式如下:
  0 关机
  1 单用户模式
  2 多用户模式
  3 网络下的多用户模式
  6 关机并重新启动

4.9 fsck
[语法]: fsck [-y]
[说明]: 本命令用于检查和修复文件系统,当文件系统出现混乱时,可使用本命令,-y选项表示对所有提问都回答YES
第五章 通信和邮件

5.1 wall
[语法]: wall
[说明]: 向所有用户广播通知信息,常用于警告所有用户

5.2 mesg
[语法]: mesg [-n] [-y]
[说明]: mesg 用 -n 参数则禁止其他用户用 write 发消息,用 -y 参数则允许接收消息,若无参数则报告现在的状况


5.3 write
[语法]: write 用户 终端
[说明]: write 与指定的终端上的用户直接对话,直到接收到文件结束符
[例子]:write mary console


5.4 mailx
[语法]: mailx [选项] [名字]
[说明]: 本命令用于发送和接收邮件,名字是收信人的用户名,本命令有许多内部命令,选项说明如下:
  -e 检查是否有邮件,若有则返回0
  -f 文件名 从文件中读取邮件而非从邮箱中
  -H 只显示信件标题
  -s 标题 设定标题为指定标题
[命令说明]
  . 当前信件
  n 第 n 封信
  ^ 第一封未被处理的信
  $ 最后一封信
  * 所有的信
  n-m 第n 封至第m封信
  用户 由指定用户发出的信
  / 字符串 标题中包含字符串的信
  :c 满足指定类型c的信,类型可为
  d 已删除的信
  n 信传送的信
  o 旧信件
  r 已读过的信
  u 未读过的信
  p 一次显示多封信
  t 显示某封信的前若干行
  si 显示信件字符数
  h 显示信件标题
  d 删除信件
  u 恢复信件
  s [信件表] 文件名 将信件存入指定文件中
  q 退出
  r 回信
  ~e 编辑信件
  ~r 文件 从文件中读取信件
  [例子]:
  mailx mary < myletter
第六章 Shell编程

  shell 不但是 Unix 的用户交互界面,还是一门程序设计语言,系统注册进入时就会执行一个shell命令文件 .profile ,下面对shell中的常用命令作简单介绍。
  $n shell 程序命令行中的第n 个参数,n为0-9,当n 为0时表示命令名
  $# 命令行中参数的个数
  $$ 本shell 命令的进程号
  $! 最后一个后台进程的代号
  $* 所有命令行参数
  $@ 与$*相似,但其值不同
  $HOME 注册时进入的目录
  $PATH 命令的搜索目录
  $PS1 系统第一个提示符,一般为$
  $PS2 系统第二个提示符,一般为>
  shift [n] 将命令行参数往左移一位,但$0不变
  变量名=字符串 将字符串赋予变量名,以后可用$变量名引用该变量
  export 变量名表 将变量名表所列变量传递给子进程
  read 变量名表 从标准输入读字符串,传给指定变量
  echo 变量名表 将变量名表指定的变量显示到标准输出
  set 显示设置变量
  env 显示目前所有变量

  if 条件执行,语法是:
   if 条件
    then 指令
   fi

  case 分支执行,语法是:
   case 字符串变量 in
    值1) 指令...
    值2) 指令...
    ...
    esac

  while 条件为真时循环,语法是:
   while 条件
   do
    指令...
   done

  until 条件为假时循环,语法是:
   until 条件
   do
    指令...
   done

  for 变量在表中时循环,语法是:
   for 变量名 in 字组表
    do
     指令...
    done

  break 从循环中退出,语法:break n
  n 表示跳出循环的层数

  continue 继续循环,语法:continue n
  n 表示退到包含continue 语句的第n 层继续循环

  exit 退出shell
  func shell内部可定义函数,语法:
  func 函数名()
  {
   指令...
  }

  expr 将其后的串解释为表达式并计算其值,运算符前后需有空格
  trap 捕获信号,语法 trap n ,捕获信号 n (信号说明参见kill)

  test 条件测试,语法 test [选项] 参数
  选项 -f 文件 若文件存在且可读则真
  -w 文件 若文件存在且可写则真
  -x 文件 若文件存在且可执行则真
  -f 文件 若文件存在且为普通文件则真
  -d 文件 若文件存在且为目录文件则真
  -p 文件 若文件存在且为fifo文件则真
  -s 文件 若文件存在且不空则真
  -z 串 若串长度为0则真
  -n 串 若串长度不为0则真
  串 若串不是空串则真
  串1=串2 若串1等于串2则真
  串1!=串2 若串1不等于串2则真
  n1 -eq n2 若n1与n2数值相当则真
  n1 -ne n2 若n1与n2数值不相当则真
  n1 -lt n2 若n1小于n2则真
  n1 -le n2 若n1小于等于n2则真
  n1 -gt n2 若n1大于n2则真
  n1 -ge n2 若n1大于等于n2则真
  可用 与 -a 或 -o 非 ! 将条件表达式连接起来
第七章 数学计算命令

[语法]: bc [-c] [-l] [文件...]
[说明]: bc是一个交互式的高精度计算工具,采用类似于C语言的语法,能够从指定文件中读出命令执行,然后再进入交互式执行,事实上,bc是dc的预编译器,它自动激活dc,将语句经预编译后传递给dc,退出bc的命令是quit,bc中的ibase,obase,scale分别表示输入基数,输出基数,小数点右边的位数。
  -c bc 只编译,而不将编译结果送dc,将其送到标准输出上
  -l 预定义一个数学函数库,可在bc中使用以下函数
  s(x) sine
  c(x) cosine
  e(x) exponential
  l(x) log
  a(x) arctangent
  j(n,x) Bessel
[例子]:
  bc -l 进入bc
  scale=10 将小数位定为10位
  e(1) 计算e的小数点后10位
  quit 退出bc

第八章 VI命令

vi
[语法]:vi [-wn] [-R] 文件...
[说明]: vi 是一个基于行编辑器 ex 上的全屏幕编辑器,可以在vi中使用ex,ed的全部命令,vi选项中 -wn 指将编辑窗口大小置为n行,-R为将编辑的文件置为只读模式, vi工作模式分为命令模式和输入模式,一般情况下在命令模式下,可敲入vi命令,进入输入模式下时可以编辑要编辑的文本,命令 a A i I o O c C s S R 可进入输入模式,在输入模式下按 ESC 键可推出输入模式,回到命令模式,在命令模式中敲入:命令,则可进入ex方式,在屏幕底部出现提示符 : ,此时可使用任意ex命令,屏幕底行也用来作/ ? ! 命令的提示行,大多数命令可以在其前面加数字,表示命令执行的重复次数,下面简单介绍一下vi 的命令集,^ 表示(CTRL)键
  ^B 退回前一页,前面加数字表示重复次数,每次换页时保留上一页的两行
  ^D 在命令模式下,表示下滚屏幕的一半,在输入模式下,表示回退至左边的自动缩进处
  ^E 显示屏幕底线之下的一行
  ^F 前进一页,前面加数字表示重复次数,每次换页时保留上一页的两行
  ^G 显示当前文件名,当前行号和文件总行数,并用百分号当前行在整个文件中的位置
  ^H(退格) 在命令模式下,光标左移一格;在输入模式下,删去前面的字符
  ^I(TAB) 在输入模式下,产生一串空格
  ^J(LF) 光标下移一行
  ^L 刷新屏幕,即将屏幕重新显示
  ^M(回车) 在命令模式下,光标移动至下行开头在输入模式下,开辟一新行
  ^N 光标下移一行
  ^P 光标上移一行
  ^Q 在输入模式下,将其后的非打印字符作为正文插入
  ^R 刷新屏幕
  ^U 屏幕上滚一半,前面加数字时表示上滚的行数,此数字对以后的^D ^U 命令有效
  ^V 在输入模式下,将其后的非打印字符作为正文插入
  ^W 在输入模式下,使光标回退一个字
  ^Y 显示屏幕底线之上的一行
  ^Z 暂停编辑,退回上层Shell
  ^[(ESC) 退出输入模式,回到命令模式
  ! 暂时退出编辑,执行Shell命令
  "(双引号) 用于标志有名缓冲区,编号缓冲区1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文
  $ 将光标移动到当前行尾,前加数字则表示前移行数,如2$表示移动到下一行行尾
  % 将光标移动到配对的小括号()或大括号{}上去
  ( 退回句子开头
  ) 前移到句子开头
  - 退到上一行第一个非空格字符
  . 重复上一次改变缓冲区内容的命令
  / 模式 向前搜索模式,将光标移动到模式出现处,模式是一个正规表达式,(参看 grep)
  : 在屏幕底部提示:,其后可使用ex命令
  ? 功能同 / ,但方向是向前查找
  [[ 光标回退至前一节分界处
  \ 转意符
  ]] 光标前移至节分界处
  ^(不是CTRL) 光标移至当前行第一个非空字符上
  ' 连续两个''表示将光标移至其移动前的位置,'后跟字母表示光标字母标记的行首(参看 m 命令)

  A 在行尾插入正文,进入输入模式
  B 光标回退一个字
  C 替换光标后的内容
  D 删除光标后的内容
  E 光标前移到字尾
  F 字符 在当前行向左查找指定字符
  G 光标移动到其前面数字指定的行,若未指定则移动到最后一行
  H 光标移动到屏幕顶行,若前面有数字,则移动到屏幕上该数字指定的行
  I 在行开头插入正文
  J 连接两行,若前面有数字则连接数字指定的行
  L 光标移动到屏幕底行,若前面有数字,则移动到屏幕底线往上数该数字指定的行
  M 光标移动到屏幕中线
  N 使用模式查找/或?时,重复找下一个匹配的模式,但方向与上次相反,其功能同 n ,但方向相反
  O 在当前行上开辟一新行
  P 将上次被删除的正文插入光标前面,可在其前面加缓冲区编号,编号1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文
  Q 从vi 推出进入ex命令状态
  R 替换字符串
  S 替换整行
  T 字符 向左查找字符
  U 将当前行恢复至第一次修改前的状态
  W 光标移至下一个字首
  X 删除光标前的字符
  Y 将当前行存入无名缓冲区,前面加数字表示存入的行数,也可用有名缓冲区来保存,以后可用命令p或P将其取出
  ZZ 存盘退出vi
  a 光标后插入正文
  b 光标回退至上一个字首
  cw 替换当前字
  c) 替换当前句子
  dw 删除一个字
  dd 删除一行
  e 光标移到下一个字末
  f 字符 在当前行向前查找字符
  h 光标左移一格
  i 在光标前插入正文
  j 光标下移一行
  k 光标上移一行
  l 光标右移一格
  m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行,(参看'命令)
  n 重复上次 / 或 ? 命令
  o 在当前行下开辟一新行
  p 将用户缓冲区内容放到光标位置(参看P命令)
  r 替换当前字符
  s 用一串字符替换当前字符
  t 字符 光标移动至字符前
  u 取消上次操作
  w 光标移至下一字首
  x 删除当前字符
  yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命令取出
  yy 将当前行存入无名缓冲区,用法参看yw
  { 光标移动至前一段开头
  | 光标移至行首,若前面加数字,则移到数字指定行的行首
  } 光标移至下一段开头在:提示符下,常用命令如下:
  :w 当前文件存盘
  :w! 强制存盘
  :w 文件 将内容写入指定文件
  :w! 文件 强制写入指定文件
  :x,y w 文件 将 x至 y 行写入指定文件中
  :r 文件 将文件读到光标位置
  :r ! 命令 将系统命令的输出读到光标位置
  :q 退出编辑
  :q! 强制退出
  :x 与命令ZZ相同
  :e 文件名 编辑另一文件
  :e ! 重新编辑文件,放弃任何改变
  :sh 执行sh,结束后回到编辑
  :! 命令 执行命令后回到编辑
  :n 编辑下一文件
  :n 文件表 重新定义待编辑文件表
  :set 设置 vi 的选项,例如 set nu 表示每行前显示行号,在选项前加no则表示清除该选项,例如 set nonu 表示每行前不显示行号,下面是一些常用的选项:
  ai 自动缩进
  aw 编辑下一文件前自动存盘
  ic 查找字符串时不区分大小写
  nu 每行前显示行号
  sm 输入)及}时显示与之配对的( 或 {
  slow 插入时延迟屏幕刷新
  ws 使查找能绕过文件尾从头进行
  wa 写文件之前不作对文件的检查
附录 UNIX 常用命令简介

UNIX 命令大多数可用联机帮助手册 man 获得帮助,下面是常用命令及简单说明,可供用户快速查找使用。

命令 功能简述
  acctcom 等于进程记帐文件
  accton 启动或中止记帐进程
  adb 汇编语言调试工具
  admin 创建和管理SCCS文件
  ar 档案文件和库文件管理程序
  as 汇编器
  asa 回车控制
  at 在指定时间执行程序
  awk 模式搜索和处理语言
  banner 制作标题
  basename 生成文件基本名(无前。后缀)
  batch 命令的延迟执行
  bc 计算器
  bdiff 大型文件比较
  bfs 大文件搜索
  break 退出循环
  cal 打印日历表
  calendar 打印日历表
  cancel 取消打印任务
  case 分支语句
  cb C语言整理程序
  cd 改变当前目录
  cc C语言编译器
  cdc SCCS实用程序
  cflow 生成C语言流程图
  checkeq 数学公式排版命令
  chgrp 改变文件组
  chmod 改变文件存取模式
  chown 改变文件主
  chroot 改变根目录
  cksum 显示校验和
  clri 清除指定的I节点
  cmp 文件比较
  col 过滤反向换行
  comb SCCS实用程序
  comm 显示两个排序文件的公共行
  command 执行简单命令
  continue 进入下一循环
  cp 复制文件
  cpio 复制文件档案
  cpp C语言预处理程序
  crash 检查系统内存映象
  create 建立临时文件
  cref 生成交叉引用表
  cron 在指定时间执行一组命令
  crontab 为命令cron 准备crontab文件
  crypt 加密/解密
  csplit 将一个文件分解
  ct 远程终端注册
  ctags 创建供vi使用的标识符
  cu 呼叫另一UNIX系统
  cut 断开一文件中所选择的字段
  cxref 生成C程序交叉访问表
  date 打印和设置时间
  dc 桌面计算器
  dd 转换和复制文件
  delta SCCS实用程序
  deroff 去掉排版格式
  devnm 标识设备名
  df 显示可用磁盘空间
  diff 显示两个文件的差异
  diff3 显示三个文件的差异
  dircmp 目录比较
  dis 反汇编程序
  du 显示对磁盘的占用情况
  dump 对指定文件备份
  echo 回显指定参数
  ed 行编辑器
  edit 文本编辑器
  egrep 在文件中查找指定模式
  env 设置命令执行环境
  eqn 数学公式排版命令
  eval 执行指定命令
  ex 行编辑器
  exec 执行指定命令
  exit 进程中止
  expand 使表格占满行宽
  export 将变量传递给子程序
  expr 计算表达式值
  factor 因式分解
  false 返回FALSE
  fgrep 在文件中查找指定模式
  file 确定文件类型
  find 查找符号条件的文件
  fmt 安排简单的文本格式
  fold 折行
  for 循环语句
  fsck 文件系统检查和修复
  fsdb 文件系统调试程序
  fumount 强制性拆协指定资源
  function 函数说明
  fuser 列出使用文件的进程
  fwtmp 产生记帐记录
  get SCCS实用程序
  getconf 查找配置参数
  getopt 获得命令中的选择项
  getopts 获得命令中的选择项
  getty 设置终端类型、模式、行律等
  grep 在文件中查找指定模式
  head 打印文件的头若干行
  hexdump 按十六进制转储文件
  id 显示用户号
  if 条件语句
  init UNIX 初启进程
  install 安装一个文件到文件系统
  ipcrm 删除IPC队列
  ipcs 显示IPC状态
  join 连接两个文件(关系操作〕
  kill 中止指定进程
  killall 中止所有活动进程
  labelit 给文件系统提供标号
  ld 目标文件链接编辑器
  lex 词法分析程序
  line 读一行
  link 连接文件
  lint C程序检查程序
  ln 链接文件
  local 建立局部变量
  logger 显示注册信息
  login 注册
  logname 获取注册名
  look 在排序文件中查找某行
  lorder 查找目标库的次序关系
  lp 打印文件
  lpr 打印文件
  lpstat 显示打印队列状态
  ls 目录列表
  mail 发送或接收电子邮件
  mailx 发送、接收或处理电子邮件
  make 执行有选择的编译
  makekey 生成加密码
  man 显示命令用法
  mesg 接收或取消对话方式
  mkdir 建立目录
  mkfifo 建立FIFO文件
  mkfs 建立文件系统
  mknod 建立文件系统的I节点
  mount 安装文件系统
  mv 移动文件
  mvdir 移动目录
  ncheck 按节点号生成节点名清单
  neqn 数学公式排版命令
  newgrp 把用户加入到新组
  news 打印消息
  nice 改变命令执行优先级
  nl 给文件加行号
  nm 显示目标文件符号表
  nohup 忽略挂起或退出执行命令
  nroff 文本文件排版
  od 按八进制转储文件
  pack 压缩文件
  passwd 改变口令
  paste 文件合并
  pax 可移植档案管理程序
  pcat 显示压缩格式文件
  pg 分屏显示
  pr 按打印格式显示文件
  pstat 报告系统信息
  pwck 口令文件校验程序
  pwd 显示当前工作目录
  quot 检查文件系统所有权
  ratfor 转换成标准FORTRANC程序
  read 从标准输入读一行
  readonly 标记变量为只读
  red 文本编辑器
  regcmp 正规表达式编辑
  restor 文件系统恢复程序
  restore 文件系统恢复程序
  return 返回语句
  rev 颠倒文件中每行字符次序
  rm 删除文件
  rmdel SCCS使用程序
  rmdir 删除目录
  rsh(net) 远程SHELL
  rsh(sec) 受限SHELL
  runacct 运行日常记帐程序
  sact SCCS实用程序
  sag 打印系统活动图
  sar 报告系统活动
  sccsdiff SCCS实用程序
  sdb 符号调试器
  sdiff 并列显示两个文件的差别
  sed 流编辑器
  sendto 发送邮件
  set 设置选项或参数
  setmnt 建立文件系统安装表
  sh SHELL解释器
  shift 命令行参数移位
  shl SHELL层(layer)管理程序
  shutdown 关机
  size 显示目标文件长度
  sleep 挂起进程一段时间
  sort 文件排序和合并
  spell 拼写错误检查程序
  spellin 拼写错误检查
  spellout 拼写错误检查
  spline 按平滑曲线输出数据
  split 分解一个文件
  strings 在目标文件中寻找可打印字符
  strip 删除符号表
  stty 设置终端模式
  su 改变用户
  sum 显示文件校验和及块数
  sync 更新磁盘
  tabs 设置制表符
  tbl 表格排版
  tee 在管道上建立多通路
  tic 终端数据库编译程序
  time 打印执行命令所花时间
  tiemx 报告命令所花时间及活动
  touch 更新文件时间
  tput 恢复终端或查询数据库
  tr 转换字符
  trap 捕获信号
  troff 文本文件排版
  true 返回TRUE
  tsort 拓扑排序
  tty 显示终端设备名
  umask 设置文件掩码
  umount 拆卸文件系统
  uname 显示系统名
  unget SCCS实用程序
  uniq 删除文件中重复行
  units 度量单位转换
  unlink 删除文件
  unpack 将压缩文件还原
  until 循环语句
  update 更新磁盘
  val SCCS实用程序
  vc SCCS实用程序
  vi 全屏幕编辑器
  volcopy 文件系统的文字拷贝
  wait 等待所有字进程结束
  while 循环语句
  who 显示谁在使用系统
  whodo 显示哪些用户在做什么
  write 和另一用户直接对话
  xargs 建立参数表并执行命令
  yacc 语法分析程序生成器
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 24 发表于: 2007-05-04
引用
配置安全的SCO UNIX网络系统



引用
  一个网络系统的安全程度,在很大程度上取决于管理者的素质,以及管理者所采取的安全措施的力度。在对系统进行配置的同时,要把安全性问题放在重要的位置。

  SCO UNIX,作为一个技术成熟的商用网络操作系统,广泛地应用在金融、保险、邮电等行业,其自身内建了丰富的网络功能,具有良好的稳定性和安全性。但是,如果用户没有对UNIX系统进行正确的设置,就会给入侵者以可乘之机。因此在网络安全管理上,不仅要采用必要的网络安全设备,如:防火墙等,还要在操作系统的层面上进行合理规划、配置,避免因管理上的漏洞而给应用系统造成风险。

  下面以SCO UNIX Openserver V5.0.5为例,对操作系统级的网络安全设置提几点看法,供大家参考。

  合理设置系统安全级别
  SCO UNIX提供了四个安全级别,分别是Low、Traditional、Improved和High级,系统缺省为Traditional级;Improved级达到美国国防部的C2级安全标准;High级则高于C2级。用户可以根据自己系统的重要性及客户数的多少,设置适合自己需要的系统安全级别,具体设置步骤是:scoadmin→system→security→security profile manager。

  合理设置用户
  建立用户时,一定要考虑该用户属于哪一组,不能随便选用系统缺省的group组。如果需要,可以新增一个用户组并确定同组成员,在该用户的主目录下,新建文件的存取权限是由该用户的配置文件.profile中的umask的值决定。umask的值取决于系统安全级, Tradition安全级的umask的值为022,它的权限类型如下:

  文件权限: - r w - r - - r - -

  目录权限: d r w x r - x r - x

  此外,还要限制用户不成功登录的次数,避免入侵者用猜测用户口令的方法尝试登录。为账户设置登录限制的步骤是:Scoadmin--〉Account Manager--〉选账户--〉User--〉Login Controls--〉添入新的不成功登录的次数。

  指定主控台及终端登录的限制
  如果你希望root用户只能在某一个终端(或虚屏)上登录,那么就要对主控台进行指定,例如:指定root用户只能在主机第一屏tty01上登录,这样可避免从网络远程攻击超级用户root。设置方法是在/etc/default/login文件增加一行:CONSOLE=/dev/tty01。

  注意:设置主控台时,在主机运行中设置后就生效,不需要重启主机。

  如果你的终端是通过Modem异步拨号或长线驱动器异步串口接入UNIX主机,你就要考虑设置某终端不成功登录的次数,超过该次数后,锁定此终端。设置方法为:scoadmin→Sysrem→Terminal Manager→Examine→选终端,再设置某终端不成功登录的次数。如果某终端被锁定后,可用ttyunlock〈终端号〉进行解锁。也可用ttylock〈终端号〉直接加锁。

  文件及目录的权限管理
  有时我们为了方便使用而将许多目录和文件权限设为777或666,但是这样却为黑客攻击提供了方便。因此,必须仔细分配应用程序、数据和相应目录的权限。发现目录和文件的权限不适当,应及时用chmod命令修正。

  口令保护的设置
  口令一般不要少于8个字符,口令的组成应以无规则的大小写字母、数字和符号相结合,绝对避免用英语单词或词组等设置口令,而且应该养成定期更换各用户口令的习惯。通过编辑/etc/default/passwd文件,可以强制设定最小口令长度、两次口令修改之间的最短、最长时间。另外,口令的保护还涉及到对/etc/passwd和/etc/shadow文件的保护,必须做到只有系统管理员才能访问这两个文件。

  合理设置等价主机
  设置等价主机可以方便用户操作,但要严防未经授权非法进入系统。所以必须要管理/etc/hosts.equiv、.rhosts和.netrc这3个文件。其中,/etc /hosts.equiv列出了允许执行rsh、rcp等远程命令的主机名字;.rhosts在用户目录内指定了远程用户的名字,其远程用户使用本地用户账户执行rcp、rlogin和rsh等命令时不必提供口令;.netrc提供了ftp和rexec命令所需的信息,可自动连接主机而不必提供口令,该文件也放在用户本地目录中。由于这3个文件的设置都允许一些命令不必提供口令便可访问主机,因此必须严格限制这3个文件的设置。在.rhosts中尽量不用“+ +”,因为它可以使任何主机的用户不必提供口令而直接执行rcp、rlogin和rsh等命令。

  合理配置/etc/inetd.conf文件
  UNIX系统启动时运行inetd进程,对大部分网络连接进行监听,并且根据不同的申请启动相应进程。其中ftp、telnet、rcmd、rlogin和finger等都由inetd来启动对应的服务进程。因此,从系统安全角度出发,我们应该合理地设置/etc/inetd.conf文件,将不必要的服务关闭。关闭的方法是在文件相应行首插入“#”字符,并执行下列命令以使配置后的命令立即生效。

  #ps-ef | grep inetd | grep -v grep

  #kill -HUP 〈 inetd-PID 〉

  合理设置/etc/ftpusers文件
  在/etc/ftpuser文件里列出了可用FTP协议进行文件传输的用户,为了防止不信任用户传输敏感文件,必须合理规划该文件。在对安全要求较高的系统中,不允许ftp访问root和UUCP,可将root和UUCP列入/etc/ftpusers中。

  合理设置网段及路由
  在主机中设置TCP/IP协议的IP地址时,应该合理设置子网掩码(netmask),把禁止访问的IP地址隔离开来。严格禁止设置缺省路由(即:default route)。建议为每一个子网或网段设置一个路由,否则其他机器就可能通过一定方式访问该主机。

  不设置UUCP
  UUCP为采用拨号用户实现网络连接提供了简单、经济的方案,但是同时也为黑客提供了入侵手段,所以必须避免利用这种模式进行网络互联。

  删除不用的软件包及协议
  在进行系统规划时,总的原则是将不需要的功能一律去掉。如通过scoadmin--〉Soft Manager去掉X Window;通过修改/etc/services文件去掉UUCP、SNMP、POP、POP2、POP3等协议。

  正确配置.profile文件
  .profile文件提供了用户登录程序和环境变量,为了防止一般用户采用中断的方法进入$符号状态,系统管理者必须屏蔽掉键盘中断功能。具体方法是在.porfile首部增加如下一行:

  trap ' ' 0 1 2 3 5 15

  创建匿名ftp
  如果你需要对外发布信息而又担心数据安全,你可以创建匿名ftp,允许任何用户使用匿名ftp,不需密码访问指定目录下的文件或子目录,不会对本机系统的安全构成威胁,因为它无法改变目录,也就无法获得本机内的其他信息。注意不要复制/etc/passwd、/etc/proup到匿名ftp的etc下,这样对安全具有潜在的威胁。

  应用用户和维护用户分开
  金融系统UNIX的用户都是最终用户,他们只需在具体的应用系统中完成某些固定的任务,一般情况下不需执行系统命令(shell),其应用程序由.profile调用,应用程序结束后就退到login状态。维护时又要用root级别的su命令进入应用用户,很不方便。可以通过修改.profile 文件,再创建一个相同id用户的方法解决。例:应用用户work有一个相同id相同主目录的用户worksh, 用户work的.profile文件最后为:

  set -- `who am i`

  case $1 in

  work ) exec workmain;exit;;

  worksh ) break;;

  esac

  这样当用work登录时,执行workmain程序;而用worksh登录时,则进入work的$状态。


[ 本帖最后由 尉迟小乐 于 2007-5-5 00:08 编辑 ]
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 25 发表于: 2007-05-04
引用
NFS-UNIX中的网络文件系统


引用
--------------------------------------------------------------------------------
NFS(Network File System)是由Sun创建的网络协议,主要供不同的UNIX主机之间共享文件系统,由于存在一些安全隐患,Sun后来又发展出了NIS,NIS+,这些协议的使用在UNIX的世界里面十分普遍,Sun还开发了PC-NFS,供用户从PC上运行NFS协议,共享UNIX的资源。对于Linux来说,由于有Samba的存在,所以大多数人不很熟悉NFS,其实在多台Linux主机之间共享文件系统,NFS仍然不失为一种简单易用的选择。下面我们就以较短的篇幅,简单地介绍一下NFS以及如何实现。
要把自己的文件系统共享出去,首先保证自己的机器上启动了NFS服务,可以用:
# ps –ef| grep nsfd
查看一下nfsd是否已经运行,如果没有,请启动它,启动和停止NFS如下:
# /etc/rc.d/init.d/nfs start
# /etc/rc.d/init.d/nfs start
也可以调用ntsysv命令,将nfs服务设置为自动运行。
然后,将你要共享出去的文件系统,需要用exportfs命令,你也可以通过设置/etc/exports文件,在系统启动的时候,自动将资源共享出去。具体用法请查看exportfs的手册页。
要配置NFS,就是要修改/etc/fstab(客户端)和/etc/exports(服务器端),exports文件在服务器端指定要与哪些客户共享哪些目录以及每个客户的访问权限;fstab文件在客户端用来指定应该联接哪些目录以及把它们放在本地目录的哪一个位置。
1. 服务器端配置/etc/exports文件
文件的格式如下:
----------------------------------------------------------------------------------------------------------------
#要共享的目录 主机名1(权限) 主机名2(权限) 主机名3(权限)。。。。。。
/dir/exports host1(rw) host2(rw)
----------------------------------------------------------------------------------------------------------------
如果一行太长,用符号“”连接到下一行。关于权限,可供选择的是:
rw 可以读和写
ro 只读
no_root_squash 承认并信任客户记得root账号
当设置完/etc/exports文件后,运行下面的命令让共享生效:
# exportfs -a
2. 要共享资源的主机运行mount
我们可以简单地使用mount命令安装NFS服务器的文件系统,在mount远程文件系统时,和mount本地的文件系统时一样的,唯一的不同是要在文件系统的描述前面加上远程文件系统的主机名称,如果该主机在/etc/hosts中出现了,那么在命令中使用主机名字就可以,否则要使用IP地址。语法一般是:
# mount servername:/exported_dir /dir_to_mount –t nfs
例如,主机jw运行了NFS,将自己的/export目录共享了,那么客户机lidf应该这样: # mount jw:/export /home/inport –t nfs
客户机在mount服务器的资源时,可以传递一些命令选项,如:
# mount jw:/export /home/inport –o ro –t nfs
表示把jw主机的/export目录挂在本地的/home/inport目录下,只读。其他选项如下:
rw 可以读写
bg 后台安装(避免因为安装不上服务器资源而导致系统停顿)
intr 出现问题是,可以中断
soft 允许经过retrans次尝试后,停止安装,返回失败信息
retrans 为soft指定尝试次数
当要卸载服务器的文件系统时,和本地一样,使用umount命令。
# umount /home/inport
更具体的参数使用请查看mount的手册页和NFS-HOWTO。
3.利用/etc/fstab文件,在启动时自动挂载远程主机的文件系统
/etc/fstab文件包含了以哪种方式挂载哪种文件系统的信息。对于NFS的mount,它包括了服务器名字、释放(export)的服务器目录、本地的挂载点(mount point)和控制挂载的一些选项。
下面是一个/etc/fstab文件的例子:
#device mount_point filesystem_type option fsck
/dev/hda5 / ext2 defaults 1 1
/dev/hda6 /usr ext2 defaults 1 2
/dev/hda9 /usr/local ext2 defaults 1 2
/dev/hda8 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0
jw:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr
文件系统了各种文件系统的信息,每一个文件系统单独一行,每行的域的信息以空格或者tab分开。在fstab文件中,行的前后顺序是很重要的,因为这可能对fsck、mount和umount等命令有影响。
关于这6个域的解释,请查看介绍fstab的部分。
我们注意到,按照最后一行,系统在启动的时候会尝试挂载主机jw的/usr/local/pub到本地的/pub,文件系统类型是nfs,最后两个供fsck使用的参数不填,表示不进行检查。
注意NFS服务器和客户机是相对的,一个提供共享资源的NFS服务器,也可以共享其他NFS服务器的资源。
要在系统启动的时候就mount其他NFS服务器的资源,我们可以修改/etc/fstab文件:
4. 配置文件示例
一个完整的/etc/exports文件
----------------------------------------------------------------------------------------------------------------------
#
# /etc/exports for jw
#
# Share the following directory
/export/home lidf(rw) syy(rw) caibb(rw) zhougj(ro) eagle(ro)

#
# Share local software
#
/export/usr/local lidf(rw,no_root_squash)
syy(rw,no_root_squash)
caibb(rw,no_root_squash)
zhougj(ro)
eagle(ro)
----------------------------------------------------------------------------------------------------------------------

一个完整的/etc/fstab文件
----------------------------------------------------------------------------------------------------------------------
#
# /etc/fstab for lidf
#
/dev/hda1 / ext2 rw 1 1
/dev/hda2 swap swap
/dev/hda3 /usr ext2 rw 0 0
/dev/hda4 /var ext2 rw 0 0
jw:/export/home /home nfs rw,bg,intr,soft 0 0
jw:/export/usr/local /usr/local nfs rw,bg,intr,soft 0 0
----------------------------------------------------------------------------------------------------------------------
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 26 发表于: 2007-05-04
引用
UNIX常用系统调用


引用
系统管理-UNIX编程-UNIX系统编程常用库函数说明

UNIX系统为程序员提供了许多子程序,这些子程序可存取各种安全属性.有 些是信息子程序,返回文件属性,实际的和有效的UID,GID等信息.有些子程序可 改变文件属性.UID,GID等有些处理口令文件和小组文件,还有些完成加密和解密. 本文主要讨论有关系统子程序,标准C库子程序的安全,如何写安全的C程序 并从root的角度介绍程序设计(仅能被root调用的子程序).

1.系统子程序
(1)I/O子程序
*creat():建立一个新文件或重写一个暂存文件. 需要两个参数:文件名和存取许可值(8进制方式).如: creat("/usr/pat/read_write",0666) /* 建立存取许可方式为0666的文件 */ 调用此子程序的进程必须要有建立的文件的所在目录的写和执行许可,置 给creat()的许可方式变量将被umask()设置的文件建立屏蔽值所修改,新 文件的所有者和小组由有效的UID和GID决定. 返回值为新建文件的文件描述符.
*fstat():见后面的stat().
*open():在C程序内部打开文件. 需要两个参数:文件路径名和打开方式(I,O,I&O). 如果调用此子程序的进程没有对于要打开的文件的正确存取许可(包括文 件路径上所有目录分量的搜索许可),将会引起执行失败. 如果此子程序被调用去打开不存在的文件,除非设置了O_CREAT标志,调用 将不成功.此时,新文件的存取许可作为第三个参数(可被用户的umask修 改).
当文件被进程打开后再改变该文件或该文件所在目录的存取许可,不影响对该文件的I/O操作.
*read():从已由open()打开并用作输入的文件中读信息. 它并不关心该文件的存取许可.一旦文件作为输入打开,即可从该文件中读 取信息.
*write():输出信息到已由open()打开并用作输出的文件中.同read()一样 它也不关心该文件的存取许可.
(2)进程控制
*exec()族:包括execl(),execv(),execle(),execve(),execlp()和execvp() 可将一可执行模快拷贝到调用进程占有的存贮空间.正被调用进 程执行的程序将不复存在,新程序取代其位置. 这是UNIX系统中一个程序被执行的唯一方式:用将执行的程序复盖原有的 程序.
安全注意事项:
. 实际的和有效的UID和GID传递给由exec()调入的不具有SUID和SGID许 可的程序.
. 如果由exec()调入的程序有SUID和SGID许可,则有效的UID和GID将设 置给该程序的所有者或小组
. 文件建立屏蔽值将传递给新程序.
. 除设了对exec()关闭标志的文件外,所有打开的文件都传递给新程序. 用fcntl()子程序可设置对exec()的关闭标志.
*fork():用来建立新进程.其建立的子进程是与调用fork()的进程(父进程) 完全相同的拷贝(除了进程号外)
安全注意事项:
. 子进程将继承父进程的实际和有效的UID和GID. . 子进程继承文件方式建立屏蔽值.
. 所有打开的文件传给子进程.
*signal():允许进程处理可能发生的意外事件和中断. 需要两个参数:信号编号和信号发生时要调用的子程序. 信号编号定义在signal.h中. 信号发生时要调用的子程序可由用户编写,也可用系统给的值,如:SIG_IGN 则信号将被忽略,SIG_DFL则信号将按系统的缺省方式处理. 如许多与安全有关的程序禁止终端发中断信息(BREAK和DELETE),以免自己 被用户终端终止运行. 有些信号使UNIX系统的产生进程的核心转储(进程接收到信号时所占内存 的内容,有时含有重要信息),此系统子程序可用于禁止核心转储.
(3)文件属性
*access():检测指定文件的存取能力是否符合指定的存取类型. 需要两个参数:文件名和要检测的存取类型(整数).
存取类型定义如下:
0: 检查文件是否存在
1: 检查是否可执行(搜索)
2: 检查是否可写
3: 检查是否可写和执行
4: 检查是否可读
5: 检查是否可读和执行
6: 检查是否可读可写可执行
这些数字的意义和chmod命令中规定许可方式的数字意义相同. 此子程序使用实际的UID和GID检测文件的存取能力(一般有效的UID和GID 用于检查文件存取能力). 返回值: 0:许可 -1:不许可.
*chmod():将指定文件或目录的存取许可方式改成新的许可方式. 需要两个参数:文件名和新的存取许可方式.
*chown():同时改变指定文件的所有者和小组的UID和GID.(与chown命令不 同). 由于此子程序同时改变文件的所有者和小组,故必须取消所操作文件的SUID 和SGID许可,以防止用户建立SUID和SGID程序,然后运行chown()去获得别 人的权限.
*stat():返回文件的状态(属性). 需要两个参数:文件路径名和一个结构指针,指向状态信息的存放 的位置. 结构定义如下: st_mode: 文件类型和存取许可方式 st_ino: I节点号 st_dev: 文件所在设备的ID st_rdev: 特别文件的ID st_nlink: 文件链接数 st_uid: 文件所有者的UID st_gid: 文件小组的GID st_size: 按字节计数的文件大小 st_atime: 最后存取时间(读) st_mtime: 最后修改时间(写)和最后状态的改变 st_ctime: 最后的状态修改时间 返回值: 0:成功 1:失败
*umask():将调用进程及其子进程的文件建立屏蔽值设置为指定的存取许可. 需要一个参数: 新的文件建立屏值.
(4)UID和GID的处理
*getuid():返回进程的实际UID.
*getgid():返回进程的实际GID. 以上两个子程序可用于确定是谁在运行进程.
*geteuid():返回进程的有效UID.
*getegid():返回进程的有效GID. 以上两个子程序可在一个程序不得不确定它是否在运行某用户而不是运行 它的用户的SUID程序时很有用,可调用它们来检查确认本程序的确是以该 用户的SUID许可在运行.
*setuid():用于改变有效的UID. 对于一般用户,此子程序仅对要在有效和实际的UID之间变换的SUID程序才 有用(从原有效UID变换为实际UID),以保护进程不受到安全危害.实际上该 进程不再是SUID方式运行. *setgid():用于改变有效的GID.

2.标准C库
(1)标准I/O
*fopen():打开一个文件供读或写,安全方面的考虑同open()一样.
*fread(),getc(),fgetc(),gets(),scanf()和fscanf():从已由fopen()打 开供读的文件中读取信息.它们并不关心文件的存取许可.这一点 同read().
*fwrite(),put(),fputc(),puts,fputs(),printf(),fprintf():写信息到 已由fopen()打开供写的文件中.它们也不关心文件的存取许可. 同write().
*getpass():从终端上读至多8个字符长的口令,不回显用户输入的字符. 需要一个参数: 提示信息. 该子程序将提示信息显示在终端上,禁止字符回显功能,从/dev/tty读取口 令,然后再恢复字符回显功能,返回刚敲入的口令的指针.
*popen():将在(5)运行shell中介绍.
(2)/etc/passwd处理
有一组子程序可对/etc/passwd文件进行方便的存取,可对文件读取到入口 项或写新的入口项或更新等等.
*getpwuid():从/etc/passwd文件中获取指定的UID的入口项.
*getpwnam():对于指定的登录名,在/etc/passwd文件检索入口项.
以上两个子程序返回一指向passwd结构的指针,该结构定义在 /usr/include/pwd.h中,定义如下: struct passwd {
char * pw_name; /* 登录名 */
char * pw_passwd; /* 加密后的口令 */
uid_t pw_uid; /* UID */
gid_t pw_gid; /* GID */
char * pw_age; /* 代理信息 */
char * pw_comment; /* 注释 */
char * pw_gecos;
char * pw_dir; /* 主目录 */
char * pw_shell; /* 使用的shell */
};
*getpwent(),setpwent(),endpwent():对口令文件作后续处理.
首次调用getpwent(),打开/etc/passwd并返回指向文件中第一个入口项的 指针,保持调用之间文件的打开状态. 再调用getpwent()可顺序地返回口令文件中的各入口项. 调用setpwent()把口令文件的指针重新置为文件的开始处. 使用完口令文件后调用endpwent()关闭口令文件.
*putpwent():修改或增加/etc/passwd文件中的入口项.
此子程序将入口项写到一个指定的文件中,一般是一个临时文件,直接写口令文件是很危险的.最好在执行前做文件封锁,使两个程序不能同时写一个 文件.
算法如下:
. 建立一个独立的临时文件,即/etc/passnnn,nnn是PID号.
. 建立新产生的临时文件和标准临时文件/etc/ptmp的链,若建链失败, 则为有人正在使用/etc/ptmp,等待直到/etc/ptmp可用为止或退出.
. 将/etc/passwd拷贝到/etc/ptmp,可对此文件做任何修改.
. 将/etc/passwd移到备份文件/etc/opasswd.
. 建立/etc/ptmp和/etc/passwd的链.
. 断开/etc/passnnn与/etc/ptmp的链.
注意:临时文件应建立在/etc目录,才能保证文件处于同一文件系统中,建 链才能成功,且临时文件不会不安全.此外,若新文件已存在,即便建 链的是root用户,也将失败,从而保证了一旦临时文件成功地建链后 没有人能再插进来干扰.当然,使用临时文件的程序应确保清除所有 临时文件,正确地捕捉信号.
(3)/etc/group的处理
有一组类似于前面的子程序处理/etc/group的信息,使用时必须用include 语句将/usr/include/grp.h文件加入到自己的程序中.该文件定义了group 结构,将由getgrnam(),getgrgid(),getgrent()返回group结构指针.
*getgrnam():在/etc/group文件中搜索指定的小组名,然后返回指向小组入 口项的指针.
*getgrgid():类似于前一子程序,不同的是搜索指定的GID.
*getgrent():返回group文件中的下一个入口项.
*setgrent():将group文件的文件指针恢复到文件的起点.
*endgrent():用于完成工作后,关闭group文件.
*getuid():返回调用进程的实际UID.
*getpruid():以getuid()返回的实际UID为参数,确定与实际UID相应的登录 名,或指定一UID为参数.
*getlogin():返回在终端上登录的用户的指针. 系统依次检查STDIN,STDOUT,STDERR是否与终端相联,与终端相联的标准输 入用于确定终端名,终端名用于查找列于/etc/utmp文件中的用户,该文件 由login维护,由who程序用来确认用户.
*cuserid():首先调用getlogin(),若getlogin()返回NULL指针,再调用 getpwuid(getuid()).
*以下为命令:
*logname:列出登录进终端的用户名.
*who am I:显示出运行这条命令的用户的登录名.
*id:显示实际的UID和GID(若有效的UID和GID和实际的不同时也显示有效的 UID和GID)和相应的登录名.
(4)加密子程序
1977年1月,NBS宣布一个用于美国联邦政府ADP系统的网络的标准加密法:数 据加密标准即DES用于非机密应用方面.DES一次处理64BITS的块,56位的加 密键.
*setkey(),encrypt():提供用户对DES的存取.
此两子程序都取64BITS长的字符数组,数组中的每个元素代表一个位,为0 或1.setkey()设置将按DES处理的加密键,忽略每第8位构成一个56位的加 密键.encrypt()然后加密或解密给定的64BITS长的一块,加密或解密取决 于该子程序的第二个变元,0:加密 1:解密.
*crypt():是UNIX系统中的口令加密程序,也被/usr/lib/makekey命令调用. Crypt()子程序与crypt命令无关,它与/usr/lib/makekey一样取8个字符长 的关键词,2个salt字符.关键词送给setkey(),salt字符用于混合encrypt() 中的DES算法,最终调用encrypt()重复25次加密一个相同的字符串. 返回加密后的字符串指针.
(5)运行shell
*system():运行/bin/sh执行其参数指定的命令,当指定命令完成时返回.
*popen():类似于system(),不同的是命令运行时,其标准输入或输出联到由 popen()返回的文件指针. 二者都调用fork(),exec(),popen()还调用pipe(),完成各自的工作,因而 fork()和exec()的安全方面的考虑开始起作用.

3.写安全的C程序
一般有两方面的安全问题,在写程序时必须考虑:
(1)确保自己建立的任何临时文件不含有机密数据,如果有机密数据,设置 临时文件仅对自己可读/写.确保建立临时文件的目录仅对自己可写.
(2)确保自己要运行的任何命令(通过system(),popen(),execlp(), execvp()运行的命令)的确是自己要运行的命令,而不是其它什么命 令,尤其是自己的程序为SUID或SGID许可时要小心.
第一方面比较简单,在程序开始前调用umask(077).若要使文件对其他人可 读,可再调chmod(),也可用下述语名建立一个"不可见"的临时文件.
Creat("/tmp/xxx",0);
file=open("/tmp/xxx",O_RDWR);
unlink("/tmp/xxx");
文件/tmp/xxx建立后,打开,然后断开链,但是分配给该文件的存储器并未删 除,直到最终指向该文件的文件通道被关闭时才被删除.打开该文件的进程 和它的任何子进程都可存取这个临时文件,而其它进程不能存取该文件,因 为它在/tmp中的目录项已被unlink()删除.
第二方面比较复杂而微妙,由于system(),popen(),execlp(),execvp()执行 时,若不给出执行命令的全路径,就能"骗"用户的程序去执行不同的命令.因 为系统子程序是根据PATH变量确定哪种顺序搜索哪些目录,以寻找指定的命 令,这称为SUID陷井.最安全的办法是在调用system()前将有效UID改变成实 际UID,另一种比较好的方法是以全路径名命令作为参数.execl(),execv(), execle(),execve()都要求全路径名作为参数.有关SUID陷井的另一方式是 在程序中设置PATH,由于system()和popen()都启动shell,故可使用shell句 法.
如:
system("PATH=/bin:/usr/bin cd");
这样允许用户运行系统命令而不必知道要执行的命令在哪个目录中,但这种 方法不能用于execlp(),execvp()中,因为它们不能启动shell执行调用序列 传递的命令字符串.
关于shell解释传递给system()和popen()的命令行的方式,有两个其它的问 题:
*shell使用IFS shell变量中的字符,将命令行分解成单词(通常这个 shell变量中是空格,tab,换行),如IFS中是/,字符串/bin/ed被解释成单词 bin,接下来是单词ed,从而引起命令行的曲解.
再强调一次:在通过自己的程序运行另一个程序前,应将有效UID改为实际的 UID,等另一个程序退出后,再将有效UID改回原来的有效UID.
SUID/SGID程序指导准则
(1)不要写SUID/SGID程序,大多数时候无此必要.
(2)设置SGID许可,不要设置SUID许可.应独自建立一个新的小组.
(3)不要用exec()执行任何程序.记住exec()也被system()和popen()调用.
. 若要调用exec()(或system(),popen()),应事先用setgid(getgid()) 将有效GID置加实际GID. . 若不能用setgid(),则调用system()或popen()时,应设置IFS: popen("IFS=\t\n;export IFS;/bin/ls","r");
. 使用要执行的命令的全路径名.
. 若不能使用全路径名,则应在命令前先设置PATH: popen("IFS=\t\n;export IFS;PATH=/bin:/usr/bin;/bin/ls","r");
. 不要将用户规定的参数传给system()或popen();若无法避免则应检查 变元字符串中是否有特殊的shell字符.
. 若用户有个大程序,调用exec()执行许多其它程序,这种情况下不要将 大程序设置为SGID许可.可以写一个(或多个)更小,更简单的SGID程序 执行必须具有SGID许可的任务,然后由大程序执行这些小SGID程序.
(4)若用户必须使用SUID而不是SGID,以相同的顺序记住(2),(3)项内容,并 相应调整.不要设置root的SUID许可.选一个其它户头.
(5)若用户想给予其他人执行自己的shell程序的许可,但又不想让他们能 读该程序,可将程序设置为仅执行许可,并只能通过自己的shell程序来 运行.
编译,安装SUID/SGID程序时应按下面的方法
(1)确保所有的SUID(SGID)程序是对于小组和其他用户都是不可写的,存取 权限的限制低于4755(2755)将带来麻烦.只能更严格.4111(2111)将使 其他人无法寻找程序中的安全漏洞.
(2)警惕外来的编码和make/install方法
. 某些make/install方法不加选择地建立SUID/SGID程序.
. 检查违背上述指导原则的SUID/SGID许可的编码.
. 检查makefile文件中可能建立SUID/SGID文件的命令.

4.root程序的设计
有若干个子程序可以从有效UID为0的进程中调用.许多前面提到的子程序, 当从root进程中调用时,将完成和原来不同的处理.主要是忽略了许可权限的检 查. 由root用户运行的程序当然是root进程(SUID除外),因有效UID用于确定文 件的存取权限,所以从具有root的程序中,调用fork()产生的进程,也是root进程.
(1)setuid():从root进程调用setuid()时,其处理有所不同,setuid()将把有 效的和实际的UID都置为指定的值.这个值可以是任何整型数.而对非root 进程则仅能以实际UID或本进程原来有效的UID为变量值调用setuid().
(2)setgid():在系统进程中调用setgid()时,与setuid()类似,将实际和有效 的GID都改变成其参数指定的值. * 调用以上两个子程序时,应当注意下面几点: . 调用一次setuid()(setgid())将同时设置有效和实际UID(GID),独立分 别设置有效或实际UID(GID)固然很好,但无法做到这点. . Setuid()(setgid())可将有效和实际UID(GID)设置成任何整型数,其数 值不必一定与/etc/passwd(/etc/group)中用户(小组)相关联. . 一旦程序以一个用户的UID了setuid(),该程序就不再做为root运行,也 不可能再获root特权.
(3)chown():当root进程运行chown()时,chown()将不删除文件的SUID和/或 SGID许可,但当非root进程运行chown()时,chown()将取消文件的SUID和/ 或SGID许可.
(4)chroot():改变进程对根目录的概念,调用chroot()后,进程就不能把当前 工作目录改变到新的根目录以上的任一目录,所有以/开始的路径搜索,都 从新的根目录开始.
(5)mknod():用于建立一个文件,类似于creat(),差别是mknod()不返回所打开 文件的文件描述符,并且能建立任何类型的文件(普通文件,特殊文件,目录 文件).若从非root进程调用mknod()将执行失败,只有建立FIFO特别文件 (有名管道文件)时例外,其它任何情况下,必须从root进程调用mknod().由 于creat()仅能建立普通文件,mknod()是建立目录文件的唯一途径,因而仅 有root能建立目录,这就是为什么mkdir命令具有SUID许可并属root所有. 一般不从程序中调用mknod().通常用/etc/mknod命令建立特别设备文件而 这些文件一般不能在使用着时建立和删除,mkdir命令用于建立目录.当用 mknod()建立特别文件时,应当注意确从所建的特别文件不允许存取内存, 磁盘,终端和其它设备.
(6)unlink():用于删除文件.参数是要删除文件的路径名指针.当指定了目录 时,必须从root进程调用unlink(),这是必须从root进程调用unlink()的唯 一情况,这就是为什么rmdir命令具有root的SGID许可的原因.
(7)mount(),umount():由root进程调用,分别用于安装和拆卸文件系统.这两 个子程序也被mount和umount命令调用,其参数基本和命令的参数相同.调 用mount(),需要给出一个特别文件和一个目录的指针,特别文件上的文件 系统就将安装在该目录下,调用时还要给出一个标识选项,指定被安装的文 件系统要被读/写(0)还是仅读(1).umount()的参数是要一个要拆卸的特别 文件的指针.


[ 本帖最后由 尉迟小乐 于 2007-5-5 00:13 编辑 ]
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 27 发表于: 2007-05-04
引用
DOS命令破解UNIX管理员口令


引用
引言

----对于广大的SCOUNIX操作系统管理员来说,最不可原谅的过失之一就是忘记了管理员口令(即超级用户口令)。这个过失会导致极其严重的后果,对此凡是具备UNIX 操作系统常识的人都应该知道。然而令人遗憾的是,时至今日铸错者依然大有人在。看 来,对他们固然要责备,但既然问题客观存在,我们就总还须面对现实,想办法去解决 才是。

----长期以来,许多人就超级用户口令被忘记的问题发表了各种看法。一部分人认为,一旦忘记了超级用户口令,只能重装操作系统,此外别无它法。另一部分人则坚决反对这种"重装论",他们提出了一些经过成功实践的解决方案,使得"重装论"者败下阵来。现在我们可以肯定地说,忘记超级用户口令是有办法解决的。

----但同时我们也不得不承认,现行的解决方案有很大的局限性,这些局限性决定了现有方案无论怎样变化和发展也不可能成为一种有着强大生命力的最彻底的解决方案。

传统解决方案的局限性

----上面已经谈到,目前有多种针对超级用户口令被忘记问题的解决方案。为了叙述上的方便,本文将这些方案统称为传统解决方案。传统方案乍看起来似乎各不相同,但经过认真分析和归纳后就会发现,它们实际上大同小异,都有以下共同点:

必须有一套(两张)EmergencyBootFloppy(紧急启动软盘)。这套软盘均为文件系统格式,必须在SCOUNIX上制作,并且在不同类型机器上制作的紧急启动软盘相互不能通用。

用紧急启动软盘启动后,将硬盘根文件系统mount到某个目录下(一般为/mnt目录),然后进入该目录(即进入硬盘根文件系统的根目录),修改相关目录下与超级用户口令有关的信息(各种方案的不同之处主要体现于此)。最后回到软盘根目录,拆卸/dev/hd0root,重启机器。

----这些共同点实际上反映了传统方案的局限性:

----一、操作平台局限性:要求自始至终必须在SCOUNIX操作系统平台上实施。

----二、操作工具局限性:对紧急启动软盘的依赖性太大。万一软盘发生损毁,必须找 一台类型相同的机器再制作一套,这就是前面所说的"专盘专用"的限制。

----三、操作对象局限性:必须依靠硬盘根文件系统的支持。即操作者与修改对象(指 与超级用户口令有关的信息)被文件系统隔开,操作者不能直接修改对象,只能调用文 件系统提供的服务修改。这种方式本是信息科学中倡导的层次化思想的一种体现,在正常情况下应予称道;但任何事物都是有两面性的,在非常情况下--诸如解决忘记超级用户口令这一类问题时--该方式反而有可能带来麻烦。

----三大局限性说明了传统解决方案可行性的脆弱和狭窄,也决定了它们作为凌驾于文件系统之上的高层方案所必然具有的弊端。于是,打破这些局限性,探索出一种全新的解决方案,就成为了摆在一切UNIX研究者面前的新课题。

新课题

----所谓新课题,就是找到一种能够突破传统方案局限性的新方案。究竟从何处下手呢?让我们再来看一看三大局限性。
----操作平台局限性似乎不好突破,因为其它操作系统识别不了UNIX的文件系统格式。

----操作工具局限性好象就更难了,因为紧急启动软盘既要在UNIX上制作,又要在UNIX上使用,所以如果操作平台局限性突破不了,它就更突破不了。

----最后看看操作对象局限性。操作对象完全由文件系统管理,操作者必须通过文件系统访问它们。万一文件系统崩溃,那么即使它下面的文件完好无损,操作者也只能认为这些文件已全部丢失--因为文件系统无法访问(例如mount不上来)。其实这个时候还是有办法找到那些文件的,方法就是直接访问物理硬盘。

道理很简单:就本质而言, 文件系统只不过是一个构筑于物理硬盘之上的逻辑组织,平时我们是通过它来访问物理硬盘的;现在这个组织寿终正寝,不能再为我们服务了,于是我们只好"自己动手,丰衣足食"。直接访问物理硬盘不但可以使文件"失"而复得,而且还有另外一个重要意义——突破了操作对象局限性。

----操作对象局限性一旦突破,我们就会惊奇地发现突破另外两大局限性简直可以说是顺理成章了。因为虽然其它操作系统识别不了UNIX的文件系统格式,但在任何操作系统上,我们都可以访问物理硬盘;而只要是带有访问物理硬盘功能的软件,都可以成为我们的操作工具。

----现在我们要做的仅仅是:找一个大家最熟悉的操作系统和一个最易寻觅的可以访问物理硬盘的软件。

----大家最熟悉的操作系统无疑是DOS。可以访问物理硬盘的软件很多,但最易寻觅的莫过DEBUG.EXE。所谓最易寻觅,是因为DEBUG是DOS本身的一条外部命令,可以说只要是在安装了DOS的机器上都可以找到它。对DEBUG略知一二的人可能会指出该命令并没有提供访问物理硬盘的选项,但请不要忘记DEBUG是DOS提供给用户的一个汇编语言调试程序,我们完全可以利用它编写、调试和执行一个汇编小程序去访问物理硬盘。应
该说,这对一个能够取得系统管理员身份的人并不困难。

----综上所述,在DOS上运行DEBUG来破除UNIX管理员口令,这就是本文提出的解决SCOUNIX超级用户口令被忘记问题的新方案。

新方案的应用

----新方案已经提出,下面我们来看看它是如何应用于实践的。

----首先需要指出,由于文章篇幅和性质的限制,本文不可能将新方案实施过程中涉 及到的所有知识以"入门讲座"的方式加以介绍。因此,在阅读本小节前,读者应具备下列基础:熟悉硬盘主引导扇区和UNIX分区及UNIX文件系统的构造(这对UNIX系统管理员来说不成问题)、了解中断13H入口参数含义、使用过DEBUG命令。

----一台COMPAQDESKPROXL/466服务器,主板内含PCISCSI-2控制器一个,上接富士通硬盘一只,该硬盘主要参数为:1041柱面,64头,32扇。硬盘上装有SCOUNIX SystemV/386Release3.2operatingsystemVersion4.2。现在假设其超级用户口令被忘记。

----首先,随便找一台安装了DOS的计算机,制作一张DOS系统盘,并在系统盘上拷贝一个DEBUG.EXE文件。

C:\DOS>format/sa:
C:\DOS>copydebug.exea:
----然后将该盘插入COMPAQ服务器A驱,开机启动DOS操作系统,执行DEBUG命令。
A:\>debug
----现在我们就编写一段汇编语言程序(以下简称app),来读出硬盘0柱0头1扇区的内容。该扇区存放的是主引导记录,读出它是为了确定SCOUNIX分区的起始位置。app是调用中断13H实现的,以后我们还要反复用到它,当然入口参数将随所读内容物理地址的变化而变化。
-a
2039:0100MOVAX,0201
2039:0103MOVBX,1000
2039:0106MOVCX,0001
2039:0109MOVDX,0080
2039:010CINT13
2039:010EINT20
2039:0110
-g
Programterminatednormally
----现在我们可以用"dump"命令查看被读到内存里的扇区内容。从偏移11BEH处开始是分区表,其中类型标志字节为63H的分区是SCOUNIX分区。该分区起始于1柱面0磁头1扇。
----下面,读出UNIX根文件系统i-node表的第一个扇区,以确定根目录的物理位置。


----根据UNIX分区起始位置可知根文件系统始于2柱0头1扇。并且,由于2柱0头1扇是引导块,2扇是超级块,3、4扇为间隔,所以i-node表必定始于第5扇。

----我们用app读出它(CX的赋值应改为"0205")。

----读出后用"dump"命令查看偏移1040H至107FH的64个字节,这就是2号i-node,即根目录的i-node。

----下面我们就根据i-node计算根目录在硬盘上的物理地址。

----我们从偏移1040H看起:

----ED41H表示文件类型与存取权限为"drwxr-xr-x";
----1000H表示文件连结数为16;
----0000H表示文件属主ID为0;
----0200H表示文件组ID为2;
----80020000H表示文件字节数为640个;
----DA0500H表示第一个数据块地址。由于其它12个数据块地址均为0,所以可断定根目录在硬盘上只占了一个数据块。现在我们必须依据DA0500H计算出这个数据块存放在硬盘的第几柱面、第几磁头、第几扇区。计算公式如下:

C=TRUNC(P/(H*S))
C1=C0+C
H1=TRUNC((P-C*H*S)/S)
S1=P-C*H*S-H1*S+1
----其中:
----C1、H1、S1分别为数据块物理地址柱面号、磁头号、扇区号
----P等于数据块地址翻译成十进制数后再乘以2
----H为硬盘磁头数
----S为每磁头扇区数
----C0为根文件系统起始柱面
----C只是一个中间量
----将DA0500H代入上述公式,并根据H=64,S=32,C0=2,可算出C1=3,H1=29,S1=21。 因此根目录在硬盘上的物理地址为:3柱面29头21扇。
----用app把它读出来(CX和DX的赋值应分别改为"0315"和"1D80")。
----读出后用"dump"命令查看,可以发现偏移1050H至105FH是/etc目录的i-node号和文件名,其中i-node号为22H,即34D。因为每个扇区有8个i-node,所以34号i-node必定在2柱面0头9扇。
----用app读出它(CX和DX的赋值分别改为"0209"和"0080")。
----用"dump"命令可看出偏移1040H至107FH正是/etc目录的i-node。我们把它的数据块也读出来。先计算第一个数据块的物理地址。将2D0700H代入公式,算出/etc第一个数据块物理地址是3柱面50头27扇。
----用app读出它(CX和DX的赋值分别改为"031B"和"3280")。
----用"dump"命令可看出偏移11A0H至11AFH是/etc目录下的passwd文件名。我们用"enter"命令把它改成zls,然后再运行app(AX的赋值应改为0301)。
----现在退出DEBUG命令。
----取出软盘,重启机器,引导UNIX操作系统。
----按照引导顺序,UNIX显示出硬件配置信息后就该提问超级用户口令了,但就在此时它却突然发现/etc/passwd文件失踪了!(其实只是被改名为zls,但UNIX对此一无所知。)没有了这个文件,UNIX无法提问超级用户口令,于是它只好在屏幕上显示如下信息并允许用户以系统管理员身份直接进入系统维护态:

su:Unknownid:root
/etc/tcbck:file/etc/passwd
ismissingorzerolength
/etc/tcbck:eitherslash(/)ismissingfrom
/etc/auth/system/filesortherearemalformedentries
in/etc/passwdor/etc/group
/etc/smmck:restoremissingfiles
frombackupordistribution.

INIT:SINGLEUSERMODE

****PASSWORDFILEMISSING!****

EnteringSystemMaintenanceMode

#
----进入维护态后,当然就可以"为所欲为"了。但最好先设置一个新的超级用户口
令。要想这样做,首先必须恢复passwd文件名。
#mv/etc/zls/etc/passwd
----然后,就可以用/bin/passwd命令设置新的超级用户口令了。

结束语
----在本文行将结束时,我们再来作一个小小的总结。

----传统方案有操作平台、操作工具和操作对象局限性。新方案则突破了这三大局限性。

----一、新方案突破了操作平台局限性。传统方案的操作平台必须是UNIX,而新方案则是DOS。中国的绝大部分计算机用户对UNIX陌生,但对DOS却相当熟悉,使用起来也有亲切感。

----二、新方案突破了操作工具局限性。传统方案的操作工具必须是两张紧急启动软盘,而新方案仅使用一张DOS系统盘,其上只需拷贝一个DEBUG.EXE文件。紧急启动软盘 只能专盘专用,DOS系统盘却不存在这个问题--用任何一台机器上的DOS制作出的系统盘,可以用来解决任何一台机器上的UNIX超级用户口令被忘记的问题。至于用来访问物理硬盘的软件,当然更不是非DEBUG不可,任何软件--只要支持访问物理盘--均可。

----三、新方案突破了操作对象局限性。传统方案的操作对象是文件系统管理下的文件,而新方案撇开了文件系统,直接在底层修改数据。

----最后需要说明的是,对于SCOOpenServerRelease5,因条件所限,作者还没有使用过,所以关于新方案在该版本上执行时步骤是否需要修改以及如何修改的问题,如果有机会,作者会加以适当的补充。


[ 本帖最后由 尉迟小乐 于 2007-5-5 00:15 编辑 ]
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 28 发表于: 2007-05-05
引用
学习Linux的七点心得



引用
1、不要“玩 Linux” 很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的软件他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。

其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。

如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

2、不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。

其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要快,直接到你需要的程序的主站点下载源码来编译就是了。

Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。

3、不要当“传教士”

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。因为各人的需要不同,生活的环境不同,你不可能得到一个定论。我们需要尊重别人的选择,这是你在进行任何对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome,FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静。

你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。

并不是喜欢一种东西就必须反对其它的。世界需要多样性,人们都需要FUN。用自己的兴趣去压制别人的,就会毁掉所有的兴趣。个人喜欢什么就用什么,完全没必要为这个争论。

不要做“传教士”!你说我现在就是在“传教”?冤枉啊~

4、直接从源码安装程序

很多人放着最新的源码不用,等着有人帮他做出 rpm, deb, 才能安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很多新功能,而没有烦人的依赖关系。可是他说:“要是我用源码编译安装,卸载的时候就不方便了,会留下很多垃圾。”

为什么程序还没有安装你就想到卸载?难道你不知道这个程序是用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解一下到底那些程序有同样的功能,听听别人的意见,看看它们各有什么长处和短处,然后挑一个最适合你的程序来用。

从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而且它们一般会装到 /usr/local 目录,这样你以后如果换硬盘重装系统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传到一台新机器上,然后就出去吃晚饭,回来时我就得到了另一台一摸一样的 Linux 机器。

确实要卸载 make install 的程序怎么办呢?答案是直接删掉。别以为直接删掉程序会留下垃圾,引起“系统不稳定”。(btw: 这是谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /usr/local/bin, 把某些函数库放在 /usr/local/lib,把数据文件放在 /usr/local/share 下一个它自己的目录,你把这些东西都删掉就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多少空间,更不可能引起系统不稳定。UNIX 就是这么简单

但是有几个程序不建议从源码安装,它们是 Mozilla, Open Office, ... 它们编译时会占用你几个G的空间和好几个小时的时间,这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如直接安装编译好的版本。

5、不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。

如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。如果需要的话,你可以只把某些部件升级,比如内核,glibc, gcc, XFree86,...

使用 UNIX 的经典程序

好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序,你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件,就能得到一致的界面。

这些程序大部分都是久经考验的,是经过很多人多年开发的结果。它们功能完善,各种情况都考虑周全,绝对是你的好助手。

6、不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的!

我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“安全”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

7、不用忙着看内核源码

除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现我还是一只很多事情不能用 Linux 解决的菜鸟 吸取我的教训吧,你应该首先掌握 shell,Xwindow 的使用和原理,它们可不比内核简单。


[ 本帖最后由 尉迟小乐 于 2007-5-5 11:47 编辑 ]
级别: 光盘初级
发帖
301
飞翔币
335
威望
48
飞扬币
1311
信誉值
0
只看该作者 29 发表于: 2007-05-05
引用
Linux基本操作命令


引用
首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。我们现在要了解的是基于Linux操作系统的基本控制台命令。有一点一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)对大小写是敏感的,也就是说,如果你输入的命令大小写不对的话,系统是不会做出你期望的响应的。

ls
这个命令就相当于dos下的dir命令一样,肯定是我第一个就要介绍的,这也是Linux控制台命令中最为重要几个命令之一。ls最常用的参数有三个: -a -l -F。

ls -a

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来。

ls -l(这个参数是字母L的小写,不是数字1)

这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。例如我在某个目录下键入ls -l可能会显示如下信息(最上面两行是我自己加的):
位置1 2 3 4 5 6 7
文件属性 文件数 拥有者 所属的group 文件大小 建档日期 文件名
drwx------ 2 Guest users 1024 Nov 21 21:05 Mail
-rwx--x--x 1 root root 89080 Nov 7 22:41 tar*
-rwxr-xr-x 1 root bin 5013 Aug 15 9:32 uname*
lrwxrwxrwx 1 root root 4 Nov 24 19:30 zcat->gzip
-rwxr-xr-x 1 root bin 308364 Nov 29 7:43 zsh*
-rwsr-x--- 1 root bin 9853 Aug 15 5:46 su*
下面,我为大家解释一下这些显示内容的意义。
第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。第一个小格是特殊表示格,表示目录或连结文件等等,d表示目录,例如drwx------;l表示连结文件,如 lrwxrwxrwx;如果是以一横“-”表示,则表示这是文件。其余剩下的格子就以每3格为一个单位。因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):
rwx(Owner)r-x(Group)r-x(Other)
这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。
第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。
第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。
第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。
第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,你当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。
第六个栏位,表示创建日期。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。

ls –F(注意,是大写的F)

使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。

cd
这个命令是用来进出目录的,它的使用方法和在dos下没什么两样,所以我觉得没什么可说的,但有两点我补充一下。首先,和dos不同的是Linux的目录对大小写是敏感的,如果大小写没拼对,你的cd操作是成功不了的。其次,cd如果直接输入,cd后面不加任何东西,会回到使用者自己的Home Directory。假设如果是root,那就是回到/root.这个功能同cd ~是一样的。

mkdir、rmdir
mkdir命令用来建立新的目录,rmdir用来删除以建立的目录,这两个指令的功能不再多加介绍,他们同dos下的md,rd功能和用法都是基本一样的。

cp
这个命令相当于dos下面的copy命令,具体用法是:cp –r 源文件(source) 目的文件(target)
参数r是指连同元文件中的子目录一同拷贝。熟悉dos的读者用起这个命令来会觉得更方便,毕竟比在dos下面要少敲两下键盘。

rm
这个命令是用来删除文件的,和dos下面的rm(删除一个空目录)是有区别的,大家千万要注意。Rm命令常用的参数有三个: -i,-r,-f。
比如我现在要删除一个名字为text的一个文件:rm –i test
系统会询问我们:“rm:remove ‘test’?y”,敲了回车以后,这个文件才会真的被删除。之所以要这样做,是因为linux不象dos那样有undelete的命令,或者是可以用 pctool等工具将删除过的文件救回来,linux中删除过的文件是救不回来的,所以使用这个参数在删除前让你再确定一遍,是很有必要的。
rm –r 目录名:这个操作可以连同这个目录下面的子目录都删除,功能上和rmdir相似。
rm –f 文件名(目录名):这个操作可以进行强制删除。

mv
这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名。它的用法同dos下面的move基本相同,这里不再多讲。当使用该命令来移动目录时,他会连同该目录下面的子目录也一同移走。另外因为linux下面没有rename的命令,所以如果你想给一个文件或目录重命名时可以用以下方法:mv 原文件(目录)名 新的文件(目录)名。

du,df
du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩余的磁盘空间。如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况(这个功能可是dos没有的呦)。不过我一般不喜欢用du,因为它给出的信息是在是太多了,我看不过来,而df这个命令我是最常用的,因为磁盘上还剩多少空间对我来说是很重要的。

cat
这个命令是linux中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。cat是concatenate的简写,类似于dos下面的type命令。它的用法如下:
cat text 显示text这个文件;
cat file1 file2 依顺序显示file1,file2的内容;
cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。
“〉”是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容。如果〉左边没有文件的名称,而右边有文件名,例如:
cat >file1:结果是会“空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生 file1这个文件,而file1的内容就是你刚刚输入的内容。这个过程和dos里面的copy con file1的结果是一样的。
另外,如果你使用如下的指令:
cat file1>>file2:这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉常用,可以多多利用。

more,less
这是两个显示一般文本文件的指令。如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。 More指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显示。而less除了有more的功能以外,还可以用方向键往上或网下的滚动文件,所以你随意浏览,阅读文章时,less是个非常好的选择。

clear
这个命令是用来清除屏幕的,它不需要任何参数,和dos下面的clr具有相同的功能,如果你觉得屏幕太紊乱,就可以使用它清除屏幕上的信息。

pwd
这个命令的作用是显示用户当前的工作路径,这个命令不用多说,大家一试即知。

ln
这是linux中又一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:ln –s /bin/less /usr/local/bin/less
-s 是代号(symbolic)的意思。
这里有两点要注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接和硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。

man
如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man。Man实际上就是察看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令。man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛。建议大家需要的时候再去看man,平常吗,记得一些基本用法就可以了。

logout
一看就知道了,这是退出系统的命令,我就不多说了。要强调的一点是,linux是多用户多进程的操作系统,因此如果你不用了,退出系统就可以了,关闭系统你就不用操心了,那是系统管理员的事情。但有一点切记,即便你是单机使用linux,logout以后也不能直接关机,因为这不是关机的命令。