- 论坛徽章:
- 0
|
$home/bin /usr/lib /usr/sbin)。对于Bourne或Korn shell可键入PATH=/://...;export
PATH。例如可在用户的$HOME/.profile文件中加入以下一行PATH=.:/usr/openwin/bin:usr/bin HOME/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 |
|