Linux用户及组管理一

Linux用户及组

Linux操作系统对多用户的管理,是非常繁琐的,所以用组的概念来管理用户就变得简单,每个用户可以在一个独立的组,每个组也可以有零个用户或者多个用户。

Linux系统用户是根据用户ID来识别的,从默认ID编号从0开始,但是为了和老式系统兼容,用户ID限制在60000以下,Linux用户分总共分为三种,分别如下:

  • root用户 (ID 0)
  • 系统用户 (ID 1-499)
  • 普通用户 (ID 500以上)

Linux系统中的每个文件或者文件夹,都有一个所属用户及所属组,使用id命令可以显示当前用户的信息,使用passwd命令可以修改当前用户密码。Linux操作系统用户的特点如下:

  • 每个用户拥有一个UserID,操作系统实际读取的是UID,而非用户名;
  • 每个用户属于一个主组,属于一个或多个附属组,一个用户最多有31个附属组;
  • 每个组拥有一个GroupID;
  • 每个进程以一个用户身份运行,该用户可对进程拥有资源控制权限;
  • 每个可登陆用户拥有一个指定的Shell环境。
Linux用户管理

Linux用户在操作系统可以进行日常管理和维护,涉及到的相关配置文件如下:

  • /etc/passwd 保存用户信息
  • /etc/shdaow 保存用户密码(以加密形式保存)
  • /etc/group 保存组信息
  • /etc/login.defs 用户属性限制,密码过期时间,密码最大长度等限制
  • /etc/default/useradd 显示或更改默认的useradd配置文件

如需创建新用户,可以使用命令useradd,执行命令useradd jfedu1即可创建jfedu1用户,同时会创建一个同名的组jfedu1,默认该用户属于jfedu1主组。

Useradd jfedu1命令默认创建用户jfedu1,会根据如下步骤进行操作:

  • 读取/etc/default/useradd,根据配置文件执行创建操作;
  • 在/etc/passwd文件中添加用户信息;
  • 如使用passwd命令创建密码,密码会被加密保存在/etc/shdaow中;
  • 为jfedu1创建家目录:/home/jfedu1;
  • 将/etc/skel中的.bash开头的文件复制至/home/jfedu1家目录;
  • 创建与用户名相同的jfedu1组,jfedu1用户默认属于jfeud1同名组;
  • Jfedu1组信息保存在/etc/group配置文件中。

在使用useradd命令创建用户时,可以支持如下参数:

用法:useradd [选项] 登录

useradd -D

useradd -D [选项]

选项:

-b, –base-dir BASE_DIR             指定新账户的家目录;

-c, –comment COMMENT         新账户的 GECOS 字段;

-d, –home-dir HOME_DIR         新账户的主目录;

-D, –defaults             显示或更改默认的 useradd 配置;

-e, –expiredate EXPIRE_DATE             新账户的过期日期;

-f, –inactive INACTIVE             新账户的密码不活动期;

-g, –gid GROUP         新账户主组的名称或ID;

-G, –groups GROUPS                  新账户的附加组列表;

-h, –help             显示此帮助信息并推出;

-k, –skel SKEL_DIR         使用此目录作为骨架目录;

-K, –key KEY=VALUE         不使用 /etc/login.defs 中的默认值;

-l, –no-log-init                      不要将此用户添加到最近登录和登录失败数据库;

-m, –create-home                      创建用户的主目录;

-M, –no-create-home                      不创建用户的主目录;

-N, –no-user-group                      不创建同名的组;

-o, –non-unique             允许使用重复的 UID 创建用户;

-p, –password PASSWORD          加密后的新账户密码;

-r, –system             创建一个系统账户;

-R, –root CHROOT_DIR         chroot 到的目录;

-s, –shell SHELL             新账户的登录 shell;

-u, –uid UID             新账户的用户 ID;

-U, –user-group             创建与用户同名的组;

-Z, –selinux-user SEUSER             为SELinux 用户映射使用指定 SEUSER。

Useradd案例演示:

  1. 新建jfedu用户,并加入到jfedu1,jfedu2附属组;
useradd -G jfedu1,jfedu2 jfedu
  1. 新建jfedu3用户,并指定新的家目录,同时指定其登陆的SHELL;
useradd jfedu3 -d /tmp/ -s /bin/bash
Linux组管理

所有的Linux或者Windows系统都有组的概念,通过组可以更加方便的管理用户,组的概念应用于各行行业,例如企业会使用部门、职能或地理区域的分类方式来管理成员,映射在Linux系统,同样可以创建用户,并用组的概念对其管理。

Linux组有如下特点:

  • 每个组有一个组ID;
  • 组信息保存在/etc/group中;
  • 每个用户至少拥有一个主组,同时还可以拥有31个附属组。

通过命令groupadd、groupdel、groupmod来对组进行管理,详细参数使用如下:

groupadd用法

-f, –force             如果组已经存在则成功退出;

并且如果 GID 已经存在则取消 –g;

-g, –gid GID         为新组使用 GID;

-h, –help         显示此帮助信息并推出;

-K, –key KEY=VALUE     不使用 /etc/login.defs 中的默认值;

-o, –non-unique         允许创建有重复 GID 的组;

-p, –password PASSWORD     为新组使用此加密过的密码;

-r, –system         创建一个系统账户;

groupmod用法

-g, –gid GID         将组 ID 改为 GID;

-h, –help         显示此帮助信息并推出;

-n, –new-name NEW_GROUP     改名为 NEW_GROUP;

-o, –non-unique         允许使用重复的 GID;

-p, –password PASSWORD     将密码更改为(加密过的) PASSWORD;

groupdel用法

groupdel jfedu 删除jfedu组;

Groupadd案例演示:

  1. groupadd创建jingfeng组
groupadd jingfeng
  1. groupadd创建jingfeng组,并指定GID为1000;
groupadd -g 1000 jingfeng
  1. groupadd创建一个system组,名为jingfeng组
groupadd -r jingfeng

Groupmod案例演示:

  1. groupmod修改组名称,将jingfeng组名,改成jingfeng1;
groupmod -n jingfeng1 jingfeng
  1. groupmod修改组GID号,将原jingfeng1组gid改成gid 1000;
groupmod –g 1000 jingfeng1