Chinaunix
标题:
定制用户帐号
[打印本页]
作者:
w1_xiao
时间:
2009-10-13 14:30
标题:
定制用户帐号
※如果用户希望使用命令行编辑和命令历史机制,需要特殊的配置。你可能希望为新用户配置这些功能。
一些例子
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文件,所以不用单独地一个用户的PATHS。
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/rshr,/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目录来自动建立这些配置文件。
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u2/84425/showart_2069345.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2