免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 风之幻想
打印 上一主题 下一主题

solaris高级管理员指南(上次需要的朋友请查看,有骗贴和积分的嫌疑,斑竹摸怪) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-12-01 16:02 |只看该作者
1、 使系统进入单用户模式;
2、 进入超级用户;
3、 将磁带放入磁带机中;
4、 键入ufsdump [1-9] ucf /dev/rmt/
/dev/rdsk/ctds在ufsdump参数前加上级数,例如:9级备份,键入9ucf;
5、 执行完ufsdump命令后取出磁带并贴上标签。
4.7.2恢复备份文件系统
ufsrestore命令可以将用ufsdump命令备份的文件拷贝到当前工作目录中,可以用ufsrestore命令重装使用0级备份后使用增量备份的文件系统,或从任何备份带中恢复一个或多个文件,文件是以原始的所有者、最后的修改时间和模式(许可权)进行恢复的。恢复文件或文件系统之前需要知道:
需要哪个带或盘;
备份文件系统的设备名、你使用的磁带设备类型;
磁带设备名(本地或远程)。
4.7.2.1决定使用哪一备份带
在开始恢复文件或文件系统之前,必须决定使用哪一备份磁带,当需要恢复全部文件系统时,需要最新的0级备份带。同样,如果是部分备份就需要最新的在较高级别上做的增量备份带,具体情况需要参考你使用的备份计划来确定你需要的级别和磁带号。例如,如果做了0级和9级的备份,就需要0级和9级的最新的备份带。
下面是决定用哪个带恢复单独的文件或整个文件系统的步骤:
1、 向用户寻问有关文件或文件系统丢失的日期,或文件要被复原到的大概时间。
2、
参考你的备份计划找出最后备份的日期,不一定用最新的备份版本恢复。为了恢复文件的适当的版本,要从逆向查看增量备份文件,从最高级看到最低级,从最新的看到最旧的。
3、 如果有用ufsdump -a命令产生的在线存档文件,则键入ufsrestore ta
/path/一定要用文件的全程路径,这时存贮的文件和介质就会显示出来。
4、 找出包含备份的介质,要知道存贮介质是找到数月甚至数年所前的备份介质。
5、 这步是可选的,将存贮介质插入驱动器中,键入ufsrestore tf
/path/,对一定用完整的路径名。如果一个文件在备份介质中,则显示出它的文件名和inode号,否则显示信息说明此文件不在该介质中。
6、 如果一个带上有多个备份文件,可以用-sn任选项来定位,选择需要的备份文件。例如键入ufsrestore xfs
/dev/rmt/05将磁带定位在第五个备份文件上并将其恢复。
4.7.2.2恢复全部备份
下列步骤说明,采用QIC-150盒式磁带恢复一个文件系统的完整备份的过程,注意:这一过程将生成一新的文件系统,并将毁掉盘上原来存在全部文件系统。
1、 进入超级用户;
2、 键入init s系统进入单用户模式,保证了没有人使用你将恢复的文件系统;
3、 键入umount 命令将相应的安装点(mount-point)(例:/files1)拆卸下来;
4、 键入newfs
/dev/rdsk/cWtXdYsZ将磁盘区对应的原始设备文件(例如:/de/rsk/c0t0d0s7对应/home)清掉并重建文件系统;
5、 键入mount
/dev/dsk/cWtXdYsZ将相应的块文件设备的文件系统(例如:/dev/dsk/c0t0d0s7对应的/home)重新安装在相应的安装点;
6、 键入cd 则进入你希望做恢复的目录中;
7、 插入QIC-150盒式磁带;
8、 键入ufsrestore rvf /dev/rmt/0h将文件系统恢复。
下例说明恢复/files1对应的c0t0d0s7盘区:
panda%su
Password:
#init s
#umount /files1
#newfs /dev/rdsk/c0t0d0s7
#mount /dev/dsk/c0t0d0s7 /files1
#cd /files1
#ufsrestore rvf /dev/rmt/0h
4.7.2.3交互式恢复文件
恢复单个文件或目录时,将它们存入临时目录(例如:/var/tmp)是个好方法,经过确认后才执行恢复操作,事实上要确保不会用备份带上的旧版本文件重写已有的新版本。下面是交互式恢复文件的步骤:
1、 进入超级用户;
2、 将磁带写保护;
3、 将备份带放入磁带驱动器中;
4、 键入cd /var/tmp,如果你希望将文件存放在其它目录下,则用相应的目录名代替/var/tmp;
5、 键入ufsrestore if /dev/rmt/,一些提示信息和提示号显示出来;
6、 建立要恢复的文件清单;
7、 用ls命令列出一个目录的内容:
键入cd 改变目录
加一个目录名或文件名到将要恢复的文件清单,键入add
若要删除将要恢复的文件清单中的目录名或文件名,键入delete
保持当前目录的模式不变,键入setmodes然后键入n并回车;
8、 建完清单后,键入extract,ufsrestore会问你用哪一卷;
9、 键入卷号回车,如果只有1卷,键入1并回车,清单中的文件或目录就被取出并恢复到当前工作目录中;
10、 键入quit则显示shell提示符;
11、 用ls -l命令列出已恢复的文件或目录;
12、 检查文件列表,确保所有文件或目录均被恢复;
13、 用mv命令将文件移到合适的目录中。
下例说明从pubs目录中恢复backup.example和junk文件的过程:
#cd /var/tmp
#ufsrestore if /dev/rmt/0
ufsrestore>ls
:
lost+found/pubs/
ufsrestore>cd pubs
ufsrestore>ls
./pubs:
.Xauthority login
.profile backup.example%
.Xdefaults .mtdeletelog
wastebasket/ core
.cshrc openwin-init
junk/ dead.letter
desksetdefaults .openwin-init.Bak
backup.examples junk
usrestore>add backupo.examples
ufsrestore>add junk
ufsrestore>setmodes
set owner/mode for "."?[yn]n
ufsrestore>extract
you have not read any volumes yet
Unless you know which volume your
续(二)Solaris高级系统管理员指南!(公司内部培训教材)


4.7.2.3交互式恢复文件
恢复单个文件或目录时,将它们存入临时目录(例如:/var/tmp)是个好方法,经过确认后才执行恢复操作,事实上要确保不会用备份带上的旧版本文件重写已有的新版本。下面是交互式恢复文件的步骤:
1、 进入超级用户;
2、 将磁带写保护;
3、 将备份带放入磁带驱动器中;
4、 键入cd /var/tmp,如果你希望将文件存放在其它目录下,则用相应的目录名代替/var/tmp;
5、 键入ufsrestore if /dev/rmt/,一些提示信息和提示号显示出来;
6、 建立要恢复的文件清单;
7、 用ls命令列出一个目录的内容:
键入cd 改变目录
加一个目录名或文件名到将要恢复的文件清单,键入add
若要删除将要恢复的文件清单中的目录名或文件名,键入delete
保持当前目录的模式不变,键入setmodes然后键入n并回车;
8、 建完清单后,键入extract,ufsrestore会问你用哪一卷;
9、 键入卷号回车,如果只有1卷,键入1并回车,清单中的文件或目录就被取出并恢复到当前工作目录中;
10、 键入quit则显示shell提示符;
11、 用ls -l命令列出已恢复的文件或目录;
12、 检查文件列表,确保所有文件或目录均被恢复;
13、 用mv命令将文件移到合适的目录中。
下例说明从pubs目录中恢复backup.example和junk文件的过程:
#cd /var/tmp
#ufsrestore if /dev/rmt/0
ufsrestore>ls
:
lost+found/pubs/
ufsrestore>cd pubs
ufsrestore>ls
./pubs:
.Xauthority login
.profile backup.example%
.Xdefaults .mtdeletelog
wastebasket/ core
.cshrc openwin-init
junk/ dead.letter
desksetdefaults .openwin-init.Bak
backup.examples junk
usrestore>add backupo.examples
ufsrestore>add junk
ufsrestore>setmodes
set owner/mode for "."?[yn]n
ufsrestore>extract
you have not read any volumes yet
Unless you know which volume your file(s)are on you should start
with the last volume and work towards the first.
Specify next volume #:1
set owner/mode for "."?(yn)n
ufsrestore>quit
#ls-1
total 6
drwxrwxrwt 3sys sys512 Mar 11 10:36./
drwxrwxr-x 18 oot sys512 Mar 10 16:43.
Drwxr-xr-x2 pubs staff 512 Mar 11 10: 11 pubs/
# pwd
# var/tmp
# cd pubs
# ls
./ ../ backup.examples junk
#
4.7.2.4从备份带中恢复单个文件( ufsrestore)
下面是从备份带上恢复单个文件的过程:
1、 进入超级用户;
2、 将备份带插入;
3、 键入cd /var/tmp进入/var/tmp目录下,如果要将备份文件恢复到不同的目录中,用相应的目录代替/var/tmp即可;
4、 键入ufsrestore xf /dev/rmt/ ,x任选项说明拷贝文件或目录时是否设置所有者/模式的信息;
5、 键入n,目录的模式保持不变;
6、 键入卷号,如果只有1卷,键入1,这时文件被恢复到当前工作目录中;
7、 键入ls –l 文件清单显示出来;
8、 用mv命令将文件移到合适的目录中。
第5章、管理网络服务
本章将介绍:检查远程系统状态、向远程系统注册(rlogin)、系统之间传送文件(rcp,ftp)、管理NIS+数据库(admintool)。
5.1检查远程系统状态
这一节说明显示远程系统状态的命令:rup、ping及rcpinfo –d。
5.1.1确定一个远程系统已运行了多长时间
命令rup告诉你系统运行的时间及平均负载。当键入这个命令时系统显示出主机名、运行时间及平均负载。
panda%rup ash
ash up 59 days,3:42,load average:0.12,0.12,0.01
panda%
如果在命令后面不跟随任选参数,还可以显示出子网上所有远程主机的一些信息,如果是以表的形式显示,则可以使用表中的任选项对输入分类。
表5.1 RUP命令的任选项
选项 功能
-h 按主机名字字母顺序分类显示
-l 按平均负载字母顺序分类显示
-t 按运行时间长短分类
下例说明,输出按主机名的字母顺序分类;
panda%rup -h
ash up 1 day,1:42,load average,0.00,0.31,0.34
elm up 14 days, 0 min, load average:0.07,0.01,0.00
maple up 32 days,14:39,load average:0.21,0.05.0.00
panda up 8 days, 15:44,load average.o.02,0.00.0.00
panda%
5.1.2确定一个远程系统是否在运行(ping\rup\rpcinfo-p)
下面的步骤判断一个远程系统是否在运行:
键入ping ,回答信息" is alive"。意指这个系统在网络上是可以存取的,若出现信息"ping:unknown
host",指这个系统可能不存在,因为名字解析系统不能找到这个名字的机器。若出现信息"ping:no answer from
",指远程系统可能没有在运行。
键入rup 显示系统运行时间及平均负载的信息。
键入rpcinfo -p,显示服务的相关信息。
键入rlogin ,注册到远程系统。
以上以r开头的命令需要远程系统允许才可能得到相关信息。
openet%ping panda
panda is alive
openet%rup panda
panda up 3 days,15:10 load average:0.07,0.08.0.09
openet% rpcinfo-p panda
program vers proto port service
program vers proto port service
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100000 3 rcp 111 portmapper
100000 2 tcp 111 portmapper
100007 3 tcp 1029 ypbing
100007 3 udp 1025 tobind
100021 1 tcp 1030 nlockmgr
100021 1 udp 1026 mlockmgr
100024 1 tcp 1028 status
100024 1 udp 1027 status
100021 3 tcp 1030 nlockmgr
100021 3 udp 1026 nlockmgr
100020 2 tcp 4045 llockmgr
100020 2 udp 4045 llockmgr
10021 2 tcp 1030 nlockmgr
openet%rlogin panda
password
last login; Mon Mar 2 10 :31 56 from cinderella
openet%
还可以键ping 的命令格式,系统会显示信息"is alive",意指系统在网络上是可存取的。若显示信处息"ping:no answer
from,即意指网络上没有激活。或显示信息"ping:unreachable address from ....
",即意指这个系统在网络上可能不存在,因为没有路由可以到此地址。
panda%ping 129.144.52.199
129.144.52.199 is alive
panda% ping 129.144.52.200
unknown host 129.144.52.200
panda% ping 129.145.52.199
ping:no answer from 129.145.52.119
panda%
5.2注册到一个远程系统(rlogin)
下面是注册到远程系统的步骤:
1、键入rlogin <系统名>,这时系统可能提示你键入口令。
2、如果你在想注册的那个系统上有一个本地帐号,则键入口令。否则,键入你NIS+口令。如果你在这上系统上有一个可存取的主目录,就注册进入到那个目录。否则只能注册到根(/)目录上。
panda%rlogin openet
password:
no directory:logging in with home=/
Last login:Tue Sep 17 13:54:28 from 119
sun microsystems,inc,sunos5.0 june 1992
openet%
5.3系统之间传送文件(rcp、ftp)
如果网络环境设置了automount,可以直接使用cp及mv命令在系统之间传送文件,但本节只讨论如何使用RCP及FTP命令在系统之间传送文件
5.3.1使用RCP命令
要使用远程拷贝命令从远程系统上传送文件到本地机器上,键入RCP <源PATHNAME>
<目标>,如果你有存取这个远程系统的合法权限,那么,文件就拷贝到你指定的目标路径位置上。
下例说明,将文件quest从系统ash的/tp目录,拷贝到系统panda的当前工作目录中:
panda% rcp ash:/tmp/quest.
panda%
要从本地系统传送一个文件到远程系统,键入rcp ,如果你有存取远程系统权限的话,就将文件从本地系统拷贝到你指定的远程目标路径名中。
下例说明,将文件quest从系统panda的当前工作目录拷贝到系统openet的/tmp目录下:
panda%rcp quest openet:/tmp
panda%
如果需要改变文件名,可以将文件名作为目标中径名的一部分。例如,将文件quest改名为question,并将其放到/tmp目录中,则键入/tmp/question作为目标路径名。
5.3.2使用文件传送程序(ftp)
下面是使用文件传送程序从本地系统传送一个文件到远程系统的步骤。
注:要使用文件传送程序,可能需要在每个系统上有一个你的帐号,或在/.rhosts文件中有个入口,有些系统允许匿名登录是以anonymous或ftp作为注册名,并在口令提示时打入形如电子邮件地址的字符串。
如果有一个NIS或NIS+帐号,可以使用注册名及网络口令通过FTP存取远程系统。
1、 键入ftp命令,则FTP>提示符显现
2、 键入open <远程系统名>,系统显示连接信息,并请求用户输入用户名。
3、 键入远程系统上的用户名。
4、 系统请求你输入口令(如果无口令,也可能不出现)。
5、 键入口令(如果需要),系统注册信息及FTP>提示出现。
6、
键入bin设置二进制格式,或asc设置ASCII格式,这个命令设置文件传送时的类型。bin格式传送时对文件不作任何更改。asc格式传送时,根据双方系统的类型,自动将文件中的换行符更改为回车符和换行符(如果文件是从unix系统传送至DOS系统),或相反(如果从DOS系统传送到unix系统),或不变(两端系统相同)。
7、 键入put <本地文件> <目标文件>,系统就显示文件传送信息并出现ftp>提示。

论坛徽章:
0
12 [报告]
发表于 2006-12-01 16:03 |只看该作者
8、 键入quit则goodbye信息及shell命令提示符出现
panda%ftp
ftp>open elm
Connected to elm
220 elm FTP server(unix(r ) system v Release 4.0)ready.
Name(elm:testuser):testuser
331 Password required for testuser
Password:
230 User ignatz logged in .
ftp>asc
ftp>put quest/tmp/quest
200 PORT command successful.
150 ASCII data connection for /tmp/quest
(129. 144.52.199.1333)
226 Transfer complete
ftp>quit
221 Goodbye.
panda%
可以使用send命令替代put命令,还可以使用mput命令拷贝多个文件,但没有msend命令,详细内容请见ftp(1)手册。注:你必须在对方系统上有一个帐号或对方系统允许匿名登录才能使用文件传送程序
如果你有一个NIS或NIS+帐号的话,你可以使用你的注册名及网络口令通过ftp存取远程系统。下面是使用文件传送程序将远程系统的文件传送到本地系统的步骤:
1、键入ftp命令,则ftp>提示符出现
2、键入open<远程系统名>,系统显示连接信息,并请求你的用户名
3、键入远程系统上你的用户名并按回车.如果需要口令的话,会请求你输入
4、如果需要,键入口令,系统显示注册信息及ftp>提示
5、键入bin设置二进制格式,或asc设置ascii格式,这步设置文件类型
6、键入get <远程文件名> <目标文件名>并按回车,显示传送信息及ftp>提示信息
7、键入quit,系统显示goodbye信息,退出ftp命令,重新显示shell提示符。
panda%ftp
ftp>open clm
Connected to elm
220 elm FTP server (UNIX(r)system v Release 4.0) ready.
Name (elm;ignatz):ignatz
331 Password required for ignatz.
Password
230user ignatz logged in .
ftp>asc
ftp>get quest/tmp/quest
200 port command successful.
150 ASCII data connection for /tmp/quest
(129. 144.52.119.1333)
266 transfer complete.
Tp>quit
221 Goodbye
panda%
注:可以使用mget命令拷贝多个文件,详细资料见ftp(1)手册
第6章、管理用户帐号和用户组
本章主要介绍如何使用管理工具(Administration
Tool)来建立和管理用户帐号以及用户组,该管理工具用于编辑NIS+数据库和本地/etc目录下的文件,同时,它还允许用户查看NIS
map中的信息,但不提供对这些信息的编辑功能。
注意: Solaris 2.x提供了以下的SVR4
useradd命令:useradd、userdel、usermod、groupadd、groupmod和groupdel。由于这些命令与网络关系不大,因而不在本章中讨论。如果想要在独立系统中使用这些命令管理用户帐号,请参阅合适手册。
6.1增加和管理用户帐号
在下面几节中我们将介绍如何使用管理工具来增加和删除用户帐号,在Solaris
2.0下,可以通过编辑Passwd数据库或本地的/etc/passwd文件来增加用户,但管理工具不会自动为用户建立主目录。而在Solaris
2.1下,用户管理器(User Manager)则为用户提供了编辑Passwd数据库和建立用户主目录的功能。
6.1.1增加用户帐号
在向网络中增加用户之前,必须首先建立并配置好用户系统,如果需要,还必须在网络上安装并运行NIS+或NIS软件。(只有4.x系统可以成为NIS服务,而NIS客户则可用4.x或5.x
系统来安装)。
增加一个用户需要完成以下两步:设置用户帐号、为用户提供工作环境。
编辑Passwd数据库
定义用户组
建立主目录
定义用户环境
建立口令
在以下几节中,我们将介绍如何完成这些工作。
6.1.1.1编辑Passwd数据库
在编辑Passwd数据库或本地的/etc/passwd文件之前,必须首先成为系统管理组(GID14)的成员,如果系统中正在运行NIS+,那么还必须具备建立或删除NIS+数据的合适权限,之后就可以使用网络上任何系统的管理工具来改变核心NIS+数据库或本地系统的etc/passwd文件了。
增加一个用户,需要知道以下信息:
注册名(login name)
用户号(UID)
基本组号(GID)
 识别信息(姓名、办公地点、家用电话及其它)
主目录(home directory)
注册shell
按以下步骤在NIS+网络数据库或本地的/etc/passwd文件中增加用户:
1、键入openwin,启动Open Windows.
2、键入admintool,启动管理工具并显示Adiminstration Tool窗口.
3、用鼠标SELECT Database Manager图标显示Database Manager窗口.
4、SELECT Passwd数据库,在NIS+命名设备或None(本地/etc文件)上用鼠标点中并点击Load按钮,显示出Passwd
Database窗口.
5、如果是在一个大型的网络中,那么可能需要搜索某个注册名或UID,以确信它们没有被使用过,在View菜单中选择Find,在文字域中键入注册名或UID,然后用鼠标点击Find按钮,如果搜索到了一项,那么该项就被点亮,否则在Passwd
Database 窗口的底部显示出"No match"信息.
6、在Edit菜单中选择Add Entry一项,显示出Add Entry窗口.
7、在合适的文字域键入用户名和用户ID(UID).
8、当用户第一次注册时,其缺省情况是无口令状态,如果想要选择一个不同的口令状态,可在Passwd
Status菜单中选择另外一项,菜单中各项有含义如表6.1所示.
9、在文字域中键入其余的信息,表6.2 描述了每个域中的具体内容,另外Database
Manager也为用户提供了联机帮助信息,用户只需将箭头移到某一项标签上或文字域中,然后按键盘上的Help键,即可得到关于该项的详细说明.
10、当所有信息都输入完成以后,用鼠标点击Add 按钮将它们存入Passwd 数据库或/etc/passwd文件中,如果显示了"...cannot
execute method,access
denied..."信息,那么就需要编辑NIS+组表或/etc/group文件,在系统管理员组(GID)中建立或增加你的注册名.
编辑完Passwd数据库后,还需建立一个主目录并为用户设置环境,这些过程将在下面几节中介绍。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表6.1 Password Status菜单中的口令状态选择
口令状态 描述
Password is cleared 每个帐号需要一个口令,当用户第一次注册时,系统将
until first login 提示用户输入口令
Accunt is locked 当输入非法口令时,帐号无效,此时,用户可通过指定
一个新的口令来讲该帐号进行解锁,这种类型的帐号允
许用户拥有文件但无法注册
No password-rood setuid 帐号无法直接注册,它允许lp或uucp 等程序在某
access only 个帐号下运行,但用户无法注册
Normal password is set 当某帐号已经有一个口令时,可选择该项
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
注意:
一个没有口令的帐号是无法建立的,同时其口令不能在数据库管理器中直接定义而只能使用nispasswd、yppasswd或passwd命令来加以定义.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表6.2 口令数据库(Passwd Database)Add Entry窗口中各域的内容
域 描述
User name 用字符(包括数字)组成一个唯一的注册名
User ID 输入一个100-60000之间的唯一整数,用于在系统内部标
识用户
Passwor Status 见表7.1
Comment(GOOS) 输入可选信息,如用户实际名称、电话号码或所在机构
Home Path 输入用户主目录的路径,一般地,路径为/home/
,注意,在Solaris 2.x系统中,系统名不再是用户目录
路径中的一部分
Shell 输入注册时启动的shell全程路径: Bourne shell的是
bin/sh C shell是bin/csh,Korn shell的是/bin/ksh
缺省值是Bourne shell
Group ID 输入一个0-60000之间的唯一整数,用于标识用户所属的
基本组(primary group).
Max Days Valid 输入口令有效最大天数,如果该项空白,则口令不会失效
Days Warning 输入在口令失效前开始警告用户的天数
Last Mod Date 显示从1970年1月1日开始一直到口令最近一次被修改
时间的天数(8085表示1992年2月28日)该域内容是不
允许修改的
Expiration Date 输入用户帐号被注销的绝对日期,该日期以1970年1月
1日起计算的天数来表示,(如8050表示1992年1日28
日)如果该域空白,则口令不会失效
Min Change Days 输入两次改变口令之间所允许的最小天数
Max Inactive Days 输入某帐号被冻结前失效的天数
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6.1.1.2定义用户组
如果想在某个组中增加用户,必须编辑组数据库(Group
database),并在该组成员表增加用户注册名,本节描述了如何向某个组增加一个用户的过程,在这之前,首先需要知道用户注册名,用户ID(UID)以及组名和组ID。
1、 在Database Manager窗口中,点亮组数据库,用鼠标选择NIS+或None(本etc文件)并点击Load按钮。
2、 用鼠标选择想修改的一项,该项被点亮。从Edit菜单中选择Modify Entry,此时打开Modify
Entry窗口,并显示出被选项在组数据库(或文件)中的当前信息。
3、 在成员文字域中增加用户注册名,当你输错时,可按Reset按钮,以便重输信息。
4、用鼠标选择Modify后,组数据库(或本地/etc/group文件)立刻修改。
5、如果你想让该用户属于别的组,则重复以上步骤,在别的组中增加该用户。
注意:如果你不使用命名服务(naming
service),那么必须重复以上步骤,才能对属于同一组所有用户更新到其它系统上的/etc/group文件,为了编辑其它系统上的/etc/group文件,用户必须返回Load
Database窗口,并在use /etc files on host文件域中键入系统名。
6.1.1.3建立主目录(home director)
主目录是文件系统一部分,它分配给每个用户用于存贮私人文件,按照用户所创建的文件种类以及其工作性质给每个用户分配的主目录空间可以是不同的,一般地,你可以为每个用户的主目录分配15Mb左右的磁盘空间。
用户的主目录可以在本地文件系统或远程文件服务器中,其路径名约定如/export/home/。注意:这是Solaris
2.x的一种新的约定,服务器名不再包含在用户的主目录路径中,在大型服务器的/export目录下,可以为不同的用户创建户主目录,如homel,home2,home3等,不管用户的主目录安放在哪里,他们都能通过名为/home/安装点访到自己的主目录。
本节描述Solaris
2.x中主目录的安装方法,在这之前,我们先假设用户注册的系统是在网络上,用Automount自动安装的用户主目录是可访问的,并且利用系统提供share共享命令可以使用户在别的系统上通过网络访问本地的用户目录。
主目录的安装方法有以下两种:
在NIS+Auto-home数据库,NIS
auto-home表或本地/etc/auto-home文件中增加一项,自动安装主目录(推荐方法)。
 在用户系统的/etc/vfstab文件中增加一项,使系统可以通过nfs来安装主目录。为支持主目录的自动安装,SunOS
5.x系统软件在/etc/auto-master文件中设置了下面一项:
/home/etc/auto-home
该项通知Automounter将auto-home数据库中指定的目录安装到本地的/home上去,在auto-home中该项的使用格式如下:
:/export/home/
当用户以注册时,Automounter会自动将指定系统(上的指定路径/export/home/)安装到用户所在系统的/home安装点上。
这种方法适用于主目录在本地系统中,但更重要的是,一旦用户在其他系统中注册Automounter会自动将其主目录安装到该系统的/home安装点上。
注意:当Automounter用于安装主目录时,你不能在用户系统的/home安装点上建立任何目录,当Automounter处在运行状态时,系统将自动识别/home目录的特殊状态。
在建立主目录之前,必须首先编辑Passwd database来建立用户帐号,它需要以下信息:
用户的注册名和UID
 主目录所在系统名称,如果主目录在网络上是可访问的,那么主目录系统必须象用户的本地系统一样在网络的同一网段上(network
segment),用df命令检查服务器是否有足够的空间来建立一个新的目录。

用户帐号的目录名,一般地,主目录可取名为/export/home,在大型的文件服务器目录还可以是多重的,例如/export/home1,/export/home2等等,在每个目录下,不同的子目录是为不同用户建立的(例如:
/export/home/、/export/home/、/export/hom1/、/export/home2/等等)。
下面介绍主目录的安装步骤,它适用于主目录在本地系统中或在远程文件服务器上。
1、成为超级用户
2、键入cd /export/,其中是用户主目录的名称,例如,想进入目录/export/homel,可键入:#cd /exprt/homel
3、键入mkdir ,其中是用户的注册名,你可以建立一个与用户注册名匹配的目录,例如建立一个名为ignatz的用户目录,可键入:#mkdir
ignatz
4、键入chown ,此时用户成了主目录的所有者,例如,对于用户ignatz,可键入:#chown ignatz ignatz
5、键入chgrp ,用户被指定给Passwd database中标明的基本组,例如: 指定给staff组,可键入:
#chgrp staff ignatz
6、键入chmod 755 /export//,用户的主目录权限设置成:所有者为rwx,同组成员为r-x,系统中其它人员为r-x,例如:
#chmod 755 /export/honel/ignatz
注意:以下步骤描述了如何从一个运行SunOS 5.x的服务器上共享主目录,若想从运行SunOS
4.x的服务器上共享主目录,则必须使用export命令。
1、键入share检查主目录是共享的,则可以看到以下信息
panda%su
Password:
#share
- /export/home rw ""

如果没有列出主目录,则可按以下步骤建立一个可被其它系统共享的主目录,一般地,可将主目录命名为/export/home,/export/home1,或/export/home2等。
2、编辑/etc/dfstab文件,加入下面一行:
share -F nfs /export/
3、键入shareall -F nfs。这样不需要重启系统,系统就能自动执行/etc/dfstab文件中的有share命令。
4、键入ps -ef|gerp mountd。如果系统管理进程mountd在运行,则结束,反之,继续执行步骤5。
下面是一个mountd未运行时出现的信息:
#ps -ef|gerp mountd
root 221 218 16 18:07:25 pts/10:00 grep mountd
5、键入/etc/inint.d/nfs.server start,启动共享文件目录要求的系统管理进程。
注意:如果网络没有运行NIS或NIS+,就需要将主目录服务器的IP地址和系统名加入到用户系统的/etc/hosts文件中,本地/etc/hosts文件可用Database
Manager来进行编辑。
如果使用了硬盘配额(disk quotas),那么就应该为用户建立一个相应的配额。
在建立了用户的主目录之后,要使之可用,可将它加入到Auto-home database
中由Automounter启动,或者将它用为用户系统中/etc/vfstab文件里的一项由nfs装入。
6.1.1.4自动安装目录
在按本节中所述步骤操作前,必须首先建立用户主目录并且Automounter,如果要用Automounter Tool Database
Manager来编辑NIS+Auto-home数据库,那么必须是sysadmin group(GID 14)的成员,并对Auto-home
database具有建立和删除的合适权限。
只要有一合适的权限,就可通过网络上的任何系统来修改NIS+Auto-home
database或/etc/auto-home文件,在编辑Auto-home数据库时,必须知道用户的注册名和要安装的主目录名。
以下步骤适用于主目录建立在本地系统或者远程文件服务器上。
1、启动Automounter Tool并选择Database Manager。
2、窗口中缺省的域名(Domain
Name)是Ecd.East.Sun.COM,如果此缺省域名不对,则可在该字段中输入别的域名;如果是在本地系统上编辑Auto-home文件,则可用鼠标选择None,并在Host
Name字段输入系统名。
3、用鼠标选择Load按钮,将显示Auto-home database窗口。
4、选择Edit菜单中的Add Entry,将显示Add Entry窗口。
5、在User Name字段中输入。
6、在Path字段输入:/export//其中是主目录所在服务器名字。
7、用鼠标选择Add按钮,以上所编辑的信息被存入Auto-home或本地的/etc/auto-home文件中,当用户第一次注册时,主目录将自动地被安装到/home/下。
6.1.1.5用nfs安装主目录
如果用户的主目录是在其它系统上并且Automounter无法分配用户空间,那么可按以下方法用nfs来安 装主目录:
1、成为超级用户;
2、编辑/etc/vfstab文件,为用户主目录建立相应的项。例如,想要在服务器panda上为用户ignatz建立主目录,可在该文件中加入以下一项:
panda: /export/homel/ignstz - /home/ignatz nfs - yes rw,inty
3、为了建立用户系统的安装点,可以键入mkdir
/home/。注意:主目录的名称在服务器和用户系统上可以是不同的,例如,服务器上的主目录名/export/home/ignatz/在用户系统上可以是/home/ignatz;
4、键入chown /home/,此时主目录为该用户所有;
5、键入chgrp /home/,此时用户的基本组(primary group)具有访问用户主目录的权限;
6、键入mountall,当前vfstab文件中的所有项(它们的automount域被设成Yes)被启动装入;
7、为了加以验证,可键入mount命令来显示所在已安装好的文件系统。
6.1.1.6定义用户环境
为了建立用户帐号,需进一步定义以下用户环境:
定义缺省初始化文件
建立一个邮件帐号
设置打印机
6.1.1.7定义初化文件
当用户注册时,注册程序会自动生成一系列变量,如HOME、LOGNAME和TZ,接着运行初始化文件为用户设置系统缺省值如PATH、日期信息、umask等,然后再设置一些特定变量,例如通过修改某个用户初始化文件中的PATH变量可以使某些应用程序只能由该用户执行。
每一种shell都有自己的初始化文件,如表6.3所示。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表7.3 shell 用户初始化文件
shell 初始化文件 用途
C $HOME/.login 注册时定义用户环境
$HOME/.cshrc shell注册后定义C shell要
求的用户环境
Bourne $HOME/.profile 注册时定义用户环境
Korn $HOME/.profile 注册时定义用户环境
$HOME/. 在环境变量指定的文
件中定义注册时的用户环境
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SunOS5.x系统软件为/etc/skel目录下的每个shell都提供了缺省的用户初始化文件,如表6.4所列.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表7.4 缺省主目录下的初始化文件
Shell 文件名
C /etc/skel/local.login
C /etc/skel/local.cshrc
Bourne或Korn /etc/skel/local.profile
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
下面是缺省的/etc/skel/local.login文件:
#@(#)login 1.7 89/09/05 SMI
stty -istrip
setenv TERM ‘tset -Q-
下面是缺省的/etc/skel/local.cshrc文件:
#@(#)cshrc 1.11 89/11/29 SMI
umask 022
set path=(/bin/usr/bin/usr/ucb/etc.)
if ($?prompt) then
set history=32
end if
下面是缺省的/etc/skel/local.profile文件:
stty istrip
PATH=.:/usr/bin/usr/ucb:/etc
export PATH
以上文件定义了系统最小环境,为了简化每个用户的初始化文件,可以在/etc/skel下的文件中设置尽量多的系统级缺省变量。
为了建立初始化文件,必须首先建立好用户的主目录并且知道Passwd数据库中为该用户设置的shell类型(C、Bourne或Korn),按以下步骤设置用户的初始文件:
1、在用户的主目录下成为超级用户;
2、键入cd //,进入用户主目录,例如,要想进入/export/homel 下的ignatz用户目录,可以键入:
#cd exptrt/homel/ignatz
3、键入cp /etc/shel/local.*,将所有缺省的初始文件拷入用户目录;
4、键入chmod 744 local.*,为初始文件设置正确的权限;
5、键入chown *,使用这些初始文件属该用户所有,例如:
#chown ignatz*

6、chgrp local.* ,将文件指派给基本组(如sysadmin),该组号是在passwd数据库为用户帐号专门指定的,例如:
#chgrp 10 local。*

7、重新命名shell初始文件,如果用户shell是C shell,由键入mv local.login .login; mv local.cshrc
.cshrc,如果用户shell是Korn或Bourne shell则键入mv local. Profile .profile;
8、键入rm local.*,将已经没用的shell初始化程序全部删除;
9、安装用户主目录;
10、在用户系统中以该用户注册;
11、为用户指定一个临时的口令(见下面如何建立口令一章中的"建立口令");
12、检查用户环境设置得是否正确;
13、编辑用户初始化文件并按需要进行修改;
为了编辑用户初级化文件,需完成以下几步:
1、 设置缺省路径,该路径包含用窗口环境应用程序安装点以及该用户的主目录;
2、 为了改变路径设置,如下增加或修改PATH变量,对于C shell可键入setpath=(. / /
/...),例如,可在用户的$HOME/.cshrc 文件中加入以下一行:setpath=(. /usr/openwin/bin /usr/bin

论坛徽章:
0
13 [报告]
发表于 2006-12-01 16:04 |只看该作者
$home/bin /usr/lib /usr/sbin)。对于Bourne或Korn shell可键入PATH=/://...;export
PATH。例如可在用户的$HOME/.profile文件中加入以下一行PATH=.:/usr/openwin/bin:usr/binHOME/bin:usr/lib;export
PATH
4、 用env命令检查环境变量设置得是否正确,注意,即使用户shell是C shell其环境变量也是用Bourne或Korn
shell语法显示,输入man=s5 environ可得到在关env命令的更多信息.
$env
HOME=/home/ignatz
HZ=100
LOGNAME=ignatz
MAIL=/var/mail/ignatz
MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:4:5:7:8
PATH=:/usr/openwin/bin:sbin:/usr/sbin:/usr/bin:/etc:/$HOME/bin:lib:usr/lib
SHELL=bin/sh
TERM=sun
TZ=EST5EDT
$
5、 增加或改变环境变量的设量,对于C shell可键入setenv (或set =)。例如,设置100个命令的历史表,可键入setenv
HISTORY 100,对于Bourne或Korn
shell,可以键入=;export。例如,设置用户的缺省邮件路径,可键入MALL=/var/mail/ignatz;export MAIL;
6、 检查umask设置,如果需要对它进行改变,可键入umask ,数字前面的可以省略,例如,要文件权限为755,可键入umask
022,表6.5列出了八进制unask值对应的文件权限。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表6.5 umask值对应的权限
八进制值 文件权限
0 rwx
1 rw-
2 r-x
3 r--
4 -wx
5 -w-
6 --x
7 ---(none)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LANG变量和LC环境变量决定了shell使用的本地习惯,这些习惯和背景是在初始文件中设置的,它们主要包含时区、collation
orders、数据格式、时间、汇率和数字,LANG变量为某个指定的国家或地区所有可能的文化习惯和背景,LC变量可单独使用,如果用LC.COLLATE,LC-CTYPE,LC-MSEE
AGES和LC-NUMERIC变量来设置本地的特性,表6.6列出了不同地区的值。
如果系统需要支持多字节字符(如日语)那么需要在系统初始化文件(/etc/profile、etc/login)中加入命令stty cs8
defeucw命令,并重新注册。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表6.6 LANG和LC变量的取值
值 地点
de: German
fr: Frenah
iso-8995-1 English and Enropean
it Italian
Japanese Japanese
Korean Korean
sv Swedish
tchinese Taiwanese
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6.1.1.8建立用户的邮件帐号
每个用户在本地系统或邮件服务器上都有一个邮箱并可能在/etc/mail/aliase文件中有一个邮件别名,它指向邮箱的具体位置,按以下步骤在邮件服务器上为用户设置邮件客户:
1、在邮件客户服务器系统上成为超级及户;
2、建立/var/mail安装点;
3、 编辑/etc/vfstab文件并在邮件服务器上增加/var/mail目录,将文件安装到该目录上这样系统每次重启后,就会自动挂上户的邮箱;
4、键入mount -a命令安装客户的邮箱;
5、用Administration
Tool编辑/etc/hosts文件并为邮件服务器增加相应项。注意:当信息第一次被传送时,/var/mail目录下的sendmail程序会自动为用户建立邮箱。

6.1.1.9建立口令
口令是系统安全性的保障,每个用户都应该使用6--10个字符和数字的组合来构成一个口令,关于改变口令和口令属性的方法可参见手册中的passwd(1)、yppassed(1)、或nispasswd(1)
在SunOS 4.x系统中,加密后的口令与有关用户的其它信息一起存放在/etc/passwd文件中,在SunOS
5.x中,加密后的口令以及与口令有关的信息则被存放在NIS+Passwd数据库的Shadow域(或本地的/etc/shadow文件)中,Shadow文件的权限是--r-------,只有根用户才能读该文件,同时也只有Passwd、ypasswd和nispasswd命令才能写该文件。
以下是一个/etc/shadow文件的例子:
root:XzVuaelvazZsw:8223::::::
daemon NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
smtp:NP:6445:::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
listen:*LK*::::::
novady:NP:6445:::::
noaccess:NP:6445::::::
janice:gzqgrmlKcfy7A:8223::::::
为了建立或修改口令,可使用命令/usr/bin/passwd
,用户可以在任何时候建立和修改自己的口令,但是只有根用户才能建立其他用户的初始口令。注意:用户可以用passwd命令来定义、更改和查看口令的有关属性,例如口令的期限等,有前passwd命令的详细信息说明请参见手册。输入新口令时应两次输入新口令。
6.1.2管理用户帐号
管理用户帐号包括对用户帐号的修改、取消和冻结
6.1.2.1修改用户帐号
当有关用户的信息变化时,可以用Database Manager来编辑passwd
database中信息,一般用户帐号的登录名和UID是不需要修改的,除非它与现有的某用户名或UID冲突。
在网络环境中,当用户从一个系统转移到另一个系统中或者从一个服务器转移互到另一个服务器上时,需要用Database
Manager来为用户主目录修改Auto-home数据库。
如果需要修改用户口令,就使用passwd。
6.1.2.2取消用户帐号
以下是取消用户帐号的步骤
1、 从NIS+Passwd数据库NIS表或/etc/passwd文件中删除该用户项;
2、 从NIS+Group数据库、NIS map或/etc/group文件中取消该用户名;
3、 从打印机访问或拒绝访问表中删除或存档;
4、 决定是否想对所有的用户文件删除或存档;
5、 删除用户邮件文件;
6、 从Auto-home数据库中删除用户;
6.1.2.3冻结用户帐号
有时,你可能想要临时或永久地冻结某个注册帐号。当然,要这样做你必须有充分理由,如用户可能不来使用该帐号或者你有充分证据表明该帐号经常被滥用或安全性受损。
冻结一个注册帐号的最简单方法是使用Database Manager来对Password数据库中的用户口令进行加锁。
在本地系统中,你可以通过设定口令期限、注销日期或规定用户使用该帐号的固定间隙控制用户帐号,另一种冻结用户的简单办法是临时地改变用户帐号的口令。
6.2设置和管理用户组
Group数据库(表或本地/etc/group文件)存贮在关于用户组的信息,通常称为UNIX组。一个用户组是能共享文件以及其它系统资源的一个用户集合,例如,
同一课题组的用户可以组成一个用户组。
每个用户组有一个GID号(组标号,类似于UID),它是系统的内部标识号,一个组应该有一个组名和一个用户名表,用户组可用以下两种方法加以定义:
 在用户帐号中使用GID来定义用户有基本组,即在Passwd数据库的Group域中增一个新的GID号。
 在Group数据库中输入该组的名称、GID号和用户表用上面的第二种方法定义用户组比较合理,因为它为每个组定义了一个组名。
所有的用户都至少属于一个组即基本组,虽然这不是系统所要求的,但是你必须将用户加入到基本组的成员表中,除基本组外用户最多还可以同时属于16个附加组,具体实现方法是将用户加到所属组的成员中。
group命令可用于列出包含该用户的所有用户组,对于任意用户在某一时刻其基本组有一个,但是用户可以使用newgrp命令临时地改变基本组。
某些应用系统(如文件系统)只关心用户的基本组,比如,文件所有者、帐号数据只影响基本组,另外一些应用系统则可能地考虑支持用户共享的附加组,如只有sysadmin
group的成员才能使用Administration tool来改变数据库。
通常我们要对文件、目录分别设置用户、组及其它的读/写/执行权限,这些权限是安全性的保证,如果你的基本组或附加组(secondary
group)权限不够,那么你就不能存取别人的文件,例如,可以为技术资料编写人员建立的一个techwrite组,并为该组所在目录建立相应的权限,这样,只有该组成员才能修改该目录下的文件。
用户组可以是本地系统有效,也可以贯穿于整个网络。通过网络,用户组可以允许网络上的一组用户存取一组文件,而其它用户则无法对它们进行操作。
6.2.1设置Group数据库中的域值
Group数据库(表或本地/etc/group文件)包含以下一些主要域项:
组名(Group Name)
组号(Group ID)
成员表(Member List)
另外,组口令(Group Password)也是其中的一项,但很少使用,它是早期的UNIX遗留下来的,通常可将该项空着或者仅仅填入一个星号。
6.2.1.1设置组名(Group Name)域
该域包含一个组名,例如某大学化学系在成员可取名为chem,组名最多可由9个字组成。
6.2.1.2设置Group ID域
该域包含了一个组标识号,在系统中GroupID必须是唯一的,每个Group
ID是一个0-65535之间的整数,但通常在100-60000之间取值(60001和60002分别赋给了nobody和noaccess,100以下的整数是为系统缺省帐号保留的)、当使用Administration
Tool来增加用帐号时,你必须指明用户的基本组。
6.2.1.3设置成员表域
该域包含了某组所有用户成员表,用户名之间可用逗留隔开,这些用户必须是在Passwd数据库中定义的注册名,如上所述,每个用户可同时属于17个组。
6.2.2建立缺省的UNIX用户组
SunOS 5.x提供了以下的缺省组:
root::0:root
other::1:
bin::2:root,bin,demon
sys::3:root,bin,sys,adm
adm::4:root,uucp
uucp::5:root,tty,uucp
mail::6:root
tty::7:root,uucp
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10
daemon::12:root,draemon
nobody::60001:
noaccess::60002:
可以在NIS+Group数据库、本地的/etc/group文件中加入GID为14的sysadmin组,该组中所有用户可以使用Administration
Tool
6.2.3建立新的组
作为系统管理可能要经常地建立新的用户帐号,在具体分配用户之前,必须首先建立用户组和GID号。Administration
Tool可用来建立和维护网络以及本地的用户组,在使用Administration Tool建立或编辑组帐号时,首先必须是sysadmin组(GID
14)的成员,如果网络上正在运行NIS+,那么还必须有对NIS+数据库进行操作的权限。
建立一个新的组,需要知道以下信息:
 组成员有用户注册名(Login names)
组成员的用户号(User IDs)
组名(Group name)
 组号(Group ID)
按以下步骤在NIS+数据库或本地/etc/group文件中增加用户组:
1、 键入admintool启动Administration Tool;
2、 用鼠标选择Database Manager图标,显示Database Manager窗口;
3、 用鼠标选择Group数据库,并选择NIS+命名服务或None(本地/etc文件);
4、 用鼠标选择Load按钮,显示Group Database窗口;
5、 从Edit菜单中选择Add Entry一项,显示出Add Entry窗口;
6、 输入组名、组号以及成员表(成员名之间用逗号隔开);
7、 用鼠标点击Add按钮,将该组加入到Group数据库(或本地的/etc/group文件)中,如要增加更多的用户组,则重复以上两步。
6.2.4修改或删除用户组
当用户组中有新的成员加入或者成员调离该组时,就需要修改用户组帐号的成员表,即在现有的帐号中增加或删除用户,当某种课题完成后,该组便不再需要了,于是就可以将该组删除,在重用已删除组的GID时应注意避免冲突。
6.2.4.1修改某个组
按以下步骤修改一个组项:
1、 用鼠标选择Group按钮,选择NIS+或None,并按Load按钮,显示出Group Database窗口;
2、 用鼠标选择想要修改的数据库名;
3、 从Edit菜单中选择Modify Entry项,弹出Modify Entry窗口,并显示该组的当前各项值。
4、 在相应字段中增加或删除用户名,然后选择Modify修改数据库中的该项内容。
6.2.4.2删除某个组
如果某个组的组号不再需要,就可将该组删除掉,按以下步骤删除一个组:
1、 用鼠标选择Group,选择NIS+或None并按Load按钮,弹出Group Database窗口;
2、选择需要删除的数据库名;
3、从Edit菜单中选择Delete Entry,此时系统提示:
"Do you really want to delete this entry?"
5、 如果不想真正删除此项,由选择Cancel,如果要删除,则选择Delete按钮,这样便可以将该组从组数据库中删除掉。
第7章、UNIX的shell命令
本章将介绍:各种shell解释器共同点、标准shell介绍、C shell介绍、Korn shell介绍。
在Solaris 2.x软件环境中提供给用户三种命令解释器:标准shell(缺省shell或Bourne
shell,本手册中我们称为标准shell)、C shell和Korn
shell。对每一个用户而言都有一个缺省的shell命令解释器,另外也可以在命令行中打入某种shell而重新进入另外一种shell解释器。本章首先介绍三种shell的公共命令,然后再分别对它们各自的特性作一些详细介绍。
7.1各种shell的公共命令
本节描述各种shell所使用的命令
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表7.1 各种shell解释器的基本特性
特性 Bourne C Korn
别名 无 有 有
命令编辑 无 有 有
增强的cd 无 有 有
历史 无 有 有
忽略CTRL-D 无 有 有
不同于profile的初始文件 无 有 有
作业控制 有 有 无
退出文件 无 有 有
文件的重写保护 无 有 有
与标准shell的语义兼容性 是 否 是
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
7.1.1设置某种缺省shell
在用户数据库或/etc/passwd文件中,注册shell是在每个用户的登记项的最后一列中设置,用户可以使用系统提供的管理工具或编辑本地的/etc/passwd文件来修改注册shell,但是此用户必须是sysadm组的成员,即用户的组号(GID)应该是14,如果是在运行NIS+,则必须有建立和删除NIS+数据据库的权限。
下面是用户更改注册shell的一些步骤:
1、按需要,从管理工具中打开数据库管理器窗口。
2、
在用户数据上,按下SELECT,然后再接着按SELECT来选择NIS+或无NIS+服务。若选择NIS+则编辑Passwd数据库,否则编辑本地的/etc/passwd文件。
3、 点击Load键,显示用户数据库窗口。
4、 在想要编辑的用户项上按SELECT鼠标键,然后从编辑(Edit)菜单中选择修改(Modify)项。
5、 修改shell项的文字域,/bin/sh是标准shell,/bin/csh是C shell或者输入/bin/ksh作为Korn shell。
6、 点击Modify按钮,修改用户缺省SHELL定义,只要用户重新注册进入系统,即使用新的shell。
7.1.2在命令行中改变shell类型(sh,csh,ksh)
如果用户不修改用户数据库而想使用别的shell解释器,则可以在命令行中简单地打入所需shell的命令名即可。
例如,要想使用C shell,打入csh即可,缺省C shell提示符是在系统名之后跟一个百分号(%)。
$csh
panda%
如果要改变为Korn shell,则打入ksh,korn shell的缺省提示符是$
panda%ksh
$
7.1.3从shell解释器中退出(exit)
如果用户是在命令行中进入某种shell解释器,则只需打入exit和回车键,即可退出当前的shell解释器,而返回原先的shell解释器。
$exit
panda%
7.1.4清除一个shell窗口(clear)
在某个shell窗口中,用户可以清除一个shell窗口的内容,并且重新显示shell的提示符到此窗口的左上角,例如要清除一个窗口的内容,可以打入clear和回车键:
panda%which openwin
no openwin in. /home/ignatz/usr/deskset/bin/usr/bin
/home/ignatz/bin/bin/home/bin/etc/usr/etc/usr/etc/usr/ucb
/usr/bin
panda%clear
此时窗口的显示内容即被清除,然后把提示重新显示在顶部。
7.2标准shell
在Solaris 2.x软件环境中,标准shell(Bourne shell)是缺省shell,它是由Steve Bourne先生在AT&T
Bell实验室工作时开发的,标准shell相对而言,结构紧凑,而且简单,但它也提供所有的程序设计功能,可以实现由各种命令和过程组成的shell文件(script)。因为如何编写shell文件已经超越本文范围,所以我们不在此赘述。
7.2.1标准shell的初始文件
标准shell只使用一个初始执行文件,其名为.profile,一般放在用户的基目录(home
directory)之下,它专门用来设置用户的环境。当用户注册或在命令行中启动标准shell时,即读.profile文件,一般来说,用户通过此文件来设置用户查找路径和其它环境变量。
7.2.2定义标准shell的环境变量
对于标准shell和Korn shell而言,定义环境变量的语法都是一样的,输入命令=; export,例如:
$HZ=100;export HZ
$
7.3C shell
C shell是Bill Joy先生在UCB工作学习时开发的,它已被UNIX的众多用户所接受。C shell完全不同于标准shell和Korn
shell,而且有自己独特的语法规则,C shell最重要的优点是具有历史功能、命令编辑功能和别名功能。历史功能的意义是C
shell可以存贮用户最近输入的命令记录,用户可以显示这些命令,也可以按原样重新使用某条命令;而编辑功能是用户可以通过编辑来改变某条命令;别名可以让用户用短的名字来表示经常使用的长命令,或几条常用命令。
7.3.1C shell的初始文件
C shell使用两个初始化文件,用于设置用户的环境变量,这两个初始文件名分别是.login和.cshrc,也放在用户基本目录之下。
当用户注册时,C shell首先读.login,然后再读.cshrc文件。当用户是从命令行中启动C shell时,只读.cshrc文件(C
shell运行控制)。因为.login文件不是每次启动C
shell都读入,因此用户应该在.login中设置环境变量,而在.cshrc文件中设置用户的查找路径名。
7.3.2C shell环境变量的定义
使用命令setenv ,例如:
panda%setenv display rogue:0
panda%
7.3.3建立C shell的别名
用户可以在.cshrc文件中定义所需的别名。建立一个别名的语法为:
alias
例如,你想简写别名(alias)这个命令成为a,则可以在.cshrc文件加入下列一行:
alias a alias
下面的实例选自.cshrc文件。注意,如果命令行中包含有空格,则必须把整个命令中用引号引起来,引号可以是双引号,也可以是单引号:
alias a alias
a h hiostory
a c clear
a lf 1s -F
a ll "ls -l | home"
a la ls -a
a s "source .cshrc"
a f ‘find -name core -print
a copytotape "ter cvf /dev/rmt/0 *"
7.3.4设置C shell的历史功能
要设置C shell的历史功能,只需在命令行中打入:
set history=
其中,n可理解为C shell可以存贮的命令条数。举例:
panda%set history=18
panda%
用户既可在shell窗口中"临时"设置历史功能,也可以把它放在.cshrc文件中设置"永久"的历史功能。
7.3.5使用C shell历史功能
在命令行中,打入history命令,即可显示已经打入过的命令,这些命令是你打入的最后n条命令,n是像7.3.4节所述的方法设置的。
panda%history
26 pwd
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls -l howto*
31 cd
32 cd Config/Art
33 ls -1
34 tar cvf /dev/rmt/0
35 histoty
panda%
要想重复执行刚打入的命令,可打入!!和回车,即复执行上一条命令:
panda% history
26 pwd
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls-l howto*
31 cd
32 cd Conrig/Art
33 ls-1
34 tar cvf /dev rmt/0
35 histoty
panda%!!
history
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls-l howto*
31 cd
32 cd Conrig/Art
33 ls-1
34 tar cvf /dev rmt/0
35 history
36 history
panda%
要重复最后一条命令的最后一个词,可打入!$,这样上一条命令的最后一个词即可作为当前命令行中的一个变量。例如,你可能已经输入了某个文件的全程路径,然后想用这个路径名作为变量,来用vi编辑此文件或打印此文件:
panda%ls -l /home/ignatz/quest
panda%lp !$
panda%
!$可以用在命令行的任何地方,在下面的命令行中,文件/home/ignatz/quest将拷贝到/tmp目录之下:
panda%ls -1 /home/ignatz/quest
panda%cp !$ /tmp
cp /home/ignatz/quest /tmp
panda%
要想重复C shell历史令表中的某个序号的命令,则打入!,例如:
panda%history
29 tar avf /dev/rmt/0
30 ls -l howto*
31 cd
32 cd Config/Art
33 ls -1
34 tar avf /dev/rmt/0
35 ls -l
36 cd
37 lp howto*
38 history
panda%!32
cd Config/Art
panda%
7.3.6设置C shell的退格键(stty erase)
如果用户想把删除字符的键从Delete键变为Backspace键,则可以输入下面的命令:
panda%stty erase ^H
panda%
此后,退格键(Backspace)即作为字符删除键使用。
7.3.7新命令的嵌入
C shell为所有命令路径变量建立一个内部命令表,因此当用户把新命令放入某个目录中时,这个新命令并不在这个表中,这样,C
shell就不会执行此新命令。C
shell为了解决这个问题,把用户的新命令加入到查找路径内部表中,为用户提供了rehash命令,用户只需打入rehash命令,即可使这条新命令有效:
panda%newcommand
newcommand: Command not found
panda%rehash
panda%newcommand
panda%
7.3.8Cshell历史命令的编辑
用户可以从C shell的历史表中编辑命令,其语法:
S//
下面我们举例说明:
panda% history
31 cd
32 ls
33 cd/home/frame3.1
34 ls
35 cd
36 tar cvf /dve/rmt/0 frame3.1
37 lp questionnaire
38 lpstat -t
39 echo $PaTH
40 history
panda%!39:s/a/A/
echo $ PATH
.:/home/winsor:/usr/openwin/bin:/usr/deskset/bin:/home/
winsor/bin:/bin:/home/bin:/etc:/usr/etc:/usr/bin:/home/
frame3.1/bin
panda%
在此例中,第39条命令行中用户打错了一个字母,然后用户用C shell编辑命令改正了打错的那个字母,命令执行也就正常了。
7.4Korn shell
Korn shell是AT&T Bell实验室的David Korn开发的,是标准shell超集,Korn
shell使用标准shell一样的语法,只不过Korn shell本身又加入了许多新的功能, Korn shell 比C
shell提供了更加方便的命令编辑方式,Korn shell一样亦具有历史和别名功能。
7.4.1Korn shell的初始化文件
korn
shell使用两个初始文件,它们都存放在用户的基目录之下,其名分别为.profile和.,第二个文件名是可以让用户自己选择命名的,其主要功能是设置环境,同C
shell类似,你可以把第二个文件名选择为.kshrc,以后我们即用.kshrc这个名称来说明第二个文件。
当用户注册时,Korn shell首先读.profile文件,然后读.kshrc。.kshrc主要让用户建立使用Korn
shell的习惯约定,在.kshrc应该包括只有Korn shell才能执行的命令。
用户必须用ENV环境变量来指定这.文件的名称,Korn shell设置环境变量的命令语法同标准shell:
=;export
其中export命令是必须的,它使此变量对Korm shell以及它的所有子进程都有效,下面为.kshrc文件设置环境变量:
$ENV=$HOME/.kshrc;export ENV

论坛徽章:
0
14 [报告]
发表于 2006-12-01 16:04 |只看该作者
$
很显然,用户必须将ENV这个环境变量在.profile中设置好,否则当用户注册时,Korn
shell就会找不到.kshrc文件。注意,ENV环境变量是没有缺省设置的,用户不设置ENV,就不能使用这此性质。
不论是在注册时,还是在命令行中启动Korn shell,.kshrc文件在每次启动Korn shell时都必须读入。
7.4.2Korn shell的选择项
Korn shell有许多变量可用来指定用户的环境和控制命令的执行,要想显示当前的选择项设置情况,可输入:
$set -o
下例显示了Solaris 2.x软件系统中Korn shell的缺省设置情况:
$set -o
Current option settings
allexport off
bgnice on
emacs off
errexit off
gmacs off
ignoreeof off
interactive on
keyword off
markdirs off
monitor off
noexec off
noclobber off
noglop off
nounset off
privileged off
restricted off
trackall off
verbose off
vi off
viraw off
xtrace off
$
我们在表7.2中说明这些缺省选择项的具体意义。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表7.2 Korn shell的选项
选择 缺省值 说明
allexport off 当定义时,自动地报告变量
bgnice on 要低优先级执行所有的后台作业
emacs off 设置emacs/gmacs为联机编辑器
errexit off 如果命令返回伪值,则shell执行ERR陷井并立即 退出
gnaces off 设置gmacs/gmacd为联机编辑器
ignoreeof off 当运行在交互式shell 时,则在文件的未尾也不退出shell,只有打入exit才退出shell
interactive on shell自动进入交互式方式,因此也立即显示shell提示符
keyword off shell根据变量赋值语法将每个字放入变量赋值表中
markdirs off 在所有目录名后显示一个"/"
monitor on 使能作业控制
noclobber off 当使用转向输出>时,不覆盖一个已经存在的文件
noexec off 只读此命令,而不执行它,利用此命令可以调试shell文件的语法错误
noglob off 取消文件名的扩充
nolog off 在历史文件中不存贮功能定义
nounser off 当shell想要扩展一下已经设置的变量时,显示一条错误信息
privilrged off 当此选择项是off时,使用实际UID和GID,若是on,则把UID和GID设置成启动此shell时有效值
restricted off 设置一种受限制的shell
trackall off 当命令第一次出现时,使得它成为别名
verbose off 当读入时,即是显示输入
vi off 设置vi为联机的编辑器
viraw 0ff 指定从vi中,每次只输入一个字符
xtrace off 当执行命令的变时时,显示它们
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按照korn shell的习惯用法,这些选择都在.kskrc文件中设置。
要想使某选择项有效,可输入:
set -o
若要取消这个选择项,可输入:
set +o
例如在.kshrc中输入:
set -o vi
即设置联机编辑器为vi,而是如果是下面这一行:
set +o vi
则是关闭vi作为联机编辑器使用。
用户亦可以用同样的语法,在命令行中设置Korn shell的其它选择项。
7.4.3创建Korn shell的别名
Korn shell创建别名的语法是:
Alias =
例如把别名命令alias别名为a,其命令为:
$alias a=alias
$
Korn shell本身带有一些预先定义好的别名,要显示这张别名表,只需打入alias命令即可:
$alias
autoload=typeset -fu
false=let 0
functins=typeset -f
hash=alias -t -
history=fc -1
integer=typeset -i
nohup=nohup
r=fc -e -
stop-kill-STOP
suspend=kill -STOP $ $
true=:
type=whence -v
$
表7.3描述这些缺省别名的意义。
表7.3 Korn shell缺省别名
别名 值 定义
autoload typeset -fu 定义一个自动装入函数
false let -0 返回非零状态,经常用于产生无限循环
functions typeset -f 显示函数表
hash alias –t - 显示跟踪别名表
history fc -1 从历史文件中列出命令
integer typeset -i 整型变量的说明
nohup nohup 即使退出系统(log out),也继续执行正在运行的作业
r fc -e- 重复执行前面的命令
stop kill -STOP 停止作业
suspend kill -STOP$$ 挂起作业
true ; 返回一个零退出状态
type whence-v 显示命令的信息
7.4.4用Korn shell的联机编辑器编辑命令
使用Korn shell的联机编辑器,用户在执行命令以前可以编辑当前命令。Korn
shell的联机编辑器可以是emacs、gmacs或vi,利用Korn Shell的选择项功能,使用下面命令:
set -o
或使用EDITOR或VISUAL环境变量来设置联机编辑器。
Korn shell的在线(或联机)编辑器vi是普通vi程序改进后的子集,使用联机vi编辑器时会自动进入插入方式。
用户在一般情况之下,不需要使用联机vi编辑器,而可直接打入命令并执行之。如果想要编辑某个命令,则打入Escape键进入命令方式,用户可以使用标准的光标移动命令向前移动,也可以使用vi编辑命令编辑这一行的内容。当用户在编辑命令时,按回车即执行此命令,而打入Escape则是回到输入方式。如果用户想要编辑的命令行是在一个vi文件中,则打入v命令即可打开一个含有命令行的文件。当退出vi时即执行命令,有关vi的常见命令请参见第2章的快速参考表。
7.4.5设置Korn shell的历史
Korn shell在某个文件中存贮所有的历史命令,这个文件用Korn
shell的环境变量HISTFILE指定,如果没有设置这个环境变量,则存贮在$HOME/.sh-history中。变量HISTSIZE指定存贮的命令个数,若用户没有设置此环境变量,则保存最近输入的128条命令,当历史表中达到了最大的命令个数时,则继续保存新命令,而把最老的命令从历史表中删除。
要设置一个历史表的大小,可键入:
HISTSIZE=;export HISTSIZE
例如,下面命令行把历史表的大小设置为200:
$HISTSIZE=200;EXPORT HISTSIZE
$
用户可以在某个shell窗口中临时设置历史表的大小,也可以把这些设置命令放入.profile或.kshrc文件中使之“永久”有效。
7.4.6显示Korn shell的历史命令
用户可以利用fc和history这两条命令来显示历史表中的命令,这是因为history已经缺省别名为fc -1,所以用户可以交替使用这两条命令。
下列例子显示历史表中最后的16条命令。
$history
16 pwd
17 ps -el
18 ps -el | grep openwin
19 cd
20 more questionnaire
21 su
22 lp/etc/passwd
23 lpstat -t
24 man ksh
25 du
26 maker&
27 tip -2400 5551212
28 alias h=history
29 find /-name ksh -print
30 df -k
31 history
$
同样,用户打入命令$fc -1也可以显示同样的这些信息。
history和fc命令还可以有附加的变量,这样就可以让用户指定某个显示范围,例如可以显示最后的条命令或以倒序显示命令,有关ksh的详细材料,请参见ksh的手册。
7.4.7使用Korn shell的历史命令
要想利用Korn shell历史表中的命令,可以打入:
r
来重复使用由指定的这条命令,例如要重复使用第27条命令:
$r 27
tip -2400 5551212
(接着显示连接好的一些信息),若是重复执行历史表中的最后一条命令,则只需打入r即可。
7.4.8编辑Korn shell的历史命令
利用fc命令,用户可以显示特定的历史命令和编辑此命令,其语法为:
fc[-e ][-r][]

fc-
e-[=选择项-e是用来指定某个编辑器,若不指定编辑器,则使用FCEDIT环境变量,这个环境变量的缺省值为/bin/ed。-r的选择项是倒序显示历史表中的命令,即把最近的命令显示在历史表最上面,若不指定范围,则编辑最后一条命令。
举例来说,用户想使用vi编辑历史表中的最后一条命令,则打入:
fc -e vi
此时创建一个含有历史表最后一项的文件,只要用户编辑此命令并保存这些改变,就可执行此命令了。
第8章、管理系统
本章将介绍:显示系统专有信息、配置附加的交换空间、创建本地邮件别名
8.1显示系统专有信息
使用本节的命令来获得系统专有信息,如主机ID号、硬件类型、处理机类型、OS版本号、系统配置、系统运行多长时间、以及系统日期和时间,随后还说明如何设置系统日期和时间,以及改变系统时域。
8.1.1确定主机ID号(sysdef -h)
为了得到系统的主机ID号,在命令行键入sysdef
-h,系统就显示主机ID。这个命令替代SunOS4.x的命令hostid,hostid命令同时也可以使用。
panda%sysdef -h
Hostid
554095cc
panda%
8.1.2确定硬件类型(uname -m)
键入uname -m,就获得系统的硬件类型,提供相似信息的Sunos4.x命令arch,在sunos5.x中已不存在。
panda%uname -m
sun4c
panda%
1.1.3确定处理机类型(uname -p)
要获得系统的处理机类型,键入uname -p,系统的处理器类型就是显示出来,这个命令替代sunos的mach命令。
panda%uname -p
sparc
panda%
8.1.4确定OS版本号(uname -r)
命令uname -r给出OS版本信息
panda%unam -r
5.5
panda%
8.1.5显示系统配置信息(prtconf)
要显示系统的配置信息,键入prtconf,系统配置信息就显示出来。
panda%prtconf
System Configuration; Sun Microsystems sun4c
Memory size:16 Megabytes
sun 4/65 ,unit #0
options,unit#0 zs,unit #0
zs,unit #1
fd,unit #0 (No driver.)
audio,unit #0 (No driver.)
sbus,unit #0
dma,unit #0
esp,unit #0
scsibus,unit#s
sd,unit #0
sd,unit#1
le,unit #0
cgsix,unit #0
auxiliary -io,unit #0(Nodriver.)
...
panda%
显示系统配置信息的另一种方法是,键入命令sysdef,系统配置信息显示出来。
panda%sysdef
Hostid
530080d2
sun4c Configuration
Devices
options,unit # -1
zs,unit #0
zs,unit #1
fd,unit #-1
audio,unit #-1
sbus,unit #0
dma,unit #0
esp,unit #0
scsibus,unit #0
sd,unit #0
sd,unit #1
le,unit #0
cgsix,unit #0
auxiliary -io,unit #-1
interrupt -enable,unit #-1
memory-error,unit #-1
counter-timer,unit#-1
eeprom,unit #-1
pseudo,unit #0
lo,unit #0
tidg,unit #0
tivc,unit #0
...
panda%
8.1.6确定系统已经运行了多长时间
要想知道系统已运行了多长时间,键入命令uptime,本地系统的时间、用户数、平均负数均显示出来
panda%uptime
11:18am up 5 day(s),16:12 users,load average:16.46.15.92.15.55
panda%
要想知道系统是何时启动的,键入who -b,最后一次启动的月、日、时等信息显示出来。
panda%who -b
system boot Ju1 14 08:49
panda%
8.1.7确定系统的日期和时间(date)
要显示系统的日期和时间,键入date,系统的日期和时间就显示出来。
panda%date
Tue Ju1 14 19:40:47 PST 1992
panda%
8.1.8设置系统的日期和时间
下面是重新设置系统日期和时间的步骤:
1、变成超级用户
2、键入date,这里mm是月,dd是天,hh是时,mm是分,yy是年,于是系统的日期和时间按你指定的参数重新设置。
panda%su
Password:
#date
Tue ju1 14 16:07:01pst 1992
#date 07141552
tue ju1 14 15:52 :00 pst 1992
#
8.1.9改变系统的时区(/etc/TIMEZONE)
时区在/etc/TIMEZONE文件中设置,可用的U.S时区变量如下。完整的时区变量表见usr/share/lib/zoneinfo目录。
Us/arizona
US/central
US/east-indiana
US/Hawaii
US/Mountain
US/Pacific
US/Pacific-New
US/Yukon
下面是改变时区的步骤:
1、 成为超级用户。
2、 编辑/etc/timezone文件,改变tz=<时区》变量,并保存文件,于是时区被设置。
3、重新启动系统。
下面是一个/etc/timezone文件,系统的时区设置成pacific标准时区。
panda% more /etc/timezone
# ident " @(#)timezone 1.3 89/12/12 smi"/* svr4.01*/
# set timezone environment to default for the machine
TZ=US/Pacific;export TZ
下面是将时区Pacific改成Eastern的例子:
panda%su
Password:
#vi /etc /timezone
TZ =US/east-indiana;export TZ
:w!
#reboot
panda%date
tue ju1 14 14:24:52 est 1992
panda%
注:你需要保证文本编辑器确实将改变过的内容写进文件了,如:在vi中,可使用:w!命令强迫写。
8.2配置附加的交换空间(mkfile,swap)
为了在不做格式化的情况下创建并增加交换空间,首先必须使用mkfile命令加入交换空间。
为了列出可用的交换文件,键入swap –1,可用的交换文件表就显示出来。swap命令替代了sunos4.x的swapon命令。
panda%swap -1
swapfile dev swaplo blocks free
swapfs - 0 94520 93512
/dev/dsk/c0t3d0s1 32.25 8 65512 45048
panda%
下面是创建交换文件的步骤:
1、 成为超级用户,可以在没有根权限的情况下创建一个交换文件,但交换文件的属主最好是根,以使其它进程不能随意存取它。
2、 键入mkfile
[k|b|m],跟在数字之后的字母分别K字节、块、或兆字节。于是,按你指定的大小及名字创建一个交换文件。下面的例子创建一个1MB大小的交换文件SWAP:
panda%su
Password
#mkfile 1m /files1/swap
#
下面是增加交换文件的步骤:
1、 成为超级用户;
2、 键入swap –a <路径>,必须使用绝对的路径来指定交换文件,这样交换区就变大,可以使用了;
3、 键入swap -1证实交换文件已增加;
#swap –a /files1/swap
#swap -1
swapfile dev swaplo blocks free
swapfs - 0 94520 93512
/dev/dsk/cot3d0s1 32.25 8 65512 45048
/files1/swap 8 20402040
下面是删除指定交换文件的步骤:
1、 成为超级用户;
2、 键入swap –d <路径名>,当交换文件不再使用时,它只从表中删除,使得不再用作交换区,文件本身并没删除。
panda%su
password:
#swap -d /files1/SWAP
#swap -1
swapfile dev swplo
blocks free
swpfs- 0
94520 93512
/dev/dsk/c0t30s1 32.25 8
65512 45048
#ls –1 /files1/swap
-rw-----1 root root 104857 jan 31 13:56 swap
#
当创建附加的交换空间时,如果希望重新启动系统时这个空间仍可用,那么,必须在/etc/vfstab文件中增加一项。下面是在文件/etc/vfstab中增加一个交换文件项的步骤:
1、成为超级用户;
2、编辑/etc/vfstab文件,增加一行: - - swap – no
-。保证这一行跟在交换文件所在的硬盘分割项安装说明的后面。下次系统重新启动时,交换文件大小自动增加,下面的例子将增加交换文件/files1/swap的说明项放到/etc/vfstab文件中,它在安装文件/files1说明项之后。
/files1/swap - swap – no -
8.3创建一个本地邮件别名(/etc/mail/aliases)
在网络环境中,很可能用一个集中的方法去管理邮件别名,另外,用户常常希望建立本地别名。下面是在本地系统上创建邮件别名的步骤:
1、成为超级用户;
2、编辑文件/etc/mail/aliases;
3、 在文件的末端,在本地别名分类下,键入:<用户名1>,<用户名2>.......;
4、保存修改后的文件。
例如,如果你想创建一个叫做friends的别名,就编辑/etc/mail/aliases文件,并增加如下项:
friends:dexter@elm,ogden@willow,mary@maple
第9章、文件存取问题分析
本章描述的是与查找路径、存取数据以及所有权等有关的问题。
当用户无法访问一个程序、一个文件或者是一个目录时,可以从以下两个方面来进行检查:
1、 用户的查找路径是否已被改变,或者查找路径中所列的目录次序是否正确。
2、 文件或目录是否有合适的权限和所有者。
该章简单地描述如何判断以上问题,并指出可能的解决方法。
9.1 诊断与查找路径有关的问题
如果用户键入一个不在查找路径中的命令,系统将提示"Command not
found"信息,通常导致命令无法找到的原因有两点:系统中根本没有这一命令,或者命令不在查找路径中。
如果在查找路径的某个目录中存在同名或者错误版本的命令,系统也将无法正确执行该命令。
为了诊断和解决与查找路径有关的问题,可采用以下方法:
1、 显示当前的查找路径;
2、 编辑设置查找路径的文件(C Shell的.cshrc或.login,Bourne和Korn
shell的.profile文件),在路径中加入所需目录名或者重新安排路径的次序。注意:对于C
shell,应该同时检查.cshrc和.login文件,以确保路径设置的一致性,重复定义将导致路径难以查找并降低用户查找命令的效率。
3、 对C Shell用source命令操作该文件,对Bourne和Kron Shell使用.命令,使路径设置生效;
4、 检查该命令是否在正确路径中;
5、执行该命令。
9.1.1显示当前查找路径
为了显示当前的查找路径,可键入echo $PATH,如:
$echo $path
/sbin:/usr/sbin:/usr/bin:/etc
$
9.1.2为Bourne和Korn shells设置路径
为Bourne和Korn shells设置的路径在用户的$HOME/.profile文件中:
PATH=.:/usr/binHOME/BIN;export path
路径表开始的点(.)表示系统首先要查找的是当前目录。
9.1.3Source Bourne和Korn shell的初始化文件
当改变了.profile文件中的内容后,需要使文件中的修改内容生效,此时可键入:
$. ./.profile
9.1.4为C shell设置路径
C shell中的路径设置在用户的$Home/.cshc或.login文件中。
set path=(./usr/bin $home/bin)
路径名开始的点(.)表示系统首先要查找的是当前目录。
9.1.5Source C shell初始化文件
当你改变了.cshrc或.login文件中的内容后,为变量设置生效,可键入:
$source.login
9.1.6检查当前的查找路径
当修改完.cshrc文件后,可以使用which命令来加以验证。该命令可自动检查.cshrc文件,如果在Bourne或Korn
shell中执行which命令,并且在.cshrc文件中有一个which的别名,那么执行which命令可能导致错误的结果,为保证正确执行,Which命令应在C
shell中执行。当然也可以在Korn shell中运行直应的Whence命令。
为了检查查找路径,可以键入which ,当系统在路径名表中找到该命令时,该命令的名称和路径就被显示出来。
以下例子表明openwin命令不在搜索路径中。
panda% which openwin
no openwin in
/home/ingnatz/$bin/usr/sbin/usr/bin/etc/home/ignater/bin/bin/home/bin/usr/etc
panda%
以下例子则表明找到了openwin命令
panda% which openwin
/usr/openwin//bin/openwin
panda%
如果找不到某个命令,就需要查看有关手册。例如找不到lpsched命令,那么手册中的lpsched(1M)节中会告诉你lpsched命令的路径是/usr/lib/lp/lpsched。
9.1.7执行一个命令
键入即可执行一个命令,如果该命令在查找路径中,那么在任何路径下,该命令均可执行。如果不在查找路径,那么必须键入该命令的整个路径名。

9.2分析与权限和所有权有关的问题
用户不能存取文件或目录的最大可能是它们的权限或所有权被修改过了。例如,当用户作为根用户编辑文件时,文件和目录的所有权就可能改变,在为新用户建立主目录时,特别要注意将主目录下点(.)文件的所有者设置成该用户,如果用户不是点(.)文件的所有者,他们就不能在自己的主目录下建立文件。
另外,当改变用户组的所有权或将用户从/etc/group数据库中删除时,也会遇到同样的问题。
9.2.1改变文件的所有权
注意:当你拥有某文件或目录或者你是超级用户时,你才能修改它的所有权。
按以下步骤改变文件所有权。
1、键入ls –l 命令,在第三列显示文件的所有者;
2、成为超级用户;
3、 键入chown ,文件的所有权即指定给了新的所有者;
panda%ls - l quest
-rw-r-r-1 fred other 6023 Aug 512:06 quest
panda%su
Password:
#chown iqnatz:staff quest
#ls - l quest
-rw-r-r-l ignatz staff 6023 Aug 5 12:06 quest
#
9.2.2改变文件的权限
chmod命令可用于改变文件的权限。一般有两种方法,一是使用字符,其语法如下:chmod [who] [permission(s)]
,其中who可以是u、g或者o(即用户组或其它),你还可将它设成A用来改变所有权限(A缺省值),运算符可以是+或-,+表示增加权限,-表示删除权限,权限为R、W或X,即写、执行,有关权限的更多信息请参阅手册中的chmod(1)。
例如:为每个人设置读、写执行权限,可键入:
panda%chmod +wrx dog
panda%ls -l dog
-rwxrwxrwx 1 janice Staff 54 ju1 7 11:33 dog
panda%
为每个人设置读和执行权限,可键入:
panda%chmod +rx dog
panda%ls -l dog
-r-xr-xr-x l janice staff 54 ju1 7 11:34 dog
panda%
为了禁止任何人写此文件,可键入:
panda%chmod -w dog
panda%ls -l dog
-r-xr-xr-x 1 janice staff 54 ju1 7 11:35 dog
panda%
在下面的例子中,对dog文件的所有者赋予读写执行权限:
panda%chmod u+ wrx dog
panda% ls - l dog
-rwxr-x r-x 1 janice staff 54 ju1 7 11:36 dog
panda%
为限制同组成员和其它人员执行该文件,可键入:
panda%chmod go -x dog
panda% ls - l dog
-rwxr-r-1 janice staff 54 ju1 7 11:37 dog
panda%
改变文件权限的第二种方法是使用chmod命令的数字形式。你可以使用3位数字来分别设置owner,group和other的权限,例如,644表示对所者设置读写权限,对同组用户及其它用户设置只读权限。
1、 键入ls –1 ,系统将列出当前各文件的权限。
2、 键入chmod ,改变文件权限。
注意:你可以通过使用匹配符(*,?)来改变某组文件或某个目录下所有文件的权限。以下例子将文件权限666改为644:
panda%ls -l quest
-rw-rw-rw-1 ignatz staff 6023 Aubg 5 12 :16 quest
panda%chmod 644 quest
panda%ls -1 quest
-rw-r-r-1 ignatz staff 6023 Aug 5 12:16 quest
panda%
9.2.3改变文件组的所有权
如果某文件的组所有者不正确,那么该组成员就不能修改该文件。为了修改文件组的所有权,你必须是该组成员或者是根用户。为了改变文件的组ID,使用命令chgrp
。在solaris2.x下,ls -1命令显示文件夹所有者和用户组。当只需要显示组所有者时,可键入ls -lg命令。
$ls -lg junk
-wr-r-r-l other o Oct31 14:49 junk
$chgrp 10 junk
$ls- lg junk
-rw-r-r-1 staff o Oct 31 14:39 junk
GID可以在group数据库或本地/etc/group文件中找到,你可以通过使用Administration Tool的Database
Manager来查看或修改组成员。

论坛徽章:
0
15 [报告]
发表于 2006-12-01 16:26 |只看该作者
很有用  收下了

论坛徽章:
0
16 [报告]
发表于 2006-12-01 16:36 |只看该作者
严重支持````````

论坛徽章:
0
17 [报告]
发表于 2006-12-01 22:50 |只看该作者
这个可作为速查手册,不适合作为学习手册

论坛徽章:
0
18 [报告]
发表于 2006-12-04 11:04 |只看该作者
copy,thanks!

论坛徽章:
0
19 [报告]
发表于 2006-12-04 22:23 |只看该作者
楼主辛苦了,为啥不搞个附件呢,呵呵

论坛徽章:
0
20 [报告]
发表于 2006-12-05 10:52 |只看该作者

哪里有下载电子书?

Solaris 系统管理员的教材, 最好是10的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP