Linux用户与用户组管理

来源:互联网 发布:在淘宝网上购物的步骤 编辑:程序博客网 时间:2024/06/06 17:29

下面介绍中的示例,来自于Win10 Linux子系统。
更多linux命令可参考http://man.linuxde.net/

一、多用户多任务

Linux 是一个多用户、多任务的操作系统。比如通过远程访问,多个用户可以同时登陆一个系统并执行各自的多个任务。

用户在系统中是分角色的,并通过UID和GID进行区分。UID就是用户ID,GID就是群组的ID号。在Linux 系统中,由于角色不同,权限和所完成的任务也不同。

用户大体分为虚拟用户和实体用户:

  • root 用户:系统管理员,可以登录系统,拥有最高权限。
  • 虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都是系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户。 (比如nobody和ftp 等,我们访问LinuxSir.Org 的网页程序,就是nobody用户;我们匿名访问ftp 时,会用到用户ftp或nobody )
  • 普通实体用户:这类用户能登录系统,但只能操作自己家目录的内容,权限有限,是系统管理员自行添加的。

多用户机制使得系统管理更为方便,同时也使得系统更为安全。不同用户通过权限控制可以用于完成不同的工作。

二、用户(user)和用户组(group)概念

用户组(group)就是具有相同特征的用户(user)的集合体。 比如我们需要对几个用户采用相同的控制操作,那么我们可以将这几个用户加入同一个用户组,通过控制和修改该用户组来达到同时控制几个用户的目的。

用户和用户组的对应关系是:一对一、多对一、一对多或多对多;

  • 一对一:某个用户可以是某个组的唯一成员;
  • 多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
  • 一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
  • 多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

三、用户和用户组相关的配置文件

1、/etc/passwd文件

通常在Linux系统中,用户的关键信息被存放在系统的/etc/passwd文件中,系统的每一个合法用户账号对应于该文件中的一行记录,这行记录定义了每个用户账号的属性,其格式为:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

其内容示例如下:

root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologin...
  • 用户名,即代表用户账号的字符串。
  • 口令,通常口令字段中只存放一个特别的字符,例如“x”或“*”。而真正的加密后的用户口令则存放到/etc/shadow文件。
  • 用户标识号,系统内部用来标识用户。如果几个用户名对应的用户标识号是相同的,系统内部将把他们视为同一个用户,不过他们能有不同的口令、不同的主目录及不同的登录Shell等。0是终极用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。
  • 组标识号,记用户所属的用户组,对应着/etc/group文件中的一条记录。
  • 注释性描述,通常是一段任意的注释性描述文字,用做finger命令的输出。
  • 主目录,用户的起始工作目录,他是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
  • 登陆shell。用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程式,即Shell。Shell是用户和Linux系统之间的接口。 系统管理员能根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。(Win10 linux子系统下为/bin/bash)
2、/etc/shadow文件

该文件只有root用户可以访问,同样保存了加密的帐号信息。其格式为:

用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

其内容示例如下:

root:*:17255:0:99999:7:::daemon:*:17255:0:99999:7:::bin:*:17255:0:99999:7:::sys:*:17255:0:99999:7:::sync:*:17255:0:99999:7:::games:*:17255:0:99999:7:::...
  • 用户名,同/etc/passwd文件中一致。
  • 口令,同/etc/passwd文件中一致。
  • 最后一次修改时间,表示的是从某个时刻起,到用户最后一次修改口令时的天数。一些系统中默认时间起点为1970年1月1日。
  • 最小时间间隔,指的是两次修改口令之间所需的最小天数。
  • 最大时间间隔,指的是口令保持有效的最大天数。
  • 警告时间,字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  • 不活动时间,表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  • 失效时间,字段给出的是个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是个合法的账号,也就不能再用来登录了。
3、/etc/group文件

用户组信息保存在/etc/group配置文件中,任何用户均可读取。用户组的加密密码保存在/etc/gshadow配置文件中。其格式为:

组名:口令:组标识号:组内用户列表

其内容示例如下:

root:x:0:daemon:x:1:bin:x:2:sys:x:3:adm:x:4:syslog...
4、/etc/gshadow文件

用于存储真实加密口令的组信息。

其格式为:

组名:口令:组的管理员(组长):组内用户列表

四、用户和用户组相关的控制指令

1、管理用户的工具或命令
  • useradd 或 adduesr: 添加用户
  • passwd: 为用户设置密码
  • usermod: 修改用户属性,如登录名、用户的home目录等
  • pwcov: 同步用户从/etc/passwd 到/etc/shadow
  • pwck: 校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
  • pwunconv:与pwconv功能相反,用来关闭用户的投影密码。它会把密码从shadow文件内,重回存到passwd文件里,然后删除 /etc/shadow 文件。
  • finger:查看用户信息工具
  • id:查看用户的UID、GID及所归属的用户组
  • chfn:更改用户信息工具
  • su:用户切换工具
  • sudo:用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
  • visudo: 用于编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的。
2、管理用户组的工具或命令

该部分命令与“用户”命令很相似。

  • groupadd:添加用户组
  • groupdel:删除用户组
  • groupmod:修改用户组信息
  • groups:显示用户所属的用户组
  • grpck:用于验证组文件的完整性
  • grpconv:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
  • grpunconv:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;

参考文档:

  • http://www.cnblogs.com/licheng/p/6103992.html
  • Linux 用户和用户组管理详解