05.用户和组管理命令

用户和组管理命令

  • 用户和组管理命令
    • 1. getent
    • 2. useradd
    • 3. usermod
    • 4. userdel
    • 5. id
    • 6. su
    • 7. passwd
    • 8. chage
    • 9. groupadd
    • 10. groupmod
    • 11. groupdel
    • 12. gpasswd
    • 13. groupmems

用户和组管理命令

用户和组的主要配置文件

  • /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
  • /etc/shadow:用户密码及其相关属性
  • /etc/group:组及其属性信息
  • /etc/gshadow:组密码及其相关属性

1. getent

# 根据用户名查看配置项
getent passwd|shadow|group|gshadow  [uname]

2. useradd

★ 创建新的Linux用户
useradd [options] LOGIN
useradd -D
useradd -D [options]-u|--uid UID             		# 指定UID
-g|--gid GID            		# 指定用户组,-g groupname|--gid GID
-c|--comment COMMENT         	# 新账户的 GECOS 字段
-d|--home-dir HOME_DIR       	# 指定家目录,可以是不存在的,指定家目录,并不代表创建家目录
-s|--shell SHELL         		# 指定 shell,可用shell在/etc/shells 中可以查看
-r|--system               		# 创建系统用户,CentOS 6之前 ID<500,CentOS7 以后ID<1000,不会创建登录用户相关信息
-m|--create-home         		# 创建家目录,一般用于登录用户
-M|--no-create-home       		# 不创建家目录,一般用于不用登录的用户
-p|--password PASSWORD   		# 设置密码,这里的密码是以明文的形式存在于/etc/shadow 文件中
-o|--non-unique           		# 允许使用重复的 UID 创建用户
-G|--groups GROUP1[,GROUP2,...] # 为用户指明附加组,组须事先存在
-N|--no-user-group       		# 不创建同名的组,使用users组做主组
-D|--defaults                   # 显示或更改默认的 useradd 配置,默认配置文件是/etc/default/useradd
-e|--expiredate EXPIRE_DATE 	# 指定账户的过期日期 YYYY-MM-DD 格式
-f|--inactive INACTIVE       	# 密码过期之后,账户被彻底禁用之前的天数,0 表示密码过期立即禁用,-1表示不使用此功能
-k|--skel SKEL_DIR 				# 指定家目录模板,创建家目录,会生成一些默认文件,如果指定,就从该目录复制文件,默认是/etc/skel/,要配合-m
-K|--key KEY=VALUE   			# 不使用 /etc/login.defs 中的默认值,自己指定,比如 -K UID_MIN=100 
-l|--no-log-init 				# 不将用户添加到最近登录和登录失败记录,前面讲到的3a认证审计,就在此处lastlog|lastb|cat /var/log/secure[root@rocky8 ~]# useradd tom
[root@rocky8 ~]# getent passwd tom
tom:x:1001:1001::/home/tom:/bin/bash
[root@rocky8 ~]# getent shadow tom
tom:!!:19752:0:99999:7:::
[root@rocky8 ~]# getent group tom
tom:x:1001:
[root@rocky8 ~]# getent gshadow tom
tom:!::# 新建用户的相关文件
/etc/default/useradd  
/etc/skel/*  
/etc/login.defs

3. usermod

★ 修改用户属性
usermod [options] LOGIN-c|--comment COMMENT         # 修改注释
-d|--home HOME_DIR           # 修改家目录
-e|--expiredate EXPIRE_DATE  # 修改过期的日期,YYYY-MM-DD 格式
-f|--inactive INACTIVE       # 密码过期之后,账户被彻底禁用之前的天数,0 表示密码过期立即禁用,-1表示不使用此功能
-g|--gid GROUP               # 修改组
-G|--groups GROUPS           # groupName|GID... 新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-a|--append GROUP            # 将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
-l|--login LOGIN             # 新的登录名称
-L|--lock                    # 锁定用户帐号,在/etc/shadow 密码栏的增加 !
-m|--move-home               # 将家目录内容移至新位置,和 -d 一起使用
-o|--non-unique              # 允许使用重复的(非唯一的) UID
-p|--password PASSWORD       # 修改密码,这里是明文,如果要在此处修改密码,则要用加密后的字符串
-s|--shell SHELL             # 修改 shell
-u|--uid UID                 # 修改 UID
-U|--unlock                  # 解锁用户帐号,将 /etc/shadow 密码栏的!拿掉[root@rocky8 ~]# getent shadow nan
nan:$6$bqKkb17ECiAyoWFn$s8rd8DYDLWMBL1TGczKMjg1D18B4nDYHY84mNMetEwFC6tr1WIPyvVVorN68Dq1U/rNNhpeNkltZ2DAqZPk9R0::0:99999:7:::
[root@rocky8 ~]# usermod -L nan
[root@rocky8 ~]# getent shadow nan
nan:!$6$bqKkb17ECiAyoWFn$s8rd8DYDLWMBL1TGczKMjg1D18B4nDYHY84mNMetEwFC6tr1WIPyvVVorN68Dq1U/rNNhpeNkltZ2DAqZPk9R0::0:99999:7:::
[root@rocky8 ~]# usermod -U nan
[root@rocky8 ~]# getent shadow nan
nan:$6$bqKkb17ECiAyoWFn$s8rd8DYDLWMBL1TGczKMjg1D18B4nDYHY84mNMetEwFC6tr1WIPyvVVorN68Dq1U/rNNhpeNkltZ2DAqZPk9R0::0:99999:7:::

4. userdel

★ 删除Linux 用户
userdel [options] LOGIN-f|--force     # 强制删除,哪怕用户正在登录状态
-r|--remove    # 删除家目录和邮件目录

5. id

★ 查看用户的UID,GID等信息
id [OPTION]... [USER]-a             # 显示详细信息,默认选项
-Z|--context   # 仅显示安全上下文信息,要开启selinux 配置才有
-g|--group     # 仅显示GID,就是只显示主组ID
-G|--groups    # 显示主组和附加组ID,就是所有组ID
-n|--name      # 显示用户名或组名,要组合使用 -nu|-ng|-nG
-u|--user      # 仅显示UID[root@rocky8 ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@rocky8 ~]# id -a
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@rocky8 ~]# id -nu
root
[root@rocky8 ~]# id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
[root@rocky8 ~]# id -G postfix
89 12
[root@rocky8 ~]# id -nG postfix
postfix mail

6. su

★ 切换用户或以其他用户身份执行命令
su [options...] [-] [user [args...]]-m|-p|--preserve-environment  # 不重置环境变量
-g|--group group              # 指定主组,只有root 切普通用户才能指定此参数
-|-l|--login                  # 完全切换
-c|--command command          # 不切换用户,而是临时使用该用户权限和环境执行命令
--session-command command     # 使用上同 -c 选项,但不会创建会话
-f|--fast                     # 向shell 传递 -f 选项(csh 或 tcsh)
-s|--shell shell              # 切换用户后,指定新环境的shell环境,必须在 /etc/shells 中存在
-P|--pty                      # 开一个新的终端切换用户的方式:su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换
说明:root su至其他用户无须密码;非root用户切换时需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。★ 完全切换和不完全切换的区别
[nan@rocky8 ~]$ pwd
/home/nan
[nan@rocky8 ~]$ su root
Password: 
[root@rocky8 nan]# pwd
/home/nan
[root@rocky8 nan]# exit
exit
[nan@rocky8 ~]$ pwd
/home/nan
[nan@rocky8 ~]$ su - root
Password: 
[root@rocky8 ~]# pwd
/root★ 直接以另一个用户执行命令,而不切换用户
[root@rocky8 ~]# su - nan
[nan@rocky8 ~]$ touch nan1.txt
[nan@rocky8 ~]$ exit
logout
三步变一步
[root@rocky8 ~]# su - nan -c "touch nan2.txt"
[root@rocky8 ~]# ll /home/nan/nan*
-rw-rw-r--. 1 nan nan 0 Jan 30 16:18 /home/nan/nan1.txt
-rw-rw-r--. 1 nan nan 0 Jan 30 16:20 /home/nan/nan2.txt

7. passwd

★ 修改用户密码
passwd [OPTION...] <accountName>-k|--keep-tokens       # 保持身份验证令牌不过期
-d|--delete            # 删除用户密码,也删除密码锁,仅root有权限操作
-l|--lock              # 锁定用户密码,仅root有权限操作
-u|--unlock            # 解锁用户密码,仅root有权限操作
-e|--expire            # 终止用户密码,此操作完成后,用户下次登录成功后要立马修改,仅root有权限操作
-f|--force             # 强制执行操作
-x|--maximum=DAYS      # 指定用户密码最长有效期,仅root有权限操作
-n|--minimum=DAYS      # 指定用户密码最短有效期,仅root有权限操作
-w|--warning=DAYS      # 在密码过期前多少天开始提醒用户,仅root有权限操作
-i|--inactive=DAYS     # 当密码过期后经过多少天该用户账号会被禁用,仅root有权限操作
-S|--status            # 查询用户的密码状态,仅root有权限操作
--stdin                # 从标准输入接收密码,Ubuntu无此选项★ 普通用户修改自己密码
[nan@rocky8 ~]$ passwd
Changing password for user nan.
Current password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.★ root修改其它用户密码
[root@rocky8 ~]# passwd nan
Changing password for user nan.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

8. chage

★ 修改用户密码策略
chage [options] LOGIN-d LAST_DAY                  # 更改密码的时间
-m|--mindays MIN_DAYS
-M|--maxdays MAX_DAYS
-W|--warndays WARN_DAYS
-I|--inactive INACTIVE       # 密码过期后的宽限期
-E|--expiredate EXPIRE_DATE  # 用户的有效期
-l                           # 显示密码策略[root@rocky8 ~]# chage -l nan
Last password change					: Jan 30, 2024
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

9. groupadd

★ 创建组
groupadd [options] GROUP-f|--force              # 如果组已经存在则成功退出
-g|--gid GID            # 新建组时指定组ID,默认是系统分配,指定值不要超过[GID_MIN,GID_MAX]
-K|--key KEY=VALUE      # 不使用 /etc/login.defs 中的默认值,自己指定,比如 -K GID_MIN=100 
-o|--non-unique         # 允许创建有重复 GID 的组
-p|--password PASSWORD  # 为新组使用此加密过的密码,这里要用加密后的密文,不然就是直接是明文在/etc/gshadow 里面
-r|--system             # 创建一个系统组 CentOS 6之前: ID<500,CentOS 7以后: ID<1000[root@rocky8 ~]# groupadd -g 48 -r apache
[root@rocky8 ~]# getent group apache 
apache:x:48:
★ 不加 -f 会提示己存在,加 -f 直接结束
[root@rocky8 ~]# groupadd apache
groupadd: group 'apache' already exists
[root@rocky8 ~]# groupadd -f apache

10. groupmod

★ 修改组属性
groupmod [options] GROUP-g|--gid GID                 # 将组 ID 改为 GID
-n|--new-name NEW_GROUP      # 改名为 NEW_GROUP
-o|--non-unique              # 允许使用重复的 GID
-p|--password PASSWORD       # 将密码更改为(加密过的) PASSWORD[root@rocky8 ~]# getent group apache 
apache:x:48:
[root@rocky8 ~]# groupmod -g 123 apache
[root@rocky8 ~]# getent group apache 
apache:x:123:
[root@rocky8 ~]# groupmod -n apache2 apache
[root@rocky8 ~]# getent group apache 
[root@rocky8 ~]# getent group apache2
apache2:x:123:

11. groupdel

★ 删除组
groupdel [options] GROUP-f|--force # 强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
强制删除之后,显示该组名的地方,只能显示该组ID,如果此时新建与组ID相同的新组,则被删除的组的数据会被新组关联[root@rocky8 ~]# groupdel apache2
[root@rocky8 ~]# getent group apache2删除组:如果该组下有用户将组作为主组,则不能删除
删除用户:会把与其同ID的主组也给删了,前提是该组下没有其它用户

12. gpasswd

★ 更改组密码,也可以修改附加组的成员关系组没有密码的情况下,加组只能由root来操作
gpasswd [option] GROUP-a|--add USER                   # 向组中添加用户
-d|--delete USER                # 从组中移除用户
-r|--delete-password           	# 删除组密码
-R|--restrict                  # 向其成员限制访问组 GROUP
-M|--members USER,...          # 批量加组
-A|--administrators ADMIN,...  # 批量设组管理员[root@rocky8 ~]# groupadd group1
[root@rocky8 ~]# getent gshadow group1 
group1:!::
[root@rocky8 ~]# groups nan
nan : nan
[root@rocky8 ~]# id nan
uid=1000(nan) gid=1000(nan) groups=1000(nan)
[root@rocky8 ~]# gpasswd -a nan group1
Adding user nan to group group1
[root@rocky8 ~]# getent gshadow group1 
group1:!::nan
[root@rocky8 ~]# groups nan
nan : nan group1
[root@rocky8 ~]# id nan
uid=1000(nan) gid=1000(nan) groups=1000(nan),1002(group1)★ 设置组密码
[root@rocky8 ~]# gpasswd group1 
Changing the password for group group1
New Password: 
Re-enter new password: 
[root@rocky8 ~]# getent gshadow group1 
group1:$6$7rWweq0F$UQKecLT2gfpuXMg1pzdcchuUjAaQdVKvRXxcbqB2rw2wYKmaBBPSFl9aQSy0p9/WkqGZK6Jq1gpXdjnX3gOSl0::nan★ 移除组成员
[root@rocky8 ~]# gpasswd -d nan group1 
Removing user nan from group group1
[root@rocky8 ~]# groups nan
nan : nan★ 补充:groups 可查看用户组关系(查看用户所属组列表)groups [OPTION].[USERNAME]... 

13. groupmems

★ 管理附加组的成员关系(更改和查看组成员)
groupmems [options] [action]-g|--group groupname   # 更改为指定组 (只有root)
-a|--add username      # 指定用户加入组
-d|--delete username   # 从组中删除用户
-p|--purge             # 从组中清除所有成员
-l|--list              # 显示组成员列表★ 列出以group1 组为附加组的用户
[root@rocky8 ~]# groupmems -g group1 -l★ 将jose 加到group1 组
[root@rocky8 ~]# groupmems -g group1 -a jose
[root@rocky8 ~]# groupmems -g group1 -l
jose 
[root@rocky8 ~]# id jose
uid=1000(jose) gid=1000(jose) groups=1000(jose),1004(group1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919269.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go 多版本共存【goup + alias方案】

一、需求背景 以go1.21为主&#xff0c;临时可以快速切换到go1.23,且只有当前窗口生效 二、安装 安装 goup go install github.com/owenthereal/goup/cmd/gouplatest安装 go1.23 # 注意这里是安装新的sdk,如果你本地存在相同版本的话&#xff0c;应该保持统一用goup安装的 goup…

DR200差速移动机器人的多功能感知系统与多场景应用

DR200差速移动机器人平台是一款基于室内平地的差速转向移动机器人底盘&#xff0c;主要针对教育教学、超市移动促销、无人配送、室内仓储、室内巡检、物流搬运等行业。整套底盘采用了4个万向轮和双驱动轮差速驱动结构&#xff0c;间驱动轮带直流无刷伺服电机。整套结构采用了摆…

基于ZLMediaKit的大疆上云视频流服务集成方案

引言 随着无人机技术的快速发展&#xff0c;大疆&#xff08;DJI&#xff09;设备产生的高清视频流需要高效、低延迟的云端处理方案。传统基于SRS的视频流服务在多协议支持和并发性能上存在局限&#xff0c;而ZLMediaKit作为一款高性能流媒体服务框架&#xff0c;凭借其多协议支…

用 Python 实现一个“小型 ReAct 智能体”:思维链 + 工具调用 + 环境交互

在大语言模型&#xff08;LLM&#xff09;的应用开发中&#xff0c;如何让模型具备调用外部工具的能力是一个关键问题。我们不希望模型只是“生成答案”&#xff0c;而是能像一个智能体&#xff08;Agent&#xff09;一样&#xff0c;按照推理链条自主决定调用搜索、计算、或数…

集成电路学习:什么是SIFT尺度不变特征变换

SIFT:尺度不变特征变换 SIFT(尺度不变特征变换,Scale Invariant Feature Transform)是一种在图像处理和计算机视觉领域广泛应用的算法,由David Lowe在1999年提出。该算法能够在图像的不同尺度、旋转和光照条件下保持特征不变性,从而提取出独特的特征点,并用于图像…

短视频流量|基于Java+vue的短视频流量数据分析系统(源码+数据库+文档)

短视频流量数据分析系统 基于SprinBootvue的短视频流量数据分析系统 一、前言 二、系统设计 三、系统功能设计 系统功能模块 管理员功能模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff…

【无标题】卷轴屏手机前瞻:三星/京东方柔性屏耐久性测试进展

卷轴屏手机前瞻&#xff1a;三星/京东方柔性屏耐久性测试进展卷轴屏手机的产业化突破临近2025年全球柔性屏市场规模预计突破186亿美元&#xff0c;其中卷轴屏技术正从概念走向量产。三星显示近期宣布新一代柔性OLED面板通过50万次折叠认证&#xff0c;日均折叠200次可使用6年以…

Git 入门指南:核心概念与常用命令全解析

Git 入门指南&#xff1a;核心概念与常用命令全解析前言一、Git相关概念1.1 工作目录1.2 暂存区1.3 本地仓库1.3 远程仓库1.3.1 首次提交到远程仓库提示输入用户名密码1.3.2 解决方法二、Git常用命令2.1 配置命令2.1.1 查看当前 Git 配置的所有信息2.1.2 查看系统全局配置2.1.3…

悬赏任务网站源码多平台兼职赚钱搭建图解

功能详细说明 &#xff08;一&#xff09;登录与注册 1、登录&#xff1a;打开系统用户端&#xff0c;输入已注册的手机号和密码进行登录。 若为忘记密码&#xff0c;可通过 “找回密码” 功能&#xff0c;按提示验证身份后重置密码登录。 2、注册&#xff1a;点击 “注册” 按…

Node.js简介及安装

一、Nodejs简介 1、核心定义 Node.js 是一个基于 Chrome V8 引擎的开源、跨平台 JavaScript 运行时环境&#xff08;Runtime&#xff09;&#xff0c;用于在服务器端或本地运行 JavaScript 代码。它并非编程语言、库或框架&#xff0c;而是扩展了 JavaScript 的能力&#xff0…

KINGBASE集群日常维护管理命令总结

查看集群的状态 [kingbasenode1 bin]$ repmgr cluster show查看守护集群状态 [kingbasenode1 bin]$ repmgr service status查看集群的事件 [kingbasenode1 etc]$ repmgr cluster event查看集群流复制状态 esrep#select usename,application_name,client_addr,sync_state,state,…

GoLand 调参高手都在用的配置!续集:WebStorm 飞升后,Go 开发 IDE 性能炸裂的秘密

“为什么别人的 GoLand 运行 Go 项目丝滑流畅&#xff0c;而你的却频繁卡顿、编译转圈&#xff1f;秘密就藏在这个 goland64.exe.vmoptions文件里&#xff01;作为 IDEA/PyCharm/WebStorm 调优系列的续集&#xff0c;我把我压箱底的 ​GoLand 性能调优参数表​ 分享出来—>&…

48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径

ISBN号 ISBN号码_牛客题霸_牛客网 算法原理 模拟&#xff0c;根据题意模拟就可以了&#xff0c;注意一下余数为10的时候要特别判断一下是不是X就行了 代码 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public stat…

Java 泛型类型擦除

&#x1f4d6; 概述 本文档详细解释了 Flink 中 TypeInformation 的作用、原理和使用方法&#xff0c;帮助理解为什么 Flink 需要显式的类型信息。 &#x1f3af; 核心问题&#xff1a;Java 泛型类型擦除 什么是类型擦除&#xff1f; Java 在编译时会将泛型信息擦除&#xff0c…

从“写代码”到“定义需求”:AI编程工具如何重构软件开发的核心流程?

从“写代码”到“定义需求”&#xff1a;AI编程工具如何重构软件开发的核心流程&#xff1f; 软件开发的核心流程正在经历一场静默革命。十年前&#xff0c;开发者的日常被“写代码”填满——从变量定义到逻辑实现&#xff0c;每行代码都需要手动敲击&#xff1b;而今天&#x…

一颗TTS语音芯片给产品增加智能语音播报能力

​一颗TTS语音芯片给产品增加智能语音播报能力传统语音播报芯片可以设置一些固定的语音片段或者内容&#xff0c;但是对于现在各种创新产品层出不穷的时代&#xff0c;传统的语音播报芯片能力似乎有点不够用了。而TTS语音合成芯片&#xff0c;正在逐渐登上舞台中央。TTS语音合成…

[免费]基于Python的影视数据可视化分析系统(Flask+echarts)【论文+源码+SQL脚本】

大家好&#xff0c;我是python222_小锋老师&#xff0c;看到一个不错的基于Python的影视数据可视化分析系统(Flaskecharts)&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的爱奇艺影视电影数据可视化分析系统(Flaskecharts) Python毕业设计_哔哩哔哩_bilibili 系统…

Three.js 材质系统深度解析

简介 Three.js 是一个功能强大的开源 3D 图形库&#xff0c;广泛应用于 Web 端的 3D 可视化开发。其材质系统是 Three.js 的核心组成部分之一&#xff0c;负责定义 3D 对象的表面外观和渲染效果。从简单的颜色填充到复杂的动态效果&#xff0c;材质系统为开发者提供了高度灵活…

FP16(半精度)和FP32(单精度)

FP16&#xff08;Half-Precision Floating Point&#xff0c;半精度浮点数&#xff09;是一种使用16位二进制数表示浮点数值的数据格式&#xff0c;在深度学习、图形渲染和高性能计算中广泛应用。其核心定义、技术特性与应用价值如下&#xff1a;一、FP16的核心定义与结构二进制…

基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js

基于Vue Node能源采购系统的设计与实现/基于express的能源管理系统#node.js