目录

5.2 用户与组管理命令

Linux 用户与组管理命令

/images/linux_mt/linux_mt.jpg

本节我们将详细讲解用户与组管理的相关命令,包括以下内容:

  1. 用户的管理
  2. 用户组的管理

1. 用户组管理

groupadd

groupadd [选项] group_name

  • 作用: 创建新组
  • 选项:
    • -g GID:指定GID;默认是上一个组的GID+1;
    • -r: 创建系统组;

groupmod

groupmod [选项] GROUP

  • 作用: 修改组属性
  • 参数: GROUP 指定要修改的组的组名
  • 选项:
    • -g GID:修改GID;
    • -n new_name:修改组名;

groupdel

groupdel [选项] GROUP

  • 作用: 删除组

gpasswd命令:

gpasswd [选项] group

  • 组密码文件:/etc/gshadow
  • 作用: 设置组密码或向组添加或删除用户
  • 选项:
    • -a USERNAME:向组中添加用户
    • -d USERNAME:从组中移除用户

2. 用户管理

Linux 与用户相关的配置文件如下:

  1. /etc/passwd: 保存用户及属性信息
  2. /etc/group: 组及其属性信息
  3. /etc/shadow: 用户密码及相关属性
  4. /etc/gshaow: 组密码及相关属性
  5. /etc/login.defs: 用户创建和设置规则的配置
  6. /etc/skel: 用户家目录的默认包含的文件
  7. /etc/default/useradd: 用户创建的默认值配置
  8. /etc/shells: 系统包含的所有shells

useradd

useradd -D

  • 作用: 显示创建用户的默认配置;

useradd -D 选项:

  • 作用:
    • 修改创建用户选项的默认值;
    • 修改的结果保存于/etc/default/useradd文件中;
  • 选项:
    • s: 设置默认 shell

useradd [选项] 登录名

  • 作用: 创建新用户
  • 选项:
    • -u, --uid UID:指定UID;
    • -g, --gid GROUP:指定基本组ID,此组得事先存在;
    • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
    • -c, --comment COMMENT:指明注释信息;
    • -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
    • -M: 不为用户创建主目录
    • -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
    • -r, --system:创建系统用户;
  • 注意:创建用户时的诸多默认设定配置文件为/etc/login.defs

usermod命令

usermod [选项] 登录名

  • 作用: 修改用户属性
  • 选项:
    • -u, --uid UID:修改用户的ID为此处指定的新UID;
    • -g, --gid GROUP:修改用户所属的基本组;
    • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
    • -a, --append:与-G一同使用,用于为用户追加新的附加组;
    • -c, --comment COMMENT:修改注释信息;
    • -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
    • -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
    • -l, --login NEW_LOGIN:修改用户名;
    • -s, --shell SHELL:修改用户的默认shell;
    • -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
    • -U, --unlock:解锁用户的密码;

userdel命令

userdel [选项] 登录

  • 作用:删除用户
  • 选项:
    • -r:删除用户时一并删除其家目录;

passwd

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

  • 作用:
    • passwd:修改用户自己的密码;
    • passwd USERNAME:修改指定用户的密码,但仅root有此权限;
  • 选项:
    • -l, -u:锁定和解锁用户;
    • -d:清除用户密码串;
    • -e DATE: expire 过期期限,日期;
    • -i DAYS:inactive 非活动期限;
    • -n DAYS:minimum 密码的最短使用期限;
    • -x DAYS:maximum 密码的最长使用期限;
    • -w DAYS:warning 警告期限;
    • --stdinecho "PASSWORD" | passwd --stdin USERNAME

newgrp命令

newgrp [-] [group]

  • 作用: 临时切换指定的组为基本组;
  • 选项:
    • -: 会模拟用户重新登录以实现重新初始化其工作环境;
  • 附注: 如果用户不属于切换的目标组,则需要输入目标组组密码

chage

chage [选项] 登录名

  • 作用: 更改用户密码过期信息
  • 选项:
    • -d, --lastday DAYS: 修改最近一次更改时间
    • -E, --exporedate DATE: 过期期限
    • -W:
    • -m:
    • -M:

id

id [OPTION]... [USER]

  • 作用: 显示用户的真和有效ID;
  • 选项:
    • -u: 仅显示有效的UID;
    • -g: 仅显示用户的基本组ID;
    • -G: 仅显示用户所属的所有组的ID;
    • -n: 显示名字而非ID;
  • eg: id docker
1
2
3
4
5
练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;

练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;
练习4:为gentoo新增附加组netadmin;

3. 用户切换

su

su

  • 用法:
    • su -l USERNAME|su - USERNAME: 登录式切换, 会通过读取目标用户的配置文件来重新初始化
    • su USERNAME: 非登录式切换:不会读取目标用户的配置文件进行初始化
  • 注意:管理员可无密码切换至其它任何用户;
  • 选项: -c "COMMAND":仅以指定用户的身份运行此处指定的命令;