Linux用户和用户组管理

组管理

groupadd

groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

基本语法:groupadd [-g gid [-o]] [-r] [-f] group

参数说明:

[root@bolog ~]# groupadd --help 
用法: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                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录

[root@bolog ~]# groupadd -g 88888 g03
[root@bolog ~]# tail -3 /etc/group
g01:x:1000:
g02:x:1001:
g03:x:88888:
[root@bolog ~]# groupadd g04
[root@bolog ~]# tail -4 /etc/group
g01:x:1000:
g02:x:1001:
g03:x:88888:
g04:x:1002:

直接 groupadd g04添加的常规用户组从组id1000开始累加

使用-r

groupdel

groupdel命令用于删除群组。需要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。但倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

基本语法: groupdel [群组名称]

[root@bolog ~]# groupdel --help
用法:groupdel [选项] 组

选项:
  -h, --help                    显示此帮助信息并推出
  -R, --root CHROOT_DIR         chroot 到的目录
[root@bolog ~]# groupdel g04
[root@bolog ~]# groupdel g03
[root@bolog ~]# groupdel g02
[root@bolog ~]# groupdel g01
[root@bolog ~]# tail -4 /etc/group
sshd:x:74:
chrony:x:996:
cgred:x:995:
docker:x:994:

groupmems

groupmems 命令用于管理某个用户组的成员。通常只有超级用户或该用户组的管理员才能使用此命令。

基本语法groupmems -a username -g groupnme

[root@bolog ~]# groupmems --help
用法:groupmems [选项] [动作]

选项:
  -g, --group groupname         更改组 groupname,而不是用户的组(只 root)
  -R, --root CHROOT_DIR         chroot 到的目录

动作:
  -a, --add username            将用户 username 添加到组成员中
  -d, --delete username         从组的成员中删除用户 username
  -h, --help                    显示此帮助信息并推出
  -p, --purge                   从组中移除所有成员
  -l, --list                    列出组中的所有成员

gpasswd

gpasswd 命令用于管理组的密码以及组的成员。它的功能更广泛,除了管理成员外,还可以设置组的密码。

基本语法:gpasswd [选项] <username> <groupname>

[root@bolog ~]# gpasswd --help
用法:gpasswd [选项] 组

选项:
  -a, --add USER                向组 GROUP 中添加用户 USER
  -d, --delete USER             从组 GROUP 中添加或删除用户
  -h, --help                    显示此帮助信息并推出
  -Q, --root CHROOT_DIR         要 chroot 进的目录
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                向其成员限制访问组 GROUP
  -M, --members USER,...        设置组 GROUP 的成员列表
  -A, --administrators ADMIN,...	设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。

groupmod

groupmod 命令用于修改Linux系统中的用户组属性。

基本语法:groupmod [选项] <groupname>

[root@bolog ~]# groupmod --help 
用法:groupmod [选项] 组

选项:
  -g, --gid GID                 将组 ID 改为 GID
  -h, --help                    显示此帮助信息并推出
  -n, --new-name NEW_GROUP      改名为 NEW_GROUP
  -o, --non-unique              允许使用重复的 GID
  -p, --password PASSWORD	将密码更改为(加密过的) PASSWORD
  -R, --root CHROOT_DIR         chroot 到的目录

用户管理

useradd

useradd用于添加用户

useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中。

基本语法:

useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

useradd [选项]

[root@bolog ~]# useradd --help 
用法: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

userdel

userdel命令用于删除用户帐号。

userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。

基本语法:b

[root@bolog ~]# userdel --help 
用法:userdel [选项] 登录

选项:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池
  -R, --root CHROOT_DIR         chroot 到的目录
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

usrmod

usermod命令用于修改用户帐号的各项设定。

基本语法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

[root@bolog ~]# usermod --help 
用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

[root@bolog ~]# useradd test
[root@bolog ~]# id test
uid=1000(test) gid=1000(test) 组=1000(test)
[root@bolog ~]# usermod -u 1003 test
[root@bolog ~]# id test
uid=1003(test) gid=1000(test) 组=1000(test)
[root@bolog ~]# usermod -g root test
[root@bolog ~]# id test
uid=1003(test) gid=0(root) 组=0(root)
[root@bolog ~]# usermod -g test test
[root@bolog ~]# id test
uid=1003(test) gid=1000(test) 组=1000(test)
[root@bolog ~]# usermod -G root test
[root@bolog ~]# id test
uid=1003(test) gid=1000(test) 组=1000(test),0(root)

主要组与附加组

主要组是每个用户唯一的组,而附加组可以有很多。当用户创建的新文件或目录,默认会归属于用户的主要组。

附加组的作用的是分享权限。

/etc/passwd内容解析

[root@bolog ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
test:x:1003:1000::/home/test:/bin/bash

<用户名>:<密码(x代替)>:<用户ID>:<组ID>:<注释>:<用户家目录>:<登录状态>

  • 用户名:系统中唯一的用户登录名。
  • 密码:通常存储为 x,表示实际的加密密码存储在 /etc/shadow文件中。
  • 用户ID (UID):用户的唯一标识号。0是 root用户,1-99是系统保留用户,100-999是系统账号,1000及以上是普通用户。
  • 组ID (GID):用户的主要组ID,通常在 /etc/group文件中定义。
  • 注释:用户的注释字段,可以包含用户的全名或其他描述信息。
  • 用户家目录:用户登录后所在的目录,通常是 /home/username
  • 登录状态:用户的默认登录shell,比如 /bin/bash,可以是空字符串或指向某个程序(如 /sbin/nologin,表示该用户不能登录)。