Linux用户与用户组介绍

举报
WHYBIGDATA 发表于 2023/02/14 08:43:23 2023/02/14
【摘要】 Linux用户与用户组介绍

Linux用户与用户组介绍



0. 写在前面

  • Linux:CentOS7.5
  • 一些shell命令操作需要在root用户下执行

1. group

1.1 什么是组?

  • Linux 组具有一组权限,其中可能包括读取、写入或执行权限。例如,可以在同一组中处理同一项目的用户,以共享文件和其他系统资源。
  • 默认情况下,每当通过 adduser 命令添加新用户时,该用户都会添加到该用户自己的个人组中。
  • Linux 中的每个文件都有一个用户作为文件所有者(通常是创建文件的用户)和一个有权访问该文件的组。

1.2 groupadd

  • 用途:创建一个新的工作组,新工作组的信息会被添加到系统文件中。
  • 语法:
sudo groupadd [options] group
  • 选项option说明:
[zhangsan@node01 ~]$ sudo 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@node01:~]$ groupadd -g xxx group_name

1.2 groupmod

  • 用法:
sudo groupmod [option] 用户组名字
  • 参数说明
[zhangsan@node01 ~]$ sudo groupmod -h
用法: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 到的目录
  • 用途:

groupmod命令修改指定的组的定义,修改组数据库中的相应条目。

  • 示例:
# 新增组
[root@node01 ~]# groupadd group1 
[root@node01 ~]# tail -1 /etc/group 
group1:x:500: 
# 修改组名(-n)
[root@node01 ~]# groupmod -n ngroup1 group1 
[root@node01 ~]# tail -1 /etc/group 
ngroup1:x:500:

1.3 groupdel

  • 用途:删除群组
  • 用法:
[root@hadoop102 ~]# groupdel --help
用法:groupdel [选项] 组

选项:
  -h, --help                    显示此帮助信息并推出
  -R, --root CHROOT_DIR         chroot 到的目录
  • 示例
groupdel user_name

1.4 gpasswd

  • 用途:把用户添加进组或从组中删除
  • 用法:
[root@hadoop102 ~]# 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 选项,不能结合使用这些选项。
  • 将一个用户从某个用户组中删除
gpasswd -d user1 group1

Note:使用这个语法进行删除需要注意保证group1不是user1的主组

1.5 相关文件说明

  • /etc/group

/etc目录下的group文件记录了用户组和所属成员的相关信息

[zhangsan@node01 ~]$ cat /etc/group | tail -1
racdba:x:1007:oracle

解释说明:

关于uid:0 表示管理员(root),1 - 500 表示系统用户,501 - 65535 表示普通用户

racdba      :        x      :     1007    :      oracle
  ⬇	               ⬇            ⬇            ⬇
Group(用户组)       用户组口令        GID      该用户组包含的用户(user)
  • /etc/gshadow
  • /etc/gshadow包含组的影子信息
  • 如果要保持密码的安全性,这个文件不能被普通用户阅读。
  • 它必须是一个有效的组名,在系统中存在。
[zhangsan@node01 ~]$ sudo cat /etc/gshadow | head -5
root:::
bin:::
daemon:::
sys:::
adm:::
  • /etc/login.defs

/etc/login.defs文件提供了几个用户账户参数的默认配置信息。useradd、usermod、userdel和groupadd命令,以及其他用户和组的工具都从这个文件中获取默认值。每一行由指令名称和相关值组成。

[zhangsan@node01 ~]$ cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes

# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077

# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512

Note:如果/etc/login.defs中的USERGROUPS_ENAB指令被设置为YES,将为用户创建一个与用户名相同的组。如果该指令被设置为NO,useradd命令将新用户的主组设置为/etc/default/useradd文件中GROUP指令所指定的值,或者默认为100。

  • /etc/passwd

gpasswd命令用于管理/etc/group,以及/etc/gshadow。每个组都可以有管理员、成员和一个密码。

[zhangsan@node01 ~]$ cat /etc/passwd | grep zhangsan
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash

2. user

2.2 useradd

  • 用途:新新建一个用户
  • 用法:
[root@hadoop102 ~]# 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
  • useradd是新建一个用户【oracle】并将其添加到sql用户组中,如下所示:
[root@node01 ~]# useradd oracle -g sql
  • 当然,这个方法也应该是可以实现【将user_name用户添加到创建的用户组group_name1、group_name2、group_name3中】
[root@node01 ~]# useradd user_name -g group_name -G group_name1 group_name2 group_name3

2.3 adduser

  • 用途:同样是用于创建用户账户。
  • 用法:
[root@hadoop102 ~]# adduser  --help
用法:adduser [选项] 登录
      adduser -D
      adduser -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

Note:adduser实际并不是一个真正的命令文件,而仅仅是useradd的一条别名命令,因此这两个命令的使用方法完全相同。

adduser 与useradd 指令为同一指令(经由符号连结symbolic link)。

2.4 passwd

  • 用途:为用户设置密码
  • 用法:
[root@hadoop102 ~]# passwd --help
用法: passwd [选项...] <帐号名称>
  -k, --keep-tokens       保持身份验证令牌不过期
  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
  -l, --lock              锁定指名帐户的密码(仅限 root 用户)
  -u, --unlock            解锁指名账户的密码(仅限 root 用户)
  -e, --expire            终止指名帐户的密码(仅限 root 用户)
  -f, --force             强制执行操作
  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)
  • 设定帐号的密码
passwd user_name

2.5 usermod

  • 用途:用于修改用户帐号。
  • 用法:
[root@hadoop102 ~]# usermod -h
用法: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 用户映射
  • 示例1:更改用户的登录目录
[root@hadoop102 ~]# usermod -d /home/whybigdata1 whybigdata
  • 实例2:更改用户的uid
[root@hadoop102 ~]# usermod -u 777 whybigdata
  • 示例3:将 oracle1 用户添加到组 sql中:
[root@hadoop102 ~]# usermod -G sql oracle1
  • 示例4:强制使用 group_name 为新主组(-g)
[root@hadoop102 ~]# usermod -g group_name user_name
  • 示例5:锁定账号oracle1:
[root@hadoop102 ~]# usermod -L oracle1
  • 示例6:解除对newuser1的锁定:
[root@hadoop102 ~]# usermod -U oracle1

2.6 userdel

  • 用途:用于删除给定的用户以及与用户相关的文件
  • 用法:
[root@hadoop102 ~]# userdel -h
用法: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 用户映射
  • 示例:
# 删除用户oracle1,但不删除其家目录及文件;
userdel oracle1      
# 删除用户linuxde,其家目录及文件一并删除;
userdel -r oracle1    

Note:最好不要轻易用-r选项

结束!!!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。