职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1544|回复: 0

UNIX系统管理-第三章:定制用户帐号

[复制链接]
joe 发表于 2006-11-21 10:02 | 显示全部楼层 |阅读模式
目标
学完这一章,你将能够做以下事情:
列出在登录过程中读取的配置文件
更改默认的用户PATH
更改默认的用户终端类型
更改用户提示符
更改用户命令行编辑器
更改用户默认打印机
管理/etc/skel中默认的配置文件
为什么要定制用户帐号
设置用户终端类型
定制用户提示符
设置用户默认终端,定制用户PATH变量
定义一个命令行编辑器
如果只是简单地在/etc/passwd和/etc/group文件中创建条目可能不能满足用户所有需求,例如:
你可能需要定义用户的终端类型,以便应用程序可以正确地输出到用户的屏幕上。
你可能需要定制用户的提示符。因为许多的用户喜欢在提示符中显示他们当前所在路径名
虽然系统管理员定义了一个系统默认打印机,但是有些用户可能会要求使用另外的打印机。
如果用户要使用第三方的软件,你可能需要修改他们的PATH变量,以便shell可以找到这些应用程序。
如果用户希望使用命令行编辑和命令历史机制,需要特殊的配置。你可能希望为新用户配置这些功能。
一些例子
export TERM=\'vt100\'
export PS1=\'$PWD $\'
export LPDEST=\'laser\'
export PATH=$PATH:/usr/local/bin
export EDITOR=vi
export HISTSIZE=40
export HISTFILE=~/.sh_history
上例中提到的特性是在登录的时候,通过“环境”变量来定义的。一些经常修改的环境变量如下
TERM ??
TERM变量定义了用户的终端类型。如果TERM变量设置不正确。应用程序就可能不能正确地写到用户的终端。有效的终端类型全部在/usr/lib/terminfo/*目录下列出。你可以使用如下类似的命令来准确的设置一个TERM类型:
export TERM=vt100 ?? ??#对应一个vt100类型的终端
export TERM=hp?????? #对应一个HP ASCII终端
export TERM=dtterm???? #对应一个dtterm终端模拟窗口
你也可以使用ttytype命令来设置你的终端变量。这个命令通常可以自动识别你的终端类型。以下的代码可以加入到你的登录时运行的脚本中,为你设置你的终端类型:
if [ \"$TERM = \"\" -0 \\
????\"#TERM\" = \"unknown\" -o \\
????\"#TERM\" = \"dialup\" -o \\
????\"#TERM\" = \"network\" ]
??then
??????eval \'ttytype -s -a \'
??fi
??export TERM
PS1
PS1变量定义你的shell提示符。这个提示符也可以由用户自己来修改。一些有用的PS1的值如下所示:
export PS1=\'S\' ???????????#使用一个简单的\"$\"提示符
export PS1=\'$PWD $\'?????????#在提示符内包括用户的pwd
export PS1=\'$PWD ($LOGNAME) $\'??? #同时包括用户的用户名
LPDEST
LPDEST定义了用户默认打印机。在LPDEST中设置的打印机会优先于系统管理员设置的系统范围内的默认打印机。例子 :
export LPDEST=laser
export LPDEST=printera
PATH
用户每次输入一个命令,shell就必须去查找这个命令的可执行文件的位置。PATH变量中包含有一个以“:”分割的路径的列表,shell在这些列表中查找可执行文件。如果用户需要使用一个新的应用和工具,你也许会需要修改你的PATH变量。你可以使用以下类似的语法来在用户的PATH中增加新的目录:
PATH=$PATH:/usr/local/bin ????# 在已存在的PATH中增加/usr/local/bin这一个路径
初始化的PATH变量通常取自/etc/PATH文件。通常安装一个应用会自动更新/etc/PATH文件,所以不用单独地设置用户的PATH。
EDITOR
如果你的用户想要使用命令行编辑,需要定义三个变量:
export EDITOR=vi
export HISTFILE=~/.sh_history
export HISTSIZE=50
EDITOR定义用户选择的命令行编辑器。emacs和vi是唯一允许的两个值。HISTFILE代表记录用户输入的命令的文件名。HISTSIZE决定保存在shell的命令缓冲区内的命令的数量。
这些仅仅是你能为你的用户定义的普通的环境变量的一部分。其它的环境变量的定义可以在POSIX shell的帮助中查找,你的用户也可能需要用到其它的变量。
环境变量可以在命令行中定义,但是更通常的做法是在登录配置文件中定义,这会在以下的章节中介绍。
用户登录的时候发生了什么?
虽然定制一个用户的登录环境的环境变量可以在命令行中定义,但是通常是在登录过程中执行的脚本中定义,典型的,有三个脚本被用于在用户登录时初始化环境。
第一个脚本是由系统管理员维护的一个脚本文件,用来为所有的用户定制通用的环境变量。
第二个脚本是每个用户自己维护的本地脚本文件,本地登录脚本能覆盖和修改系统默认的脚本。
另一个可选的脚本:附加的本地登录脚本能够定义附加的环境变量或者设置附加的shell特征。在POSIX shell中,附加的脚本通常用来定义shell别名。
登录脚本的名字在各种shell中都是不同的。以下是POSIX,Korn,和C shells的登录脚本的详细讨论:
Shell环境初始化的顺序
1. shell运行正确的系统登录脚本,这个脚本初始化用户的环境。系统登录脚本定义一个默认的环境,这个脚本可以由系统管理员定制。
如果shell是..... 系统登录脚本是....
Bourne(/usr/old/bin/sh) /etc/profile
korn(/usr/bin/ksh) /etc/profile
POSIX(/usr/bin/sh) /etc/profile
限制的shell(/usr/bin/rshr,/usr/bin/rksh /etc/profile
C (/usr/bin/csh) /etc/csh.login
这些脚本定义和输出的环境变量有PATH,TZ,TERM,其来源于/etc/PATH,/etc/MANPATH,/etc/TIMEZONE,/etc/SHLIB_PATH这些文件。由于这个系统登录脚本在所有用户登录的时候都会运行,系统管理员可以通过修改这个文件来为所有用户设置默认环境变量。
这种特性还可以让每一个用户在登录系统时执行一些基本的命令。
2. 显示/etc/copyright 和/etc/motd文件中的内容。
3. 提示用户没有阅读的新闻:
??news:news_filename
4. shell运行在用户的home目录下的用户的本地登录脚本(如果存在)。
如果shell为..... 本地登录脚本为....
Bourne(/usr/old/bin/sh .profile
Korn(/usr/bin/ksh) .profile
POSIX(/usr/bin/sh .profile
限制的shell(/usr/bin/rsh,/usr/bin/rksh .profile
C (/usr/bin/csh) .login
注意:在典型情况下,系统管理员在最初创建用户帐号时,会为每个用户创建一个本地的登录脚本。如果使用useradd命令来添加一个用户,它会拷贝默认本地登录脚本文件(/etc/skel/.profile)到这个用户的home目录下。用户可以自己继续修改这个文件来定制他们的环境变量,以满足自己的需要。
在这个脚本之外,POSIX,Korn,和C shells可能(通常都会)有另外的本地登录脚本:
-POSIX和korn shell-: 如果定义了ENV变量,shell会运行在ENV中定义的文件(典型的,.shrc在开启一个新的shell的时候执行,许多程序(例如,vi,和mailx)运行用户在程序执行中开启一个shell;这被称为一个shell escape,一个shell escape会要求重新执行一次ENV文件,而.profile只会在登录的时候执行。ENV文件(.kshrc或者.shrc)会在登录时,.profile文件执行后执行。
- C shell:在一个新的C shell启动的时候运行.cshrc文件。这和Korn shell ENV文件的工作方式类似。.login 文件只在登录的时候运行,每一次开启一个新的C shell的时候会重新运行.chsrc文件。
一旦所有的初始化工作都完成后,shell会出现一个提示符等待用户的输入。
/etc/skel目录
当使用useradd命令创建一个新用户帐号的时候,系统会拷贝一些默认的配置文件到新用户的home目录下。/etc/skel目录下的默认的配置文件包括:
/etc/skel/.profile?????#ksh/posix本地登录脚本
/etc/skel/.login??????#csh 本地登录脚本
/etc/skel/.cshrc????? #csh 附加登录脚本
/etc/skel/.exrc??????#vi 启动配置文件
如果你想要修改自动拷贝到新用户home目录中的默认配置文件,你可以修改/etc/skel中的文件。对/etc/skel目录下的文件的修改不会影响已经存在地用户的home目录下的文件。
如果你的应用要求在新用户的home目录下自动创建一些配置文件,你同样也可以通过在/etc/skel目录下添加文件来实现。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-18 05:16 , Processed in 0.119459 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表