Linux培训系列-Linux基础system07第七章用户管理7.1管理用户配置文件7.2添加、删除、修改用户和组7.3批量添加用户7.4为普通用户授权7.1管理用户配置文件•linux是从unix上演变而来的。对于任何的多用户的操作系统只要用户输入了合法的帐户和密码就可以进入系统了。•但是如果您无法有效的管理您的用户,那么对于任何用户都有可能对真正的主机拥有完全的控制权限,我想这也不是任何管理人员都愿意看到的。•如果你想让你的系统是安全而又稳定的,那么我认为你管理系统的第一步就是先对您的用户来做一下管理。7.1管理用户配置文件一:linux下的用户的类别:在建立帐户时的分类•内建帐户:内建帐户是指在系统或者是某种软件安装完成之后,由他们自己自行建立的用户这就被称为叫做内建帐户。•自定义帐户:自定义帐户是指拥有一定权利的用户自行创建的其他的帐户。7.1管理用户配置文件二、对于权限而言:1.在系统创建用户之后或者是其他用户给予指定用户一定的特殊权限。我们把他们叫做特殊用户。像在linux和unix下的root,windows下administrator、guest等2.普通用户:在用户创建完成后拥有最基本的权限的用户。如何对用户管理?我们可以参照管理用户和组的一些的文件7.1管理用户配置文件用户管理文件用户的管理文件全部在四个主要的文件中,这是在小型网络中常用的方法,但是对于大型系统,有时候可能把这些资料转到数据库中。这四个主要的文件是:/etc/passwd/etc/shadow/etc/group/etc/gshadow本章将还会学习许多用于管理系统用户的命令。7.1管理用户配置文件/etc/passwd文件详解/etc/passwd主要是存放着用户信息。这个文件由7个域构成,每个域由“:”分隔,如:root:x:0:0:xu,132*****,12345678,87654321:/root:/bin/bash第一个域:用户名第二个域:密码第三个域:UID第四个域:GID第五个域:用户的详细信息第六个域:用户主目录第七个域:登录shell7.1管理用户配置文件/etc/passwd文件详解第一个域包含的是用户名。标准UNIX用户名必须最少包含一个字符,最长为8个字符。用户名可以是字母和数字(a-z,A-Z,0-9)、句点(.)、连字符(-)和下划线(_)的组合。禁止使用的字符有(:)(因为它是分隔符)、换行符(\n)(因为它是项分隔符)。要注意UNIX区分大小写,用户名的首字母必须是英文大小字母。7.1管理用户配置文件/etc/passwd文件详解第二个域包含的是密码。它实际是单向散列函数的输出,13位长。由字母与数字(a-z,A-Z,0-9)、句点(.)和斜杠(/)组成。有2个字符出现在这个域有特殊的含义。“*”符号:它就表示用户被锁在外面,或者使用了另外一种身份验证方法,如Kerberos。“x”字符:它就表示在系统中使用了经过遮蔽(shadow)技术处理后的密码,空的:就表示用户没有设置密码。7.1管理用户配置文件/etc/passwd文件详解第三个域包含的是UID(UserIdentity),这是用户在本地系统中的标识符。也是帐户的第二个标识符,但不是唯一标识。UID在文件的inode中使用。用于表示所有权,所以如果UID发生冲突的话,具有相同数字指派的所有用户都可以访问文件。值得注意的是,如果用户名冲突,但是UID不同的话,那么第一个登录名可以登录(也就是第一个UID)。但是文件仍为第二个UID所代表的用户所有。简略的查看一下(使用ls-la)就可以看出,拥有那么写文件的用户名之间存在冲突。范围在0-99之间的UID(包括0和99)通常保留为系统帐号。UID0指派给root和系统中其他超级用户级的帐号。系统中最大的UID通常是系统最大无符号整数值减1。(当前系统为0-65535)第四个域包含的是GID(GroupIdentify),和UID意义一样7.1管理用户配置文件/etc/passwd文件详解第五个域也叫GECOS用于保管用户的个人信息,包括名字、电话号码等。可以使用chfn命令来修改这个域。第六个域包含的是用户home目录的完整路径。这是用户登录系统时自动登录的目录,其中还包含了各种环境控制和其它用户的文件。如果这个域指定的home目录在系统中并不存在、或者在用户登录的时候不能使用,用户就会收到如此的报错信息:NodirectoryLogginginwithhome=/这个时候会用/目录作为用户的主目录,但是普通用户在/目录下没有权限,所有基本是无意义7.1管理用户配置文件第七个域指定了用户的登录shell。注意,这只是一个程序,它在用户成功登录到系统中的时候执行;它也不必是一个有效的交互式shell。在/etc/shells文件中会列出系统中可以使用的shell,并带有完全限定的路径名。7.1管理用户配置文件/etc/group文件详解/etc/group存放着Linux系统中用户组的信息。这个文件有4个域构成,每个域由“:”分隔。root:x:0:root,lenglinux,admin第一个域:组名第二个域:组的密码第三个域:GID第四个域:该组的用户列表7.1管理用户配置文件/etc/shadow文件详解/etc/shadow是为用户信息的敏感位提供一个备用的、安全的存储。进入/etc/passwd文件,也正是我们要讲解的/etc/shadow文件。shadow文件没有取代/etc/passwd文件,而是对它的功能和安全性加以补充。它从公共域中取出了密码散列值,并与其他内部系统信息一同存储在一个只有root才能访问的文件。[root@localhost/]#ll/etc/passwd/etc/shadow-rwxr-xr-x1rootroot183212-2415:46/etc/passwd-r--------1rootroot129712-2314:26/etc/shadow7.1管理用户配置文件/etc/shadow文件详解/etc/shadow该文件由9个域组成,每个域用“:”分隔。root:$13WHJO4vtNf$9Unj9hvTxR7zRtjQexGmL/:13773:0:99999:7:::第一个域:用户名第二个域:密码散列值(MD5加密,没有则用户密码为空,不可用*)第三个域:最后一次修改时间第四个域:最短修改期限(0表示禁用)第五个域:密码使用期限(0表示当天有效,空一直有效,99999永远不改密码)第六个域:警告天数(更改密码时间到期之前)第七个域:最大不活动时间(密码到期之后多长时间帐户禁用,没有表示无效)第八个域:失效时间第九个域:保留标志7.1管理用户配置文件/etc/gshadow文件详解/etc/gshadow这个文件包含了4个域,每个域由“:”分隔。root:::root第一个域:组名第二个域:加密的密码字符串第三个域:组的管理员列表第四个域:组的成员列表7.1管理用户配置文件/etc/passwd和/etc/shadow的相互转换pwunconv在/etc/shadow中的项中进行解析,然后更新/etc/passwd文件中相应用户名的密码散列值。这个命令忽略任何只在/etc/passwd中出现而没有在/etc/shadow中出现的项。在成功的运行pwunconv后,将会丢失一些密码有效期信息。7.1管理用户配置文件完整性检查命令Linux系统提供了2条命令,pwck和grpck分别对/etc/passwd和/etc/shadow进行完整性检查。注意,这个工具不能解决问题,它只能汇报所遇到的错误。7.2添加和删除用户Linux中添加用户我们使用useradd命令来实现。useradd命令格式:#useradd选项用户名最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户帐号实例:#useraddleng7.2添加和删除用户Useradd选项:-d指定新建用户的主目录(passwd第六个域).-u:指定UID标记号-d:指定宿主目录,缺省为/home/用户名-e:指定帐号失效时间-g:指定用户的基本组名(或UID号)-G:指定用户的附加组名(或GID号)-M:不为用户建立并初始化宿主目录-s:指定用户的登录Shell7.2添加和删除用户-n默认创建账号的时候,会创建一个和用户名一样的组。使用-n可以关闭这个动作,并且根据/etc/default/useradd中的GROUP参数,将用户添加到默认组中。7.2添加和删除用户添加另外一个临时超级管理员,登录名为tmproot,和root用户同组,主目录为/admin,。#useradd-d/admin-groot-s/bin/bashtmproot每次添加用户都需要输入那么多参数,实在麻烦,便引出了useradd的默认参数配置文件:/etc/default/useradd和/etc/login.defs。你可以使用useradd-D开关来查看也可以使用文本编辑器直接查看/etc/default/useradd的内容。7.2添加和删除用户可以使用useradd命令来修改这些环境变量。#useradd-D-b/tmp–e20101222-g100-s/bin/bash-b指定默认添加用户的主目录前缀在哪里,会在指定目录下创建与用户同名的目录,来作为主目录,除非在添加用户时,使用-d参数,会忽略此选项。注意,指定的时候是/tmp,不是/tmp/,因为程序会在该变量后自动加上/。7.2添加和删除用户用户密码管理passwd命令用于维护Linux用户的密码。如果后面不指定用户,就是修改当前用户。-l锁定一个用户的账号。--stdin从标准输入读入密码。-u为一个账号解除锁定。-d快速清空一个账号的密码。-w设置密码过期前的警告时间。(shadow第六个域)-i密码过期后的等待禁用的天数。(shadow第七个域)-n2次修改密码之间的最短天数。(shadow第四个域)-x密码有效期。(shadow第五个域)7.2添加和删除用户•实例:添加一个帐户:#useraddht001(默认在/home下)指定帐户家目录为/tmp:#useradd–d/tmpht002设置该帐户密码:#passwdht001清除用户密码:#passwd–dht001锁定帐户:#passwd–lht001解除锁定:#passwd–uht0017.2添加和删除用户usermod修改用户对于一个已经添加完的用户,我们需要修改该用户的信息,可以使用usermod命令。usermod的命令使用和useradd基本一致。开关也基本一致。-c、-d、-e、-f、-g、-G、-s、-u这些开关和useradd的使用方法相同,不再重复。-l修改登录名。(passwd第一个域,shadow第一个域)-L锁定账号。-U解除锁定。实例:#usermod-lhtht001:把用户ht001的登录名改为ht#usermod-Lht锁定leinsyang的账号,使其无法登录。#usermod-Uht解除对marshall的账号的锁定,恢复登录。7.2添加和删除用户7.2添加和删除用户•chfn命令,用于修改GECOS域更方便的命令。如果后面不加上用户名,那么就是修改当前用户。(passwd第五个域)实例:#chfnht•设定完GECOS后可以使用finger查看。实例:#fingerroot•chsh命令,用于修改用户的默认shell的。如果后面不加上用户名,那么就是修改当前用户。(passwd第七个域)实例:#chshhtChangingshellforht.Newshell[/bin/bash]:/bin/cshShellchanged.如果是修改当前的用户,修改完后要重新登录才会有效果。7.2添加和删除用户删除用户删除用户使用userdel命令。-r连同用户的主目录一起删除。实例:#userdel-rht7.2添加和删