1Linux系统与网络管理第八章用户管理2用户用户新用户在Linux系统内要有一个帐号和工作环境。帐号包含了用户名、口令和UID、GID。用户名是用户用于登录Linux系统使用的名字,该名字在同一系统上必须唯一,用户名存在/etc/passwd中。口令对应于用户名的登录密码,存在/etc/shadow中。UID和GID决定了该帐号所具有的权限,不同的帐号可以使用同样的UID和GID,则这些帐号具有相同的权限。3用户工作环境包括:用户的家目录、用户使用的shell、用户的登录脚本、登入欢迎信息等等。用户家目录:用户登录成功后所在的目录。里面存放与用户有关的配置文件。用户对家目录具备所有的操作权限。在/etc/passwd中设定。用户使用的shell:也是由/etc/passwd来指定。用户登录的脚本:存放于用户的家目录下,默认是从模板/etc/skel目录进行复制(如.bashrc、.bash_profile等等)登入欢迎信息:存放在/etc/motd文件中。4用户数据库-/etc/passwd/etc/passwd文件该文件是所有用户都可读,但只有超级用户可写。该文件中的每一行用于描述系统中的一个帐号,依次由以下几个字段组成,字段之间用冒号分隔:用户名:口令:UID:GID:注释信息:家目录:shell注意:即使该字段为空白,也要用冒号分隔。口令域是一个“x”,表示密码文件存在于/etc/shadow中,早期的passwd文件直接包含了口令,如果将旧系统的passwd文件移植到新系统,可以使用pwconv命令,把口令从passwd中移到shadow。5用户数据库-/etc/passwd一般说来,用户的登录名不应该超过八个字符。因为不同的unix操作系统在处理长用户名的时候其方法是不一样的。登录的shell不必一定是shell,任何可执行程序都可以。passwd文件是普通的文本文件,因此可以手工修改文件中的用户信息。手动修改passwd最好使用vipw命令,避免多人同时修改passwd文件而导致文件被破坏。6用户数据库-/etc/shadow/etc/shadow文件将口令从passwd分离到shadow文件是出于安全性的考虑,一定程度上减少了对口令文件字典攻击的可能性。shadow文件只有超级用户有读取权限。shadow文件中每一行包含以下几个部分:登录名。加密过的口令。从1970年1月1日起计算,该口令修改后已经过去了多少天。7用户数据库-/etc/shadow需要再过多少天才能修改这个口令。需要再过多少天这个口令必须被修改。需要在这个口令失效之前多少天对用户发出提示警告。口令失效多少天之后禁用这个账户。从1970年1月1日起计算多少天,该帐号将被禁用。保留域。每个用户的数据占用一行,彼此用冒号隔开。如下面的例子:8用户数据库-/etc/group/etc/group文件在/etc/passwd中包含每个用户缺省的GID,在/etc/group文件中,这个GID被映射到该用户分组的名称以及同一分组中的其他成员。group文件中每一行的格式如下所示:用户分组名:加过密的分组口令:GID:成员清单缺省是不带分组口令的,一般情况下组口令是禁用的。如果设置了组口令,则组口令存在于/etc/gshadow中。每一个数据域还是以冒号隔开的成员清单以逗号分隔的9用户管理-增加用户增加用户useradd命令语法:useradd[选项…]用户名默认情况下(不接任何选项),用/etc/defaults/useradd文件指定的缺省值来指定帐号的属性。常见选项:-uuid用户的UID值。数字不可为负值。-gdefaultgroup指定该用户登录使用的群组。-ccomment该用户的注释说明。-dhome_dir指定用户的家目录。-m用户家目录不在则自动创建。10用户管理-增加用户-kskel_dir指定用户模板目录,默认是/etc/skel。-sshell指定用户使用的shell。-eexpire_date帐号终止日期。日期的指定格式为YYYY-MM-DD-finactive_days帐号过期几日后永久停权。值为0时帐号则立刻被停权。值为-1时则关闭此功能,预设值为-1修改用户属性usermod命令语法:usermod[选项…]用户名常见选项和上面所述useradd一样。11用户管理-修改用户属性useradd命令该命令也可以用来修改用户的默认属性。(即修改/etc/defaults/useradd文件)语法:useradd-D[选项…]常见选项:-bhome_dir修改默认的用户家目录-eexpire_date修改默认帐号的终止时间-finactive_days修改默认帐号过期后几天停权-gdefaultgroup修改默认帐号的组-sshell修改默认帐号的shell12用户管理-修改用户属性chage命令功能:用于改变用户口令的期限语法:chage[选项]用户名默认情况下(不接任何选项),是通过交互式的提示进行各项的设定。常用选项:-mmindays:口令最小有效时间-Mmaxdays:口令最长有效时间-wwarn:口令失效前几天开始警告-Iinactive:口令失效后几天禁用该用户-Eexpiredate:指定帐号禁用的时间,可以直接用数字表示从1970年1月1日以来的天数,也可以指定日期,如11/14/08或2008/11/1413用户管理-删除用户删除用户userdel命令功能:用于删除一个用户语法:userdel[-r]用户名选项-r可以用于清除用户的家目录。注意:删除用户时如果保留了该用户在系统上的文件,则需要把该用户遗留的文件收集到一个专用目录,并设置好访问权限,否则会带来安全隐患。因为再创建新用户时,会使得新用户使用了已删除用户的UID,可以访问到任何没有删除的、属于已删除用户的文件。14用户管理-增加组、删除组增加组groupadd命令功能:用于添加一个新组语法:groupadd[选项]组名常用选项:-ggid:指定增加组的gid删除组groupdel命令功能:用于删除一个组语法:groupdel组名15用户管理-修改组属性修改组属性gpasswd命令功能:group的管理工具,主要用于组成员的编辑。语法:gpasswd[选项]组名默认情况下(不接任何选项)是设置组的口令,前面已经提过,组口令在现在的系统中没什么作用了。常用选项:-auser:添加一个用户到指定组中-duser:从指定组中删除一个用户groupmod命令功能:用于修改组的GID和组名16用户管理-修改组属性语法:groupmod[选项]组名常用选项:-ggid:修改指定组的GID-ngroup_name:修改指定组的组名usermod命令该命令也可以用来编辑组的成员。用法为:usermod-G组1,[组2,….]用户名说明:这样可以使用户加入到指定的组中,列表中未列出的组若包含该用户,则自动将该用户从该组中移出。17用户管理-修改组属性思考:假设/etc/group中包含如下信息:NBA:x:501:Iverson,KobeRockets:x:502:McGrady,ArtestCBA:x:503:Yao,Yi1)现在要求在NBA组中增加用户Yao,Yi,在Rockets组中增加用户Yao,用两种方法实现(gpasswd和usermod)。2)把CBA的GID改为666,CBA组名改为China答案:1)方法一:gpasswd-aYaoNBAgpasswd-aYiNBAgpasswd-aYaoRockets方法二:usermod-GNBA,Rockets,CBAYaousermod-GNBA,CBAYi2)groupmod-g666CBAgroupmod-nChinaCBA18用户的环境用户的环境系统环境文件:/etc/profile和/etc/bashrc,由系统管理员维护;用户环境文件:家目录下的.bash_profile和.bashrc,由用户自己进行维护。大多数环境变量即便是系统环境文件中已设置了,可以到用户环境文件中重新设置。查看当前变量的设置用不带选项的set命令。查看在当前环境下定义的,已经输出了的设置,用env命令。19用户的安全性口令的安全选择强口令不使用正常的英文单词或用户名字使用字母(大小写混合)和数字使用特殊符号使用口令时限的功能,定期修改口令root帐号的安全尽可能不要给普通用户root帐号,如果普通用户需要执行某些超级用户才能执行的命令,可以采用以下两种方式:设置SUID或SGID使用sudo20用户的安全性尽量不要用root帐号直接进行远程登录(telnet),应用普通用户登录后,用su切换到超级用户。尽量不要创建匿名帐号(无口令)设置好umaskumask是通过8进制数666减去后所描述的权限,默认为022,即缺省权限为644。系统的umask在系统环境文件设置,用户可以用户环境文件重新设置。设置警告信息(day信息)修改/etc/motd文件,警告入侵者21登录进Linux使用gettygetty程序是传统的用于启动登录进程的程序。它设置终端的线速率(波特率),并发出登录的提示符。它使用mingetty程序,一个用于虚拟控制台的最小的getty程序。mingetty程序用于设置终端的特征,允许login程序打出提示符,然后接收用户名和口令。mingetty由init运行,一旦init启动,它就读取/etc/inittab,根据配置产生所有运行级别所需要的mingetty。mingetty调用login,登录成功后,login又调用一个shell。22登录进Linux登录缺省值登录缺省值在/etc/login.defs里定义。login.defs文件里主要包含以下的设置:用户邮件的位置口令最小时间、最大时间、警告时间口令的最小长度UID的最小值和最大值GID的最小值和最大值23登录进Linux使用终端登录登录成功后,用户可以使用stty命令改变当前串行线的配置。当前终端的设置可以不带选项的stty列出用stty–a查看所有的设置查看当前是哪个终端用tty命令网络终端使用pts/x系统终端数据库存在于/usr/share/terminfo目录下