1、Linux中的用户和组帐号概述
与Windows操做系统相比,Linux系统中的用户和组帐号的做用本质上是同样的,一样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在些许差别。下面将给你们介绍Linux系统中用户帐号和组帐号的相关概念。安全
一、用户帐号
在Linux系统中,根据系统管理的须要将用户帐号分为不一样的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。
【超级用户】:root用户是Linux系统中默认的超级用户帐号,对本主机拥有至高无上的彻底权限,相似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登陆系统,平常事务处理建议使用普通用户帐号进行。
【普通用户】:普通用户帐号须要由root用户或其余管理员用户建立,拥有的权限受到必定限制,通常只在用户本身的宿主目录中有彻底权限。
【程序用户】:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户帐号,这些用户通常不容许登陆到系统,而仅用于维持系统或某个程序的正常运行。例如:bin、daemon、ftp、mail等。bash
二、组帐号
基于某种特定联系将多个用户集合在一块儿,即构成一个用户组,用于表示该组内全部用户的帐号称为组帐号。每个用户帐号至少属于一个组,这个组称为该用户的基本组(或私有组);若是该用户同时还包括在其余的组中,则这些组称为该用户的附加组(或公共组)。
例如,用户gaoke是总经办的员工,与部门内的其余同事同属于基本组zongjingban,后来因工做安排须要,公司将gaoke加入到信息中心组mis。则此时用户gaoke同时属于zongjingban、mis组,zongjingban组是其基本组帐号,而mis组是其附加组帐号。
最组帐号设置的权限,将适用于组内的每个用户帐号。测试
三、UID和GID号
Linux系统中的每个用户帐号都有一个数字形式的身份标记,称为UID,对于系统核心来讲,UID做为区分用户的基本依据,原则上每一个用户的UID号应该是惟一的。root用户帐号的UID号为固定值0.而程序用户帐号的UID号默认在1-499之间,500-60000的UID号默认分配给普通用户帐号使用。
与UID相相似,每个组帐号也有一个数字形式的身份标记,称为GID。root组帐号的GID号为固定值0,而程序组帐号的GID号默认在1-499之间,普通组帐号使用的UID号默认为500-60000.
普通用户、组帐号使用的默认UID、GID号范围定义在配置文件“/etc/login.defs”中。加密
【例1】:查看“/etc/login.defs”配置文件中定义的默认UID、GID号范围。spa
2、Linux中的用户帐号管理
Linux系统中的用户帐号、密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令均可以对用户帐号进行管理。操作系统
一、用户帐号文件
与用户帐号相关的配置文件主要有两个,分别是/etc/passwd、/etc/shadow。前者用于保存用户名称、宿主目录、登陆Shell等基本信息,后者用于保存用户的密码、帐号有效期等信息。在这连个配置文件中,每一行对应一个用户帐号,不用的配置项之间使用冒号“:”进行分隔。事务
【passwd文件中的配置行格式】:
系统中全部用户的帐号基本信息都保存在“/etc/passwd”文件中,该文件时文本文件,任何用户均可以读取文件中的内容。资源
【例2】:查看“/etc/passwd”文件中的前两行、后两行的内容。模板
在passwd文件开头的部分,包括超级用户root及各程序用户的帐号信息,系统中新增长的用户帐号信息将保存到passwd文件的末尾。passwd文件的每一行内容中,包括了七个用冒号“:”分隔的配置字段,从左到右各配置字段的含义分别以下所述。test
第一字段:用户帐号的名称。
第二字段:通过加密的用户密码字串,或者密码占位符“x”。
第三字段:用户帐号的UID号。
第四字段:所属基本组帐号的GID号。
第五字段:用户全名,可填写与用户相关的说明信息。
第六字段:宿主目录,即该用户登陆后所在的默认工做目录。
第七字段:登陆Shell等信息,用户完成登陆后使用的Shell。
基于系统运行和管理须要,全部用户均可以访问passwd文件中的内容,可是只有root用户才能进行更改。在早期的UNIX操做系统中,用户帐号的密码信息也是保存在passwd文件中的,不法用户能够获取密码字串进行暴力破解,这样一来帐号安全就存在必定的隐患。所以后来将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”。
【shadow文件中的配置行格式】
shadow文件又被称为“影子文件”,其中保存有各用户帐号的密码信息,所以对shadow文件的访问应该进行严格限制。默认只有root用户可以读取文件中的内容,而不容许直接编辑该文件中的内容。
【例3】:查看“/etc/shadow”文件中的前两行、后两行内容。
shadow文件的每一行内容中,包含了九个用冒号“:”分隔的配置字段,从左到右各配置字段的含义分别以下所述。
第一字段:用户帐号名称。
第二字段:使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登陆到系统。若该字段内容为空,则该用户无需密码便可登陆系统。
第三字段:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数。
第四字段:密码的最短有效天数,自本次修改密码后,必须至少通过该天数才能再次修改密码。默认值为0,表示不进行限制。
第五字段:密码的最长有效天数,自本次修改密码后,通过该天数之后必须再次修改密码。默认值为99999,表示不进行限制。
第六字段:提早多少天警告用户口令将过时,默认值为7.
第七字段:在密码过时以后多少天内禁用此用户。
第八字段:帐号失效时间,此字段指定了用户做废的天数(从1970年1月1日起计算),默认值为空,表示帐号永久可用。
第九字段:保留字段,目前没有特定用途。
二、useradd命令------添加用户帐号
useradd命令能够用于添加用户帐号,其基本的命令格式以下所示。
useradd [选项] 用户名
最简单的用法是,不添加任何选项,只使用用户名做为useradd命令的参数,按系统默认配置创建指定的用户帐号。在CentOS5系统中,useradd命令在添加用户帐号的过程当中主要完成如下几项任务。
a、在“/etc/passwd”文件和“/etc/shadow”文件的末尾增长该用户帐号的记录。
b、若未明确指定用户的宿主目录,则在“/home”目录下自动建立与该用户帐号同名的宿主目录,并在该目录中创建用户的初始配置文件。
c、若没有明确指定用户所属的组,则自动建立与该用户帐号同名的基本组帐号,组帐号的记录信息将保存到“/etc/group”、“/etc/gshadow”文件中。
【例4】:建立名为test01的用户帐号,查看passwd、shadow文件中的变化,并确认该用户宿主目录中的初始配置文件。
若是结合useradd命令的各类选项,能够在添加用户帐号的同时对UID号、宿主目录、登陆Shell等相关属性进行指定。如下列出了useradd命令中用于设置帐号属性的几个常见选项。
-u:指定用户的UID号,要求该UID号码未被其余用户使用。
-d:指定用户的宿主目录位置。
-e:指定用户的帐户失效时间,可以使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID号)。
-G:指定用户的附加组名(或使用GID号)。
-M:不创建使用者目录,即便/etc/login.defs系统档设定要创建使用者目录。
-s:指定用户的登陆Shell。
【例5】:建立名为test02的用户帐号,并将其UID号指定为504.
#useradd -u 504 test02
【例6】建立一个辅助管理员帐号admin,将其基本组指定为“wheel”、附加组指定为“root”,宿主目录指定为“/admin”。
【例7】:建立一个考试测试用的帐号exam01,指定属于users组,该帐号于2009-07-30失效。
#useradd -g users -e 2009-07-30 exam01
【例8】:建立用于FTP访问的用户帐号ftpuser,将登录Shell指定为“/sbin/nologin”(禁止登录),且不为其建立宿主目录。
#useradd -M -s /sbin/nologin ftpuser
在Linux系统中,实际上大部分的程序用户都是被禁止登录到系统的。
三、passwd命令------为用户帐号设置密码
经过useradd命令新添加的用户帐号,还必须为其设置一个密码才能用来登录Linux系统。root用户能够指定帐号名称做为参数,对指定帐号的密码进行管理。
【例9】:指定用户名test01做为参数,为该用户设置一个登录密码,重复输入两次进行确认,并查看shadow文件中该用户的密码字串信息。
用户帐号具备可用的登陆密码之后,就能够从字符终端进行登陆了。虽然root用户能够指定用户名做为参数,对指定帐号的密码进行管理,可是普通用户却只能执行单独的“passwd”命令修改本身的密码。
普通用户设置本身的密码时,密码要求有必定的复杂性,不然系统可能拒绝进行设置。
【例10】:使用用户帐号test01登陆终端后,及时更改本帐号的登陆密码,须要原密码进行验证。
使用passwd命令除了能够修改帐号的密码之外,还可以对用户帐号进行锁定、解锁,或者也能够将用户的密码设置为空(无需密码便可登陆)。相关的几个选项以下:
-d:清空指定用户的密码,仅使用用户名便可登陆系统。
-l:锁定用户帐户。
-S:查看用户帐户的状态(是否被锁定)。
-u:解锁用户帐户。
【例11】:将用户帐号test01的密码予以锁定,查看shadow文件中的变化(密码串前多了一个“!!”号)并检查用户密码状态。解除对用户test01的锁定,再次检查用户密码状态。
四、usermod命令------修改用户帐号属性
对于系统中已经存在的用户帐号,可使用usermod命令从新设置各类属性。usermod命令一样须要指定帐号名称做为参数。较常使用的几个选项以下所述:
-u:修改用户的UID号。
-d:修改用户的宿主目录位置。
-e:修改用户的帐户失效时间。
-g:修改用户的基本组名。
-G:修改用户的附加组名。
-M:不为用户创建并初始化宿主目录。
-s:指定用户的登陆Shell。
-l:更改用户帐号的登陆名称。
-L:锁定用户帐户。
-U:解锁用户帐户。
使用usermod命令时,其大部分的选项与useradd命令的选项是相对应的,做用也类似。除此之外,还有两个选项“-U”、“-L”,分别用于解锁、锁定用户帐号。这连个选项与passwd命令的“-l”、“-u”选项做用基本相同,只不过大小写存在区别。
五、userdel命令------删除用户帐号
当系统中的某个用户帐号已经再也不须要使用时,可使用userdel命令将该用户帐号删除。使用该命令也须要指定帐号名称做为参数。添加“-r”选项时能够将该用户的宿主目录一并删除。
六、用户帐号的初始配置文件
在Linux系统中添加用户帐号后,useradd命令会在该用户的宿主目录中创建一些初始配置文件。这些文件来自于帐号模板目录“/etc/skel”,基本上都是隐藏文件,较经常使用的初始配置文件包括“.bash_logout”、“.bash_profile”、“.bashrc”。 其中,“.bashrc_profile”文件中的命令将在该用户每次登录时被执行;“.bashrc”文件中的命令会在每次加载“/bin/Bash”程序时(固然也包括登录系统)被执行;而“.bash_logout”文件中的命令将在用户每次退出登录时被执行。理解这些文件的做用,便于咱们安排一些自动运行的后台管理任务。 若是但愿为全部用户添加登陆后自动运行的命令程序、自动设置变量等,能够直接修改“/etc”目录下的相似文件,如“/etc/bashrc”、“/etc/profile”文件。