分类:
2009-10-11 14:50:58
Unix自学篇:stepl……step8……
文:Santa Cruz Operation,Inc.
第七讲:用户管理
系统管理员的用户理工作包括:为系统中所有用户建立帐号;以
及当改变用户环境、口令与组别时,进行维护。
分析用户需求
每当需要增加用户时,系统管理员都会先分析用户需求,对每个
帐号成分,通过使用默认选项来满足用户需求。要从sysadmsh中
查看默认记帐选项时,可以使用以下选择。
Accounts□□〉Defaults
或scoadmin□□〉Account Manager
当建立帐号时,评估用户需求,查看是否需要修改记帐成分。若
用户仅用一个应用程序,编辑用户的.profile文件,在用户注册
时,每次均执行此文件。
默认值建立用户帐号(Default Parameter)
首先,打入用户注册名,小写与三至八个字符;填写注解栏时,
应包含标识信息,如用户全名、单位、电话号码等。另外,指出
是否愿意用系统默认方式建立帐号,抑或对帐号修改默认值,若
使用默认方法,则选No。确定你要增加的用户後,给出创建後的
文件和目录,再执行/tcb/lib/useshell指令,建立用户帐号,
不过,在UNIX系统指令中,要通过sysadmsh或scoadmin才能运行
此指令。
若决定改变用户记帐默认方式,则在建立帐号时选Yes,那麽就需
要填写每栏,在合适位置上,按〈F3〉或〈Esc〉,下面是关於非
默认的设定。
指定用户组
每个用户必须至少属於一个组。默认情况下,用户注册组是group。
在一个组内还包括读、写和执行文件的权限,附加用户权限给那
个组,作为指定组员的存取权限集。如要改变成组别,可用newgrp(
c)指令。
增加用户时,可以创建一个新组,或附加到一个已存在的组内。
有关组别的信息则存放在/etc/group中。凡增加用户创建新组
时,组名会自动递加到/etc/group文件内。
组ID能够由系统产生或人工指定,但必须在100到60,000范围内,
100号以下的ID留给子系统和其他默认组用。当管理一个网络系统
时,常需要指定GID(Group ID,组ID),避免混同各网络结点,
所以,最好先选用默认组ID。
指定逻辑shell
要知道用户打算选用哪个shell工作,SCO系统可选用以下几种不
同的shell工作:
csh: C shell。
ksh:Korn shell,组合了Bourne shell和C shell的特点以及指
令行编辑。
rksh:加限制的Korn shell。
rsh:加限制的Bourne shell。
scosh:SCO shell(图型化桌面)。
sh:Bourne shell。
uucp:UNIX到UNIX拷贝功能,它本身不是shell,而是成功注
册後运行的程序。
默认shell在/etc/default/authsh中指定,从/usr/lib/
mkuser目录结构内文件中,取到可采用的注册shell表。
指定主目录
默认主目录在/etc/default/authsh中定义,从/usr/lib/
mkuser/homepaths文件中,取到可采用主目录的选择。以及为用
户创建一个新的主目录。
指定用户ID(UID)必须是在200到60000范围内,指定在/etc/
default/authsh文件中,UID必须是独一无二的,防止在网络上
有相同的UID,而且,UID一旦设置,永不改变。
指定用户类
另外,还需要为用户设立他们的类别,种类如下:
-individual:个人记帐类。
-pseudo-usr:为各子系统任务设置帐号,注册时个人不应给
pseudo□usr记帐类,Operator、security officer和
administrator记帐类是pseudo□usr的其他名字。
-不能设置superuser和retired记帐类。
如果要能使用su(C)(所变用户身分命令),该用户必需被指定
为用户类individual,才能取用此域,为了用su另外记帐,用户
必须有su授权,知道帐号口令。low、traditional和improved为
安全默认值,被赋予su授权。在high 安全默认值下,则不赋予su授
权。
赋予用户被始口令
当创建新用户帐号时,就需要为用户设立或不选择不设立初始口
令。
-New:现在赋予口令,用户在注册时必需打入这个口令。
-Later:现在不赋予口令,在赋予口令前,用户不能注册。
-Blank:赋予空口令,用户能注册,但在注册时,强迫用户给出
一个口令。
-Remove:不赋予口令,用户能不用口令注册。
-Force Password Change:决定在用户首次注册时是否要用户强
迫改变口令。
在high安全性下,必须为每个用户产生一个口令。若赋予初始口
令,就应该告诉用户他的口令,希望他在首次注册时,立即修改
这个口令,修改口令时,不要选用别人能够轻易猜出来的口令,
如姓名或生日日期等,最好在口令中,加有一个非字符。
系统安全保护:修改用户默认帐号
为了防止被人滥用别人的用户帐号注册进入系统内,保障系统的
完整性,系统管理员需要修改一些用户的默认帐号,以及检查用
户的注册情况。
首先,管理员会设定不成功注册最大次数,计算使用不正确口令
注册的次数;当不成功注册超过最大次数,就设定加锁用户帐号
和终端。如果在完成注册时间之内,仍未能设置口令,也可加锁
用户的系统,甚至根户用也一样。在成功注册後,希望享受优先
CPU调度,则可以用nice(C)值,给用户she ll及由它启动的进
程,以调整优先级。设定值会存放在/etc/system/default中。
Unix自学篇--第八讲:监视进程管理
文:Santa Gruz Operation, Inc.
程序是一个可执行文件(Process)是正在运行程序一个实例。
SCO UNIX System V支持许多进程同时运行,各种系统通过调
用可用进程去创建新进程,与其他进程通讯,以及终止其他进程。
进程族系
新进程创建时,内核会分配一个进程标识号(PID)给它,并对
进程表中添加说明讯息。
由一个进程创建另一新进程,老进程为父进程,新进程为子进程。
用户Shell执行的大多数指令又是它的子进程,子进程则运行指令。
而父进程允许有多个子进程来实现任务等,待子进程完成。一个
父进程可以有多个子进程,但是,一个子进程只有一个父进程。
前台及後台进程
在Shell提示处打入指令後,创建一子进程运行命令,Shell等待
命令退出,然回到对用户提出提示符,这道指令与Shell同步运行,
即在前台运行。
在Shell提示 处打入的指令,若随一个&,Shell创建的子进程运行
此指令,但不等待指令退出,而直接返回到对用户提出提示。这
道指令与Shell同步运行,即在台运行。
$ sleep 10 &
精灵进程
精灵进程是一个进程,它与终端和用户都无联系,也有人喜欢称
他为管家婆。精灵完成一些周期性的事,平时它睡眠。用ps (C)
指令可看到精灵,它在tty区域中带有问号(?)。
-Sched:PID 0,它完成进程的程序在存储局和盘交换局之间交
换工作。
-init:PID 1,系统自动建的第一用户进程,它负责初始化引
导和注册过程,也就是所有非系统进程的祖先。它会在终端口上,
启动getty (M)进程。
-vhand:PID 2,页面精灵,它频繁地把储页面内容送往交换区。
-bdfush:PID 3,定期刷新高速缓到盘(默认情况,每13秒刷
新一次)
-logger:归档系统出错讯息。
-cron:在调度时运行作业。
-Ipsched:脱机打印精灵。
孩儿进程
孤儿进程在父进程终止仍旧活动,由init (M)认它为乾儿子。
僵□进程则是进程已终止,但进程还未撤消,因为父进程并未「
等待」它,进程表仍保留著这□体,进程表的□体是僵□进程所
消耗的资源。
随著新进程的创建,出现大量□体,但总数是有限制的,因此影
响新进程的产生。而孩儿进程与僵□进程不同,并不会影响系统
效率。
通常,在父进程死去时,才会移去僵□进程。若他们还未移去,
应由init (M)继承并移去它。
监视进程
监视进程监注册户的数量,用以记系统的性能;亦会监视用户进
程,包括挂起进程;以及装载均值等系统性能问题。
要显示进程信息,可以利ps (C)指令报告,进程状态。在默认
情况下,仅会报告与当前终端有联系的有关讯息。若用户没有root权
限,ps仅限以说明运行进程,报告用户的进程讯息。若用户有root权
限,则会报告在所有终端上所有用户的进程讯息。
$ ps-u joana
--u 〈username〉选项显示指定用户的讯息。
--t 〈ttynamt〉选项显示指定终端有关的进程讯息。
而ps -elf指令则提供了需有F、S、C、PRI、NI、TIME字段的
使用讯息。
-F是标记,指示进程位置,20表示在内存,0表示交换在盘上,
31是系统进程。
-S是状态讯息,指示进程状态,睡眠还是正在运行。
-C是进程占有CPU的百分率
-TIME是花费CPU的总时间。
-PRI是进程当前优先数
-NI是进程的nice (ADM)菜单
如何创建进程
当进程分岔一个子进程,自己就会进入睡眠状态。开始时,子进
程运行父进程的同一程序,由内核分配一个新的PID。当子进程
再去执行新的程序,保持新分配的PDI,新程序就会替代子进程
的原先程序。
当子进程完成後,内核会把它从系统中移去,再唤醒父进程,子
进程就会退出。
监视系统装载
uptime(C)指令显示装载均值(一分钟、五分钟和十五分钟),
即在预定时间上,排队运行进程的平均数:$uptime
W(C)指令产生如uptime(C)一样的装载均值讯息,并显示谁在
系统上做甚麽,若用户拥有root权限,W报告所有用户的有关讯息。
若没有 ,仅显示与用户进程有关竹的讯息。
PCPU(Process CPU,进程CPU时间)显示某道特定指令已运
行多久了。对控制不了的进程,这种检查是很有用的。JCPU(
Joint CPU,连合CPI时间),显示一个终端所涉的所有进程的
总时间。
sar (ADM)指令是一个系统活动报告程序,显示系统资源累积
利用率。为指示系统瓶颈口(Bottleneck),sar 是非常好的实
用程序,指令语法如下:$sar〔-option〕〔
sample-interval-samples〕
例如:$sar-u120
-u选项显示CPU利用情况。如果%idle一致地低,使用效能是上升,
不过,运行的进程偷不到未用的CPU周期。
又例如使用-q选项显示进程吞吐量。假若%swpocc大於20,就发生
交换(Swapping),可以使用大内存能减少交换 /请负活动。
--
UNIX自学篇:第九讲:管理进程
文:Santa Cruz Operation, Inc.
用低优先级运行进程
nice(C)指令用於以较低的调度优先级执行命令,每个进程都有
一个 nice 值,用於计算它的优先级。nice 值在 0 到 39 范围内,
高值获得低优先级,不给实参的默认情况是 nice 值 20。超级用户
可指定负值,以提高优先级。
在注销进程後进程继续执行
後台启动的进程,默认情况下,当注销後就不再存在,但是,可
以使用 nohup(c)指令,让进程不受挂起和注销影响,得以继续
运行,例如:
$ nohup sort bigfile>sortfile &
4567
$ exit
当用户注销时,用户未用输出改向,输出将送到当前目录下的
nohup.out 文件中,如果当前目录不可写,则输出改向到
$HOME/nohup.out。
重新启动安全级精灵进程
根据 C2 安全级要求,某些精灵进程用 LUID (Login User
Identifier)标记运行,如此只能用 sd(ADM)实用程序重新启
动他们。
如果 LUID 限制有效的话(高安全级),只能用 sd(ADM),例
如 cron(C)这样的精灵,在高安全级下要 sd 重新启动它。
进程终止实用程序
需要终止实用程序时,可以通过发信息给进程,使它自杀,通常
会用在终止一些已挂起的或是运行的进程。
语法如下:
$ kill [-signal]
例如
$ kill 4411
4411:terminated
这样,只能终止运行优先级大於 25 的进程,小於 25 优先级的进
程只能在重新引导系统中撤注它。
调度单个作业执行
at(C)指令使得在某指定时间执行一组命令一次,主要用於在系统
活动较少的情况下,在预定时限(例如在半夜後或每日固定时间)
内运行指令。
要重新定向,可以使用标准输入,或可文件输入;在打入完整的
at 指令後,就会显示出将要运行的作业号与时间。
语法如下:
$ at time [date] [increment] < [filename]
任何用户都能运行一个 at 作业,但必须给予授权。
指定单个作业调度时间
时间格式为 hr:min 或 min,hr ,用 a.m 或 p.m 指定上午或下午,
有效时间包括 no on,midnight 和 now,指定日期则用「月日
〔年〕」格式,例如 Feb14。一星期那一天也可用 monday、
mon、today 或 tomorrow 代替。
.at 指令从标准输入中,读入打算在以後某一时刻所执行的命令:
$ at 14:00 Jan
sort /u/user1/file
/u/user1/sort
ctrl>d
job 61
记著使用时,要用全路径名指定文件。指令输出以电子邮件发送
给用户,也可输出改向到文件或终端。
列出单个调度作业
使用命令
$ at -1
job 61
job 61
若指定 jod_id,一般用户会得到一张自己所有作业的表,根用户
则能取得全部作业的表。
撤消单个调度作业
使用以下指令撤消作业:
$ at -r
可以使用匹配符撤销多个作业。at 的作业存放在
usr/spool/cron/atjobs
在一般数据库上调度作业
用 crontab (C)指令,从指定文件或标准输入拷贝或编辑成用户
的 crontab 文件,该文规定了在指定日期和时间调度运行一些指
令。
crontab 指令提供了对 cron 系统精灵要执行的作业,清理 /tmp ,
撤销在一般数据上日记文件或不想要的文件,以及检查空间,邮
寄警告予用户等。
/usr/lib/cron/cron.allow 文件列出了能使用 cron 的用户,
/usr/lib/cron/cron.deny 文件列出了拒绝存取 cron 的用户,仅
当 cron.allow 文件不存在时,cron.deny 文件才起作用。
指定作业及其调度时间
作业可能是单个指令或包含多道指令的 shell 脚本,指令输出邮
寄给用户,也可输出改向到文件或终端。在文件中打入作业及运
行时间,以运行此作业。文件可取任何名字,但是,不允许包括
首尾部和空白行,而且,最好取 .cronfile ,这种取名反映其功
能,易记易理解。.cronfile 文件可用正文编辑或 vi 创建。
每个用户仅提供一个 .cronfile文件,每当执行 crontab 指令时,
新文件会盖写原先文件。编辑已存在的 .cronfile 文件,增加或
修改一个作业,然後用 crontab 重新提交 .cronfile 。而每个用
户的登记项会存放在/usr/spool/crontabs/。
列出或修改 cron 作业
要列出当前提供的 cron 作业,可以打入:
$ crontab -1
修改 cron 项,使用指令:
$ crontab -1 >.cronfile
$ vi .cronfile
$ crontab .cronfile
如要撤销 cron 作业,则打入:
$ crontab -r
但有一样,请留意,根用户没有 .cronfile 文件。
Unix自学篇第十讲:打印管理
Santa Cruz Operation, Inc.
打印假脱机(Spooler)程序在系统引导时自动启动,负责打印服
务的安装、配置和管理,在指定
排队,能在不丢失排队打印请求下暂停打印。
可以送入一个 class ,也可送往指定
在一个 class 中,可随时移去或增加
scoadmin 的 Print Manager,可以增加
又或增加一个新 class。
使用
机上,合适地打印出来;处理两边打印,草图或高质量文字打印
等;如发现打印失败,会通知打印服务,然後告诉用户使用上出
现问题。
/usr/spool/lp/bin。
安装和配置
要把
System V 支持两个物理并行设备(/dev/lp[0-2])。当用主并行
埠时,用 LP0 或 LP1,中断向量为 7。第二个并行埠,/dev/lp2,
中断向量同为 7。
要把
使用非调制解调器控制埠名。
另一方面,可以从终端辅助埠上做局部打印,指令 lprint (C)
使用户从附在终端上的
安装
要安装
打开
然後,调用 sysadmsh 菜单或 Print Manager 上,加入
合适的信息填好格式,指定
就建立一新 Class,包含接口脚本路径名。许多
standard 接口脚本。
修改
本、设备等;以及改变默认
管理
-Stop:为实现某种
-Begin:假脱机转换成 on。
-Accept :允许把打印请求送往
-Reject:阻止请求假脱机打印。
-Enable:允许从
-Disable:阻止打印,但允许假脱机出现。
每个打印请求都会赋予一个优先数,决定何时打印,优先数据取
值范围为 0(最高)到 39 (最低)。默认优先数值同样是 20。
所有打印请求或单个打印请求都能移到不同的队列或
若
机要维护,也要移去打印请求。如果已移去了所有请求,这个打
印机就不再接受新请求,直到
要清理
则当前正在打印的作业也被清除,但是,不能使用通配符去匹配
清理打印请求。
第十一讲:TCP/IP 管理
Santa Cruz Operation,Inc.
IP(Internet Protocol)地址是 TCP/IP 网上为主机之间数据
选择路径(交换)的基础,但是,用户通常不甚喜欢使用由数字
组成的 IP 地址,而比较喜欢使用多由英文字母组成的主机名字--
URL(Uniform Resource Location)。
不过,主机名字必需映像到 IP 地址,而方法就是通过 /etc/hosts
文件完成。
配置 /etc/hosts
/etc/hosts 的格式是:地址--名字--别名。
例如:
127.0.0.1 localhost localhost
132.147.18.1 vision vision.sco.com
IP 地址必需是一行上的第一项,在它前面不应有任何字符,例如
空格符或制表符;名字是简单的主机名字;别名则在很多情况下
都不需要,但是,全限主机名字、简单主机名字和辖区名字都归
入别名之列。
检测 TCP/IP 配置
TCP/IP 协议的软件部份包括 TCP/IP 协议层架的顶三级,即
应用级(Application Protocol)、传送级(Transport Protocol)
和网际网级(Internet Protocol)。特定的主机名字”Localhost”
是特殊网络”loopback”上的本地主机的别名。
要检测 TCP/IP 协议层架的软件部份,使用 ping 指令:
#ping localhost
如果 Ping localhost 失败,则使用 netstat -i[n],检查网络接
口的状况,显示网络接口上分组传输的统计讯息,指令如下:
#netstat -i[n]
n 选项强行显示编号,而不是名字。netstat 查看自环驱动器 lo0 ,
如果 lo0 失败,则在 /etc/tcp 中”ifconfig lo
有错误。
检测 TCP/IP 硬件
审核引导过程中,会对所职别的网络接口产生的配置报告,而
TCP/IP 协议的硬件部分包括 TCP/IP 协议层架的底两级,即
网络接口级和物理/硬件级。
对网上另一主机的任何通讯都是在「物理」网络接口上传输,并
不会引起数据传输到「自环」网络上。
使用 ping 指令检测 TCP/IP 协议层架的硬件部份。
#ping hostname
或
#ping IP-address
如果 ping 指令失败,则改用 netstat -i[n] 审核网络接口。
了解 netstat -i 的输出
如果远地主机上使用 ping 之後,Opkts 和 Ipkts 仍然是零,那麽,
网络接口大概使用了不同的中断(Interrupt),而不是它的设备
驱动程序。
如果 Ipkts 不是零,而 Opkts 等於 Oerrs,那麽,网卡的 I/O 地址
可能不正确。如果 Ipkts 是零,而 Opkts 等於 Oerrs ,那麽,可
能是网络电缆连接的不合格。
通过用 Opkts 除 Cloois ,再用 100 乘所得的结果,计算冲突的百
份比。如果冲突的百份比少於百份之五到十,那麽,所有网络接
口是有效运行。
如果 ping 失败,并查出网络接口有问题,那麽,就该验证网络介
质操作。
调整 TCP/IP 的核心参数
没有足够的流资源(Stream Parameter),网络程序是不能进行
通讯;流资源不充份的话,经常会导致较慢的吞吐率。
要核查流资源,使用 netstat -m ;也可以使用 crash 指令考察流
资源,在出现 crash 发出的提示符’>”时,打入”strstat”。
如果在 FAIL 列的下面有不等於零的项目,那麽,同一行中的
ITEM 的项目可能需要调整。如果 FAIL 列下的数目大於或等於
TOTAL 列中数目的百份之十,该资源每次应增加一或二,但不
能将该数目加倍。
由於流资源使用 RAM,当增加流资源时,应加倍小心。用户亦可
以使用 configure 或 sysadmsh 增加特定的流资源,重新连接核心
或重新引导。
限制通过 ftp 访问系统的权限
对於不想令其使用 ftp 跨网访问系统的人,可以通过建立
/etc/ftpusers 文件和设立系统帐户名字的方法,阻止他获得利
用 ftp 访问系统的权限。
如果 /etc/ftpusers 不存在的话,先要建立。在单独的行上,加
上系统帐户的名字,表明不能从网中其它系统使用 ftp 访问该系
统,在安全系统中,不允许 ftp 访问用户权和 uucp ,列出任何其
限制使用 ftp 的用户名字。
--
第十二讲:使用 TCP/IP
Santa Cruz Operation,Inc.
向远地注册的能力非常有用,它让我们不用到远地系统所在处,
就能运行远地主机上的程序,执行远地系统管理,有两道指令可
用於远地主机注册,就是 rlogin 和 telnet。
使用 rlogin 向远地主机注册
rlogin 允许向具有 UNIX 作业系统和 TCP/IP 协议的任何系统
注册,而 rlogin 只能注册到 UNIX 作业系统环境,指令如下:
$rlogin remot-host-name
要避免 rlogin 因没有提供远地主机上的同名帐户,可以使用下述
指令:
$rolgin remote-host-name -1 remote-user-name
-1 选项用於指出远地用户帐户。
要中止 rlogin ,则要打入 ~.,并按 Enter/Return>键;亦可使用
logout 或 exit 指令。
使用 Telnet 向远地主机注册
不管其作业系统类型,只要能支援 TCP/IP 协议,都可以使用
Telnet 指令,允许注册。
$telnet hostname
或
$telnet ip-address
使用 ftp 复制或传送文件
ftp(File Transfer Protocol)允许用户对远地主机复制文件,
用户毋须考虑作业系统类型,即能向或从任何具有 TCP/IP 的系
统复制文件。
ftp指令允许复制目录中的一个文件或所有文件,但不能复制多层
次目录。使用 ftp时,必需在远地主机上设有帐户。
当 ftp 注册到远地系统时,并未得到 shell ,而是通过 ftp 指令
解释程序同远地主机进行通讯。
$ftp remote-host-name
或
$ftp remote-host-ip-address
一旦注册成功,就会出现 ftp 指令解释程序的提示。
ftp>
用户可以在此,使用打开指令连接主机。
ftp>open remote-host-name
复制某一文件回自己的系统中,则用:
ftp>get filename
如果只想传送某一文件往远地主机,则用:
ftp>put filename
需要复制远地主机的全部文件进入自己的系统内,可以使用如下
指令:
ftp>mget *
相反,如果想传送自己的文件往远地主机,则使用如下指令:
ftp>mput *
rcmd
rcmd 允许用户不必向远地主机注册,而直接运行该主机上的指令,
实际上,也要进行注册,只不过用户毋须作其它操作。当使用 rcmd
在远地主机上运行任何指令时,其输出的默认设备就会被更改为
终端。
$rcmd remote-host-name man sh
请求特殊终端处理的指令,将不含设备自身的功能,因为对远地
指令没有定义终端的类型,要求在远地主机上配置受托访问。
要列表输出远地主机上磁盘的利用情况,则使用下述指令:
$rcmd remote-host-name df
要列表输出远地主机上的目录,使用如下指令:
$rcmd remote-host-name ls /usr/games
要把远地主机上的文件备份到远地主机上的袖珍磁带内时,指令
如下:
#rcmd remote-host-name tar cvf /dev/rct0/usr
或
#rcmd remote-host-name "find /usr -depth -print|cpio -oc
> /dev/rct0
要把本地系统上的文件备份到远地主机上的袖珍磁带内时,使用
下述指令:
#tar cvf -/usr|rcmd remote-host-name dd of=/dev/rct0
或
#find /usr -depth -print|cpio -oc|rcmd remote-host-name
dd of=/dev/rct0
另一方面,如果要把远地主机上的文件备份到本地系统上的袖珍
磁带内时,可以使用如下指令:
#rcmd remote-host-name "tar cvf -/usr" > /dev/rct0
或
#rcmd remote-host-name "find /usr -depth -print|cpio -oc"
> /dev/rct0