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@node01~]# groupdel --help
用法:groupdel [选项] 组
选项:
-h, --help 显示此帮助信息并推出
-R, --root CHROOT_DIR chroot 到的目录
- 示例
groupdel user_name
1.4 gpasswd
- 用途:把用户添加进组或从组中删除
- 用法:
[root@node01 ~]# 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@node01 ~]# 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@node01 ~]# 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@node01 ~]# 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@node01 ~]# 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@node01 ~]# usermod -d /home/whybigdata1 whybigdata
- 实例2:更改用户的uid
[root@node01 ~]# usermod -u 777 whybigdata
- 示例3:将 oracle1 用户添加到组 sql中:
[root@node01 ~]# usermod -G sql oracle1
- 示例4:强制使用 group_name 为新主组(-g)
[root@node01 ~]# usermod -g group_name user_name
- 示例5:锁定账号oracle1:
[root@node01 ~]# usermod -L oracle1
- 示例6:解除对newuser1的锁定:
[root@node01 ~]# usermod -U oracle1
2.6 userdel
- 用途:用于删除给定的用户以及与用户相关的文件
- 用法:
[root@node01 ~]# 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
选项
结束!!!