用户登录与账户管理.ppt
第三章 用户登录与账户管理,主要内容:,用户登录用户管理组的管理,1.用户登录,Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。任何要使用系统资源者必须先在系统内登记、注册,即开设用户账户,该账户包含用户名、口令、所用的shell、使用权限等等;为了计算机系统的安全,Linux会对每一个要求进入系统的用户验证他们的用户名和口令,如果验证通过则用户登录成功,否则系统拒绝登录。,1 用户登录,根据用户在本地终端还是通过网络登录Linux系统,分为两类:(1)用户的终端登录(2)远程登录注:这里的网络可以是局域网,如学校计算机实验室;也可以是网际网,如Internet。,(1)终端登录 当成功启动系统后,如果系统运行级为5,则登录时会看到如图3-1所示界面;如果运行级为3,则登录时会看到如图3-2所示界面。用户必须先后输入用户名、口令才可以登录Linux系统。,1 用户登录,图3-1运行级5的登录界面,图3-2运行级3的登录界面,注:(1)如果以超级用户的root账户登录,则终端提示符为#。如果以普通用户登录,则终端提示符为$。(2)Linux系统提供了六个虚拟控制台终端,每个虚拟终端都可以登录系统。这六个虚拟终端之间用组合键Ctrl+Alt+Fx进行切换,Fx表示F1到F6键。如果系统运行级是5,则任何时候要返回到图形界面只要按Ctrl+Alt+F7即可。,(2)远程登录 所谓“远程登录”是指用户在某一台计算机上通过网络登录其他联网的计算机系统,使用该系统中的资源,如执行命令、查找文件等,以达到资源共享的目的。相互连通的计算机可以是处于同一个局域网、城域网和广域网,甚至世界上任何一台连接到Internet的计算机。当用户发出远程登录请求时,Linux系统会像在本地终端登录一样要求用户输入用户名和口令;一旦登录成功,如果你有足够的权限、你的计算机就像远程那台计算机的终端一样,你通过键盘所发出的命令,就会在该远程计算机上执行、执行的结果会通过网络显示在你的显示器上。,在Linux操作系统中,实现远程登录的命令主要有:(1)telnet(2)rsh(3)rlogin(4)ssh,远程登录命令,注:(1)它们要在系统提供相应服务的基础上使用;换句话说、要使用远程登录必须先开启所用远程登录命令对应的服务,例如、要使用telnet命令就要先开启系统的telnet服务。一般这些系统服务没有必要全部开启,这样既浪费系统资源、造成运行速度降低又可能留下安全隐患,可以根据实际使用哪些命令来开启相关的系统服务。(2)本章仅仅介绍远程登录的使用,不涉及远程登录的安全问题。问题:如何对系统服务的进行查看、开启和关闭?,远程登录命令,(1)telnet命令telnet命令是最常用的远程登录命令,但是它只能在基于终端的环境下使用,即要么在虚拟控制台终端上使用、要么在X Window系统的终端窗口中使用。telnet命令的选项和参数很多,但在实际使用中往往只要用到其基本用法。这里我们先介绍如何最基本地使用该命令,然后给出该命令的完整用法。基本用法:$telnet host其中,host是你要登录到的远程计算机的名字或IP地址。,以下是使用telnet命令基本用法的示例:rootlocalhost root#telnet 192.168.248.133Trying 192.168.248.133.Connected to 192.168.248.133(192.168.248.133).Escape character is.Red Hat Linux release 9(Shrike)Kernel 2.4.20-8 on an i686login:zxjPassword:Last login:Sun Feb 4 15:12:32 from 192.168.248.131zxjlocalhost zxj$cd/zxjlocalhost/$lsbin dev home lib misc opt root tftpboot usrboot etc initrd lost+found mnt proc sbin tmp varzxjlocalhost/$cd/homezxjlocalhost home$lslost+found zxjzxjlocalhost home$logoutonnection closed by foreign host.,完整用法:telnet-8-E-F-K-L-S tos-X authtype-a-c-d-e escapechar-f-k realm-l user-n tracefile-r-x host port如果telnet命令不带任何命令选项,则进入telnet命令模式、显示telnet提示符,执行?或help命令可以查询所有可用的命令;执行?命令名或help命令名,则显示该命令的在线帮助信息。表3-1列出了telnet命令的选项和说明。,(2)rlogin命令rlogin命令与telnet命令无论在使用方法还是选项功能上都非常类似;它也是用来在远程计算机上登录。如果登录成功,就可以在远程计算机上执行该注册账户权限所允许的任何操作。基本用法:$rlogin rhost其中,rhost是你要登录到的远程计算机的名字或IP地址。完整用法:低版本rlogin命令:rlogin-8EL-e char-l username rhost,高版本rlogin命令:rlogin rhost-ec-8-c-a-f-F-t termtype-n-7-PN|-PO-d-k realm-x-L-l username 从rlogin命令的完整用法可以看到,该命令中的rhost参数是必需的,代表远程主机名或IP地址;其他的是命令选项且是可选的。表3-2列出了rlogin命令的选项和说明。该版本的rlogin命令与低版本的rlogin命令在选项个数和功能上有较大的差别。,(3)rsh命令rsh命令用来启动远程计算机上的shell并让该shell执行权限范围内指定的命令。基本用法:$rsh host command注:(1)host是你要登录到的远程计算机的名字或IP地址(2)command为要远程计算机shell执行的命令。如果省略了参数command,则rsh命令将调用rlogin命令登录到远程计算机上。完整用法:低版本rsh命令:rsh-dn-l username host command,高版本rsh命令:rsh host-l username-n-d-k realm-f|-F-x-PN|-PO command从rsh命令的完整用法可以看到,该命令中的host参数是必需的,其他的是命令选项且是可选的。表3-3列出了rsh命令的选项和说明。,在rsh命令中,如果shell元字符没有用引号括起来,则表示对本地计算机进行操作;如果用引号括起来,则表示对远程计算机进行操作。所谓元字符是指对shell而言有特殊意义的字符,如*、?、|、;、localfile表示在远程计算机上用cat命令查看远程计算机上的remotefile文件,并采用附加重定向元字符重定向到本地计算机的localfile文件。如果命令中的元字符加上引号,如下:rsh host cat remotefile“”otherremotefile表示在远程计算机上用cat命令查看远程计算机上的remotefile文件,并采用附加重定向到远程计算机host的otherremotefile文件。,(4)ssh客户端命令ssh(SSH 客户端)是一个为实现在远程计算机上登录,并在其上执行命令的程序。由于rlogin 和rsh命令的安全性问题,它们将被ssh命令代替。ssh可以在不安全网络上的两台非信任(不可靠)的计算机之间提供安全的加密通信;X11连接和任意的TCP/IP 端口也能在安全的信道上转发。ssh 命令建立连接并在日志文件中记录指定的主机名。用户必须采用几种方法中的一种向远程计算机证明自己的身分,这几种方法依赖于所使用的协议版本。,基本用法:ssh-l login_name hostname|userhostname command其中、hostname或userhostname是你要登录到的远程计算机的名称、IP地址或域名,login_name是登录的注册用户名,而command为要远程计算机shell执行的命令。完整用法:ssh-afgknqstvxACNTX1246-b bind_address-c cipher_spec-e escape_char-i identity_file-l login_name-m mac_spec-o option-p port-F configfile-L port:host:hostport-R port:host:hostport-D port hostname|userhostname command表3-4列出了ssh命令的选项和说明。,Linux下的用户 Linux下的用户可以分为三类:超级用户、系统用户和普通用户。超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。系统用户是Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,例如:bin、daemon、adm、lp等用户。,2 用户管理,普通用户是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。每个用户都有一个数值,称为UID。超级用户的UID为0,系统用户的UID一般为1499,普通用户的UID为50060 000之间的值。,2 用户管理,每一个登录Linux系统的用户在系统中都应该有对应的注册账户,这些账户记录了用户的信息,如用户名、登录口令、用户目录所在的位置、所用的shell、建立时间、权限等信息。用户账户管理包括:添加用户、设置口令、删除用户、修改用户属性和权限等。因此、账户管理是系统管理员重要的日常工作之一。,用户管理 账号系统文件(1)不像Windows 2000那样有专门的数据库用来存放用户的信息,Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有:/etc/passwd/etc/shadow/etc/group,用户管理 账号系统文件,(2)账号的管理实际上就是对这几个文件的内容进行添加、修改和删除记录行的操作。我们可以使用vi或其他编辑器来更改它们,也可以使用专门的命令来更改它们。不管以哪种形式管理账号,了解这几个文件的内容十分必要。(3)Linux系统为了自己的安全,缺省情况下只允许超级用户更改它们。,1./etc/passwd文件/etc/passwd文件是账号管理中最重要的一个文件,它是一个纯文本文件。每一个注册用户在该文件都有一个对应的记录行,这一记录行记录了此用户的必要信息。,【实例】root redflag/root#cat/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:daemon:x:2:2:daemon:/sbin:adm:x:3:4:adm:/var/adm:,sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nolrpc:x:32:32:Portmapper RPC user:/:/bin/falserpcuser:x:29:29:RPC Service User:/var/lib/nfs:/bin/falsemailnull:x:47:47:/var/spool/mqueue:/dev/nulltest:x:500:500:/home/test:/bin/bashpasswd文件中的每一行由7个字段的数据组成,字段之间用“:”分隔,其格式如下:账号名称:密码:UID:GID:个人资料:主目录:Shell,字段说明:账号名称:用户登录Linux系统时使用的名称。密码:这里的密码是经过加密后的密码(一般是采用MD5加密方式),而不是真正的密码,若为“x”,说明密码经过了shadow的保护(我们随后就介绍)。UID:用户的标识,是一个数值,Linux系统内部使用它来区分不同的用户。GID:用户所在基本组的标识,是一个数值,Linux系统内部使用它来区分不同的组,相同的组具有相同的GID。,个人资料:可以记录用户的完整姓名、地址、办公室电话、家庭电话等信息。主目录:类似Windows 2000的个人目录,通常是/home/username,这里username是用户名,用户执行“cd”命令时当前目录会切换到个人主目录。Shell:定义用户登录后激活的Shell,默认是Bash Shell。从passwd文件中可以看到,第一行是root用户,紧接的是系统用户,普通用户通常在文件的尾部。当然它们所在的顺序并不是很重要的。,2./etc/shadow 在passwd文件中,有一个字段是用来存放经过加密的密码。我们先来看以下passwd文件的权限:root redflag/root#ls-l/etc/passwd-rw-r-r-1 root root 1092 3月 12 18:00/etc/passwd,可以看到任何用户对它都有读的权限。如果不让所有的用户对它有读的权限,Linux系统会出现一些问题。虽然密码已经经过加密,但还是不能避免别有用心的人轻易地获取加密后的密码后进行解密(如:字典法、穷举法等)。于是Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。root redflag/root#ls-l/etc/shadow-r-1 root root 758 3月12 18:00/etc/shadow,现在只有超级用户能够读取shadow的内容,密码显然安全多了,因为其他人即使想获得加密后的密码也不容易了。,【实例.2】root redflag/root#cat/etc/shadowroot:12123:0:99999:7:bin:*:12123:0:99999:7:daemon:*:12123:0:99999:7:adm:*:12123:0:99999:7:,sshd:!:12123:0:99999:7:rpc:!:12123:0:99999:7:rpcuser:!:12123:0:99999:7:mailnull:!:12123:0:99999:7:test:12123:0:99999:7:和passwd文件类似,shadow文件中的每行由9个字段组成,格式如下:,用户名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段说明:用户名:和/etc/passwd文件中相对应的用户名。密码:存放加密后的口令(密码)。最后一次修改时间:用户最后一次修改口令的时间(从1970-1-1起计的天数)。最小时间间隔:两次修改口令允许的最小天数。,最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令。警告时间:从系统提前警告到口令正式失效的天数。不活动时间:口令过期多少天后,该账号被禁用。失效时间:指示口令失效的绝对天数(从1970-1-1开始计算)。标志:未使用。shadow文件中,密码字段为“*”表示用户被禁止登录,为“!”表示密码未设置,为“!”表示用户被锁定。,3.pwconv和pwunconv 安装Linux系统时,系统缺省采用shadow来保护密码。如果安装Linux时未启用shadow,可以使用pwconv命令启用shadow。注意用root用户登录来执行该命令。root redflag/root#pwconv 执行的结果是/etc/passwd文件中的密码字段被改为“x”,同时产生/etc/shadow文件。相反,如果要取消shadow功能,使用pwunconv命令。,【实例.3】root redflag/root#pwunconvroot redflag/root#cat/etc/passwdroot:$1$HgZ5TnjG$1lE4Umcmpx0s9ESNHB0By0:0:0:root:/root:/bin/bashtest:$1$dm5d2WCQ$6RUCGuCRAz9RUAOytwbk3/:500:500:/home/test:/bin/bash,用户管理,添加用户修改用户属性停止用户删除用户,1 添加用户添加用户的方式既可以在字符终端下,也可以在图形界面下。本节先介绍字符终端下的添加用户方法,这种方式也有多种方法,如使用终端命令、修改配置文件、编写shell脚本程序等。,(1)终端命令添加用户创建用户可以用手工创建或使用专门的命令创建。手工创建就是管理员一步一步完成以上的工作;使用专门的命令,则是由Linux提供的命令来完成以上的工作。使用后者效率较高,如果不是创建有特殊要求的用户,建议使用后者。创建用户的命令为useradd或adduser,一般来说这两个命令是没有差别的,先用root用户登录后,再执行它们。useradd命令的格式如下:注:使用useradd命令所建立的用户账户信息实际上保存在/etc/passwd文本文件中,而加密的用户账户信息则保存在/etc/shadow文件中。,基本用法:useradd-d home_dir-s shell 用户名该命令中用户名参数是必需的,-d home_dir选项和-s shell选项是可选的;如果不使用可选项,则系统自动用默认值。默认的用户工作主目录是/home/用户名,即Linux系统会自动在/home目录下创建一个以用户名命名的目录作为用户的工作主目录,并向该目录复制.bash、.logout、.bash、.profile、.bashrc、.gtkrc文件和.kde目录;系统默认用户使用的shell是bash。例如、如下的命令将添加一个名为zxj的新用户:#useradd zxj该用户的工作主目录为默认的目录,使用的shell也是默认的;如果用户不想要默认的设置,则必须在命令中明确指定-d和-s参数。,useradd 参数 用户名参数选项:-c comment:注释行,一般为用户的全名、地址、办公室电话、家庭电话等。-d dir:设置个人主目录,默认值是/home/用户名。-e YYYY-MM-DD:设置账号的有效日期,此日期后用户将不能使用该账号。要启用shadow才能使用此功能。,-f days:指定密码到期后多少天永久停止账号,要求启用shadow功能。-g group:设定用户的所属基本组,group必须是存在的组名或组的GID。-G group:设定用户的所属附属组,group必须是存在的组名或组的GID,附属组可以有多个,组之间用“,”分隔开。-k Shell-dir:和“-m”一起使用,将Shell-dir目录中文件复制到主目录,默认是/etc/skel目录。,-m:若用户主目录不存在,创建主目录。-s Shell:设置用户登录后启动的Shell,默认是Bash Shell。-u UID:设置账号的UID,默认是已有用户的最大UID加1。例如:root redflag/root#useradd user1在/etc/passwd文件中会看到增加了一行:,user1:x:501:501:/home/user1:/bin/bash系统自动指定用户user1的UID为501,同时还自动创建组名为user1的用户组(其名称和用户名相同,其GID值也和UID值相同),在/home目录下还创建了目录user1,用户的登录Shell是Bash Shell。,root redflag/root#ls-l/homedrwx-9 user1 user1 472 3月 13 23:06 user1user1对/home/user1目录有所有权限,其他用户无任何权限。同时在/etc/shadow文件中也会增加一行:,user1:!:12125:0:99999:7:注意密码字段的内容为“!”,表示密码没有设置。root redflag/root#useradd-g user1-c“user2,-755-123456”user2以上命令创建user2用户,并把它加入到组user1中,同时加上用户的注释。,2 修改用户的属性 1).修改用户的密码(1)passwd 用户名修改用户的密码。修改用户的密码需要两次输入密码确认。密码是保证系统安全的一个重要措施,在设置密码时,不要使用过于简单的密码。密码的长度应在8位或8位以上,由数字和英文组合而成,不要采用英文单词等有意义的词汇。一个便于记忆并且有效的密码“wabjtam!”,是“我爱北京天安门!”的汉字拼音首字母组合。密码的更改间隔天数不要太大,并且不得重复使用。,用户的密码也可以自己更改,这时使用不带用户名的passwd命令。root redflag/root#passwd修改root用户自己的密码。,(2)passwd-d 用户名删除用户的密码。【实例】root redflag/root#passwd-d user2Changing password for user user2Removing password for user user2passwd:Success以上命令删除了用户user2的密码。,2.)修改用户的Shell设置 如果用户的默认Shell不合适,可以把它改成任何已经加入到/etc/Shells文件中的Shell。使用chsh命令改变用户的Shell,格式如下:chsh 用户名,【实例】root redflag/root#chsh user2 Changing Shell for user2.New Shell/bin/bash:/bin/csh Shell changed.指定的Shell一定要在/etc/Shells中存在,否则会导致用户无法登录。也可以使用下面要介绍的命令usermod来改变用户的Shell设置。,3.)usermod 参数 用户名改变用户的属性参数选项:-c comment:改变用户的注释,如:全名、地址、办公室电话、家庭电话等。-d dir:改变用户的主目录,如果同时使用“-m”选项,原来主目录的内容会移动到新的主目录。-e YYYY-MM-DD:修改用户的有效日期。,-f days:在密码到期的days天后停止使用账户。-g GID或组名:修改用户的所属基本组。-G GID或组名:修改用户的所属附加组,组之间用“,”分隔。-l name:更改账户的名称,必须在该用户未登录的情况下才能使用。-m:把主目录的所有内容移动到新的目录。-p 密码:修改用户的密码。-s Shell:修改用户的登录Shell。,-u UID:改变用户的UID为新的值,改变用户的UID时主目录下所有该用户所拥有的文件或子目录将自动更改UID,但对于主目录之外的文件和目录只能用chown命令手工进行设置。例如:root redflag/root#usermod-d/home2/user2 user2 该命令把用户user2的主目录改为/home2/user2。,4.)chfn 用户名修改用户的个人信息【实例】root redflag/root#chfn user2Changing finger information for user2.Name Bom:BOM#修改姓名。Office xili shenzhen:XiLi ShenZhen#修改办公室地址。,Office Phone 0755-2222222:0755-1111111#修改办公室电话。Home Phone 0755-3333333:0755-5555555#修改家庭电话。Finger information changed.,3 停止用户将用户停用有几个不同的程度:(1)暂时停止用户登录系统的权利,日后再恢复。(2)从系统中删除用户,但保留用户的文件。(3)从系统中删除用户,并删除用户所拥有的文件。,1.)暂停用户 暂停用户常常用于某用户在未来较长的一段时间内不登录系统的情形(如出差)。只需要利用编辑工具将passwd文件中的密码字段加上“*”即可(如果采用了shadow文件,就编辑shadow文件)。恢复时,把“*”删除即可。也可以使用带“-l”参数的passwd命令来暂停用户。,【实例】root redflag/root#passwd-l user1Changing password for user user2Locking password for user user2passwd:Success 被锁定的账户其在passwd文件或shadow文件中的记录行的密码字段会加上“!”,如下(这里是shadow):,user2:!$1$UKp9vz4X$BIf3RyDs9hkveDqwiosFt.:12126:0:99999:7:-1:-1:134523744恢复时,使用带“-u”参数的passwd命令,如下:root redflag/root#passwd-u user2Changing password for user user2Unlocking password for user user2passwd:Success,2).删除用户 删除一个账户可以直接将passwd文件中的用户记录整行删除(如采用shadow,还要删除shadow文件中的记录)。也可以使用userdel命令:userdel 参数 用户名 参数选项:-r:删除用户时将用户主目录下的所有内容一并删除,同时删除用户的邮箱(在/var/spool/mail下)。例如:root redflag/root#userdel-r user1表示删除user1,且将user1下的内容删除。,3.)完全删除 Linux系统并不提供完全删除用户所有文件的命令,带“-r”参数的userdel命令只能删除用户主目录下的文件和邮箱,对于用户在别的目录下所拥有的文件只能手工删除。,4 默认新用户的设置 使用useradd建立新用户时,新建的用户有一定的默认设置,这个设置来自/etc/default/useradd文件,文件中的内容如下:#useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE=SHELL=/bin/bash SKEL=/etc/skel,文件中的含义如下:GROUP=100:指定默认的组为100,该设置只有在使用“-u”选项禁止了默认私有组(也就是和新用户同名的组)时才有效,该值必须在/etc/group文件中存在。HOME=/home:指定新用户主目录所在的目录。INACTIVE=-1:只有启用了shadow功能后才有效,指定用户密码过期后该账户将在多长时间后无效(以天数计),-1代表永远不过期。,EXPIRE=:只有启用了shadow功能后才有效,指定账户被禁止的时间。SHELL=/bin/bash:指定默认登录的Shell。SKEL=/etc/skel:指定保存用户各种配置文件的目录,创建新用户时,该目录下的文件将被拷贝到用户的主目录下。如果启用shadow功能,建立用户账户时还将使用另一配置文件/etc/login.defs。,【实例】我们把有关的说明用“#”进行标注,以示和文件原有内容的区别。root redflag/root#cat/etc/login.defs#*REQUIRED*#Directory where mailboxes reside,_or_ name of file,relative to the#home directory.If you _do_ define both,MAIL_DIR takes precedence.#QMAIL_DIR is for Qmail#,#QMAIL_DIR MaildirMAIL_DIR/var/spool/mail#用户邮箱所在的目录。#MAIL_FILE.mail#Password aging controls:#PASS_MAX_DAYSMaximum number of days a password may be used.,#PASS_MIN_DAYS Minimum number of days allowed between password changes.#PASS_MIN_LEN Minimum acceptable password length.#PASS_WARN_AGE Number of days warning given before a password expires.#PASS_MAX_DAYS 99999#账户密码最长的使用天数。PASS_MIN_DAYS 0,#允许更改账户密码的最短天数。PASS_MIN_LEN 5#账户密码最小长度。PASS_WARN_AGE 7#账户密码过期前提前警告的天数。#Min/max values for automatic uid selection in useradd#,UID_MIN 500#用useradd命令添加账户时自动产生UID,最小的UID值。UID_MAX 60000#用useradd命令添加账户时自动产生UID,最大的UID值。#Min/max values for automatic gid selection in groupadd#GID_MIN 500,#用useradd命令添加账户时自动产生GID,最小的GID值。GID_MAX 60000#用useradd命令添加账户时自动产生GID,最大的GID值。#If defined,this command is run when removing a user.#It should remove any at/cron/print jobs etc.owned by#the user to be removed(passed as the first argument).,#USERDEL_CMD/usr/sbin/userdel_local#If useradd should create home directories for users by default#On RH systems,we do.This option is ORed with the-m flag on#useradd command line.#CREATE_HOME yes#是否创建用户主目录。,5 用户登录系统后环境的设定 系统管理员经常碰到用户反映“我不想每次设定我自己的命令别名,我要怎么做?”、“我想改变我注册后的提示符,我要怎么做?”这类问题。这些要求可以通过修改系统或用户的作业环境来控制。用户登录系统后可以使用不同的Shell,不同的Shell对作业环境进行控制所采用的文件不太一样。我们这里以系统默认的ShellBash Shell为例,其他Shell所采用的文件请参见有关的资料(例如,用man tcsh命令)。,使用Bash Shell时,有以下几个文件和用户的作业环境有关:(1)/etc/profile。(2)/etc/bashrc。(3)/etc/inputrc。(4)$HOME/.bash_profile。(5)$HOME/.bashrc。(6)$HOME/.inputrc。(7)$HOME/.bash_login。,前3个文件和系统所有的用户有关,影响所有登录的用户;后4个文件和某个特定用户有关,如果只想改变单一用户的作业环境,要更改这几个文件。这些文件(inputrc和.inputrc除外)采用Shell语言编写,因此请参照Shell编程这一章节的内容来阅读这些文件的内容。其中,/etc/profile是系统首先会执行的文件。,【实例】同样,我们把有关的说明用“#”进行标注,以示和文件原有内容的区别。#/etc/profile#System wide environment and startup programs#Functions and aliases go in/etc/bashrc#如果用户的搜索路径中没有/usr/X11R6/bin,则把这一路径加到搜索路径中。if!echo$PATH|/bin/grep-q/usr/X11R6/bin;thenPATH=$PATH:/usr/X11R6/bin,fi#设定系统产生的核心文件的大小最大为100MB(软限制)。ulimit-S-c 1000000/dev/null 2 then umask 002,else umask 022fi#设定环境变量USER(用户名)。USER=id un#设定环境变量LOGNAME(登录名)。LOGNAME=$USER#设定环境变量MAIL(用户邮箱所在处)。MAIL=/var/spool/mail/$USER#设定环境变量HOSTNAME(主机名)。,HOSTNAME=bin/hostname#设定环境变量HISTSIZE,即保存1000条的历史命令。使用history命令时可以显示用户的历史命令,能保存的历史命令数和这一变量有关。HISTSIZE=1000#定义键盘键位的文件是/etc/inputrc文件。if-z$INPUTRC-a!-f$HOME/.inputrc;then INPUTRC=/etc/inputrc,fi#输出以下的变量。export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC#执行/etc/profile.d目录下的所有“*.sh”文件。for i in/etc/profile.d/*.sh;do if-x$i;then.$i fidoneunset i,#定义堆栈大小为2048。ulimit-s 2048/dev/null 2&1ulimit-s 2048/dev/null 2&1/etc/bashrc文件的主要功能是设置一些命令别名和在profile文件没有定义的变量,内容如下。,【实例】#/etc/bashrc#System wide functions and aliases#Environment stuff goes in/etc/profile#are we an interactive Shell?if$PS1;then if-x/usr/bin/tput;then if xtput kbs!=x;then#We cant do this with dumb terminal stty erase tput kbs,elif-x/usr/bin/wc;then if tput kbs|wc-c-gt 0;then#We cant do this with dumb terminal stty erase tput kbs fi fi fi case$TERM in xterm*)PROMPT_COMMAND=echo-ne 0330;$USER$HOSTNAME:$PWD007,;*);esac#设定用户登录后的提示符,意思是:用户名主机名 当前目录。$PS1=s-v$then#Were not a login Shell,for i in/etc/profile.d/*.sh;do if-x$i;then.$i fi done fifi#设定一些常用的命令别名。,alias ls=ls-color-show-control-charsalias ls=ls-color-l-show-control-charsalias ls=ls-coloralias ls=ls-color/etc/inputrc文件主要定义或者改变一些功能键的定义,从而更好地使用命令行,一般并不对此文件进行改变。详细说明请用man bash命令获得。,“.bash_profile”、“.bashrc”和“.ba