linux用户和用户组

一、用户和组

1、用户账号类型

Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。

【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议使用普通用户账号进行。

【普通用户】:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的家目录中有完全权限。

【系统用户】:在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bindaemonftpmail等。

2、组账号

每一个用户账号至少属于一个组,在用户账号创建之初,如果管理员未指定该用户的特定主组,则系统会默认创建一个与该用户同名的用户组作为其主要组,这个组称为该用户的基本组(或私有组);如果该用户同时还包括在其他的组中,则这些组称为该用户的附加组(或公共组)。一个用户必须拥有自己的基本组,附加组则可有可无。

当某一用户只有私有组时,若将其私有组添加为附加组,当使用id查看该用户信息时,其私有组仍是原来的私有组,并没有附加组的显示,但如果稍后为该用户添加新的私有组后再查看其信息将会将原来的组转换为附加组,示例如下图。

组账号设置的权限,将适用于组内的每一个用户账号。

3UIDGID

Linux系统中的每一个用户账号都有一个数字形式的身份标记,称为UID,对于系统核心来说,UID作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的(特殊情况下会出现两个用户使用相同的id)。root用户账号的UID号为固定值0.计算机并不区分用户的名称,仅仅区别其ID,例如将UID500的用户的UID改为0,则该用户具有与root用户相同的权限,成为管理员用户。而在CENTOS6中程序用户账号的UID号默认在1-499之间(CENTOS71-999之间),500-60000CENTOS71000+)的UID号默认分配给普通用户账号使用。

UID相类似,每一个组账号也有一个数字形式的身份标记,称为GIDroot组账号的GID号为固定值0,而程序组(系统组)账号的GID号默认编号与UID的范围是一致的。

普通用户、组账号使用的默认UIDGID号范围定义在配置文件“/etc/login.defs”中。

二、Linux中的用户账号管理

Linux系统中的用户账号、密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。

1、用户账号文件

与用户账号相关的配置文件主要有两个,分别是/etc/passwd/etc/shadow。前者用于保存用户名称、宿主目录、登录Shell等基本信息,后者用于保存用户的密码、账号有效期等信息。在这连个配置文件中,每一行对应一个用户账号,不用的配置项之间使用冒号进行分隔。

passwd文件中的配置行格式】:

系统中所有用户的账号基本信息都保存在“/etc/passwd”文件中,该文件时文本文件,任何用户都可以读取文件中的内容。

passwd文件开头的部分,包括超级用户root及各程序用户的账号信息,系统中新增加的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行内容中,包括了七个用冒号分隔的配置字段,从左到右各配置字段的含义分别如下所述。

第一字段:用户账号的名称。

第二字段:经过加密的用户密码字串,或者密码占位符“x”

第三字段:用户账号的UID号。

第四字段:所属基本组账号的GID号。

第五字段:用户全名,可填写与用户相关的说明信息。

第六字段:宿主目录,即该用户登录后所在的默认工作目录。

第七字段:登录Shell等信息,用户完成登录后使用的Shell

基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,不法用户可以获取密码字串进行暴力破解,这样一来账号安全就存在一定的隐患。因此后来将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”

shadow文件中的配置行格式】

shadow文件又被称为影子文件,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。

shadow文件的每一行内容中,包含了九个用冒号分隔的配置字段,从左到右各配置字段的含义分别如下所述。

第一字段:用户账号名称。

第二字段:使用MD5加密的密码字串信息,当为“*”“!!”时表示此用户不能登录到系统。若该字段内容为空,则该用户无需密码即可登录系统。

第三字段:上次修改密码的时间,表示从19700101日算起到最近一次修改密码时间隔的天数。

第四字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制。

第五字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。

第六字段:提前多少天警告用户口令将过期,默认值为7.

第七字段:在密码过期之后多少天内禁用此用户。

第八字段:账号失效时间,此字段指定了用户作废的天数(从197011日起计算),默认值为空,表示账号永久可用。

第九字段:保留字段,目前没有特定用途。

2useradd命令——添加用户账号

useradd命令可以用于添加用户账号,其基本的命令格式如下所示。

useradd [选项] 用户名

最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户账号。在CentOS5系统中,useradd命令在添加用户账号的过程中主要完成以下几项任务。

a、在“/etc/passwd”文件和“/etc/shadow”文件的末尾增加该用户账号的记录。

b、若未明确指定用户的宿主目录,则在“/home”目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的初始配置文件。

c、若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到“/etc/group”“/etc/gshadow”文件中。

如果结合useradd命令的各种选项,可以在添加用户账号的同时对UID号、宿主目录、登录Shell等相关属性进行指定。以下列出了useradd命令中用于设置账号属性的几个常见选项。

-u:指定用户的UID号,要求该UID号码未被其他用户使用。

-d:指定用户的宿主目录位置。

-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。

-g:指定用户的基本组名(或使用GID号)。

-G:指定用户的附加组名(或使用GID号)。

-M:不建立使用者目录,即使/etc/login.defs系统档设定要建立使用者目录。

-s:指定用户的登录Shell

3passwd命令——为用户账号设置密码

通过useradd命令新添加的用户账号,还必须为其设置一个密码才能用来登陆Linux系统。root用户可以指定账号名称作为参数,对指定账号的密码进行管理。

用户账号具有可用的登录密码以后,就可以从字符终端进行登录了。虽然root用户可以指定用户名作为参数,对指定账号的密码进行管理,但是普通用户却只能执行单独的“passwd”命令修改自己的密码。

普通用户设置自己的密码时,密码要求有一定的复杂性,否则系统可能拒绝进行设置。

使用passwd命令除了可以修改账号的密码以外,还能够对用户账号进行锁定、解锁,或者也可以将用户的密码设置为空(无需密码即可登录)。相关的几个选项如下:

-d:清空指定用户的密码,仅使用用户名即可登录系统。

-l:锁定用户账户。

-S:查看用户账户的状态(是否被锁定)。

-u:解锁用户账户。

4usermod命令——修改用户账号属性

对于系统中已经存在的用户账号,可以使用usermod命令重新设置各种属性。usermod命令同样需要指定账号名称作为参数。较常使用的几个选项如下所述:

-u:修改用户的UID号。

-d:修改用户的宿主目录位置。

-e:修改用户的账户失效时间。

-g:修改用户的基本组名。

-G:修改用户的附加组名。

-M:不为用户建立并初始化宿主目录。

-s:指定用户的登录Shell

-l:更改用户账号的登录名称。

-L:锁定用户账户。

-U:解锁用户账户。

使用usermod命令时,其大部分的选项与useradd命令的选项是相对应的,作用也相似。除此以外,还有两个选项“-U”“-L”,分别用于解锁、锁定用户账号。这连个选项与passwd命令的“-l”“-u”选项作用基本相同,只不过大小写存在区别。

5userdel命令——删除用户账号

当系统中的某个用户账号已经不再需要使用时,可以使用userdel命令将该用户账号删除。使用该命令也需要指定账号名称作为参数。添加“-r”选项时可以将该用户的宿主目录一并删除。

6、用户账号的初始配置文件

Linux系统中添加用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录“/etc/skel”,基本上都是隐藏文件,较常用的初始配置文件包括“.bash_logout”“.bash_profile”“.bashrc”

其中,“.bashrc_profile”文件中的命令将在该用户每次登陆时被执行;“.bashrc”文件中的命令会在每次加载“/bin/Bash”程序时(当然也包括登陆系统)被执行;而“.bash_logout”文件中的命令将在用户每次退出登陆时被执行。理解这些文件的作用,便于我们安排一些自动运行的后台管理任务。

如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改“/etc”目录下的类似文件,如“/etc/bashrc”“/etc/profile”文件。

 

 

原创文章,作者:poetic snow,如若转载,请注明出处:http://www.178linux.com/82332

(0)
上一篇 2017-07-22 21:00
下一篇 2017-07-22 21:08

相关推荐

  • 文本三剑客—sed 基础

    文本三剑客—sed 基础        sed编辑器被称作流编辑器(stream editor),和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim),你可以用键盘命令来交互式的插入、删除或者替换数据中的文本。流编辑器则会自爱编辑器处理数据之前基于预习提供的一组…

    Linux干货 2017-05-15
  • 在 Linux 下你所不知道的 df 命令的那些功能

    原文出处: xmodulo   译文出处:linux.cn – mtunique   欢迎分享原创到运筹维幄 问题: 我知道在Linux上我可以用df命令来查看磁盘使用空间。你能告诉我df命令的实际例子使我可以最大限度得利用它吗?   对于磁盘存储方面,有很多命令行或…

    Linux干货 2015-03-02
  • 点名脚本

    脚本要求:1、随机抽点80以内的随机证书;                2、可以一次抽取多个随机数;同时间抽取的随机数要唯一;                3、被抽取之后的随机数,之后不会再抽取;…

    2017-05-08
  • Homework Week-3 用户管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  who | cut -f 1 -d \ | uniq “\”后跟一个空格字符 2、取出最后登录到当前系统的用户的相关信息。  who | tail…

    Linux干货 2016-08-24
  • 一周作业体会

    1、描述计算机的组成及其功能 CPU+控制器+RAM+输入设备+输出设备 2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 答:最主流的发行版主要有: Debian/Slackware/Redhat,我们日常最常使用的操作系统大多是上述发行版的二次再发行版,例如:基于Debian的二次发行版Ubuntu和Knopix,基于Slac…

    Linux干货 2016-10-31
  • 马哥教育网络班21期+第7周课程练习

    马哥教育网络班21期+第7周课程练习 创建一个10G分区,并格式为ext4文件系统;    a.要求block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;    b.挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不能更新文件的访问时间戳; #&…

    Linux干货 2016-08-22