0055. shell命令--useradd

目录

55. shell命令--useradd

功能说明

语法格式

选项说明

选项

退出值

相关文件

/etc/passwd

/etc/shadow

/etc/group

/etc/gshadow

/etc/skel/

/etc/login.defs

/etc/default/useradd

实践操作

注意事项


55. shell命令--useradd

功能说明

        useradd 命令是 Linux 和 Unix 系统上用于创建新用户的工具。它是 shadow-utils 包的一部分,这个包还包括了管理用户密码、组和其他账户信息的工具。使用 useradd 可以创建新的用户账户,并可以指定多种选项来配置新账户的各种属性,如用户组、家目录、登录shell等。

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

        在 Slackware 中,adduser 指令是个 script 程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd 命令建立新用户,如此可方便管理员建立用户帐号。在 Red Hat Linux 中, adduser 命令则是 useradd 命令的符号连接,两者实际上是同一个指令。

语法格式

SYNOPSISuseradd [options] LOGINuseradd -Duseradd -D [options]

选项说明

选项

-b, --base-dir BASE_DIR:如果未指定 -d HOME_DIR,则系统的默认基本目录。如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量指定的基本目录,或默认使用 /home。
-c, --comment COMMENT:加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。这个信息通常可以通过 finger 命令查看。
-d, --home-dir HOME_DIR:将使用 HOME_DIR 作为用户登录目录的值来创建新用户。如果不指定,将使用 /home/LOGIN 作为家目录,其中 LOGIN 是用户名。 
-D, --defaults:变更预设值。
-e, --expiredate EXPIRE_DATE:用户帐户将被禁用的日期。 日期以 YYYY-MM-DD 格式指定。
-f, --inactive INACTIVE:密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP:用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。如果不指定,系统将使用默认组或新创建的组(如果 -G 选项也未指定)。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help:显示帮助信息并退出。
-k, --skel SKEL_DIR:骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd 创建时。
-K, --key KEY=VALUE:覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。
-l, --no-log-init:不要将用户添加到 lastlog 和 faillog 数据库。
-m, --create-home:为新用户创建家目录。如果家目录已存在,则不会覆盖。如果用户的主目录不存在,则创建它。
-M:不要创建用户的主目录,即使 /etc/login.defs (CREATE_HOME) 中的系统范围设置设置为 yes。
-N, --no-user-group:不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组中。
-o, --non-unique:允许创建具有重复(非唯一)UID 的用户帐户。 此选项仅在与 -o 选项结合使用时有效。
-p, --password PASSWORD:crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system:创建一个系统帐户。
-R:设置根目录
-s, --shell SHELL:用户登录 shell 的名称。如果不指定,将使用 /bin/bash。
-u, --uid UID:用户 ID 的数值。(UID)
-U, --user-group:创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER:用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。# 更改默认值
# 当仅使用 -D 选项调用时,useradd 将显示当前默认值。 当使用 -D 和其他选项调用时,useradd 将更新指定选项的默认值。 有效的默认更改选项是:

退出值

0 成功
1 无法更新密码文件
2 无效的命令语法
3 选项的无效参数
4 UID 已经在使用(并且没有 -o)
6 指定的组不存在
9 用户名已被使用
10 无法更新组文件
12 无法创建主目录
13 无法创建邮件假脱机
14 无法更新 SELinux 用户映射

相关文件

/etc/passwd # 用户帐户信息。
/etc/shadow # 保护用户帐户信息。
/etc/group  # 组帐户信息。
/etc/gshadow # 保护组帐户信息。
/etc/default/useradd # 帐户创建的默认值。
/etc/skel/ # 包含默认文件的目录。
/etc/login.defs # 影子密码套件配置。
/etc/passwd
[root@MineGi ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
#第1字段:用户账户名
#第2字段:密码占用符(密码保存到了影子文件)
#第3字段:uid编号
#第4字段:gid编号
#第5字段:用户备注信息(用户全名)
#第6字段:用户属主目录(家目录)
#第7字段:登录时分配到的shell解释器(若shell类型为/sbin/nologin,则不能登录)
/etc/shadow
[root@MineGi ~]# head -1 /etc/shadow
root:$6$lkz5C3wAIJXy.XL3$Axv54rjknCBT0n/N5CXRB4ead4sg3o2XOdXAlClRfCCNBgxMGwPWeBIXLsaDPiDXw6gx9KavaAxsxztZYt4k3/::0:99999:7:::
#第1字段:用户账号名
#第2字段:加密的密码,!!表示密码被锁定,不能使用
#第3字段:上次修改密码的时间,距 1970-01-01 过去多少天
#第4字段:密码最短有效期(距上次密码修改起多少天内不能再次修改密码)单位"天"。"0"表示随时可修改密码。
#第5字段:密码最长有效期(在修改密码后的多少天必须重新修改密码。99999 表示永久可以使用。)
#第6字段:提前多少天警告用户口令将过期(7 表示在密码过期前7天开始警告。)
#第7字段:在密码过期之后多少天禁用此用户。
#第8字段:密码过期日期,若设置则显示为过期日期距 1970 年1月1日多少天。
#第9字段:保留字段(未使用)。
/etc/group
[root@MineGi ~]# head -1 /etc/group
root:x:0:
#第1个字段:组名
#第2个字段:密码占位符
#第3个字段:GID
#第4个字段:组内的成员信息
/etc/gshadow
[root@MineGi ~]# head -1 /etc/gshadow
root:::
/etc/skel/
[root@MineGi ~]# ls -lA /etc/skel/
total 12
-rw-r--r--. 1 root root  18 Apr 11  2018 .bash_logout
-rw-r--r--. 1 root root 193 Apr 11  2018 .bash_profile
-rw-r--r--. 1 root root 231 Apr 11  2018 .bashrc
/etc/login.defs
[root@MineGi ~]#  grep -Ev "^$|^#" /etc/login.defs 
MAIL_DIR /var/spool/mail     #用户邮件存放目录
PASS_MAX_DAYS 99999         #密码默认最长有效期
PASS_MIN_DAYS 0             #密码默认最短有效期
PASS_MIN_LEN 5                 #密码默认长度
PASS_WARN_AGE 7             #密码过期警告时间
UID_MIN 1000                 #普通用户起始UID范围
UID_MAX 60000                 #普通用户结束UID范围
SYS_UID_MIN 201             #系统用户起始UID范围
SYS_UID_MAX 999             #系统用户结束UID范围
GID_MIN 1000                 #普通组起始GID范围
GID_MAX 60000                 #普通组结束GID范围
SYS_GID_MIN 201             #系统组起始GID范围
SYS_GID_MAX 999             #系统组结束GID范围
CREATE_HOME yes             #是否创建用户宿主目录
UMASK 077                     #用户宿主目录默认权限
USERGROUPS_ENAB yes         #表示userdel删除用户时,如果该用户用户组如果没有成员存在,则会删除该用户组
ENCRYPT_METHOD SHA512        #表示用户密码加密方式,此处表示用MD5加密密码
/etc/default/useradd
[root@MineGi ~]# grep -Ev "^$|^#" /etc/default/useradd 
GROUP=100
HOME=/home                         #把用户的主目录建在/home中
INACTIVE=-1                     #是否启用帐号过期停权,-1表示不启用
EXPIRE=                         #帐号终止日期,不设置表示不启用;
SHELL=/bin/bash                 #所用SHELL的类型;
SKEL=/etc/skel                     #默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的/lib64/security/pam_cracklib.so    #控制密码复杂度的关键文件,Redhat公司专门开发了cracklib这个安装包来判断密码的复杂度。[root@MineGi ~]# man pam_cracklib
retry=N                         #改变输入密码的次数,默认值是1。就是说,如果用户输入的密码强度不够就退出。可以使用这个选项设置输入的次数,以免一切都从头再来
minlen=N                         #新密码最低可接受的长度
difok=N                         #默认值为10。这个参数设置允许的新、旧密码相同字符的个数。不过,如果新密码中1/2的字符和旧密码不同,则新密码被接受
dcredit=N                         #限制新密码中至少有多少个数字
ucredit=N                        #限制新密码中至少有多少个大写字符。
lcredit=N                         #限制新密码中至少有多少个小写字符。

实践操作

1. 创建一个新用户 username1 使用默认的家目录和 shell
grep username1 /etc/passwd
ls -ld /home/username1
useradd username1
grep username1 /etc/passwd
ls -ld /home/username1
ls -lA /home/username12. 创建一个新用户 username2 指定家目录和登录 shell
useradd -d /opt/username2 -s /bin/sh username2
grep username2 /etc/passwd
ls -ld /home/username2
ls -ld /opt/username2
ls -lA /opt/username23. 创建一个新用户 username3 但不创建家目录,亦不让登录系统
useradd -M -s /sbin/nologin username3
grep username3 /etc/passwd
ls -ld /home/username34. 创建一个新用户 username4 并自定义 UID 值
tail -3 /etc/passwd
useradd -u 6688 username4
tail -4 /etc/passwd5. 创建一个新用户 username5 并追加指定组为该用户的扩展组
grep username5 /etc/group
useradd -G root username5
grep username5 /etc/group
tail -5 /etc/group6. 创建一个新用户 username6 并指定过期时间
useradd -e "3000-01-01" username6
grep username6 /etc/passwd
grep username6 /etc/shadow
tail -6 /etc/shadow7. 创建一个新用户 username7 用于系统账户
useradd -r username7
grep username7 /etc/passwd
ls -ld /home/username7
#使用 -r 参数时,useradd 命令会:
#创建一个 UID 小于 UID_MIN 的账户(通常在 /etc/login.defs 中定义)
#不创建家目录(除非明确指定)将登录 shell 设置为 /sbin/nologin(在大多数系统上)
# -r 的主要目的是创建系统账户,阻止登录是它的副作用。
# 如果你只是想阻止普通用户账户登录,使用 -s /sbin/nologin 可能更直接和明确。
#在某些系统上,-r 可能不会自动设置 /sbin/nologin 作为 shell,所以显式使用 -s 参数更可靠。

注意事项

  • 在创建用户时,如果指定了 -m 选项但家目录已存在,并且该目录的所有者不是 root 或与指定的 UID 不匹配,则 useradd 命令可能会失败。
  • 创建用户后,通常需要设置用户密码,这可以通过 passwd 命令完成:passwd 用户名。
  • 使用 useradd 时,请确保你有足够的权限(通常是 root 权限)来创建用户。
  • 在使用 useradd 命令时,务必谨慎指定 UID 和 GID,确保它们不与现有的用户或组冲突。
  • 对于需要特定环境或配置的用户,可以通过 --skel 选项预先准备好一个包含必要文件和配置的目录,并在创建用户时指定该目录。
  • 创建系统账户时,通常不需要设置登录shell和家目录,因为这些账户主要用于后台服务,不需要交互式登录。
  • 在多用户环境中,合理使用用户组和权限控制是维护系统安全的关键。通过 useradd 的 -G 选项将用户添加到适当的组中,可以方便地进行权限管理。
  • 定期审查和更新用户账户是良好的安全管理实践。这包括检查用户的过期日期、登录活动、组成员身份等,以及及时删除不再需要的账户。

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

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

相关文章

UniApp 路由导航详解

一、引言 在当今的跨平台应用开发领域,UniApp 凭借其 “一套代码,多端运行” 的卓越特性,备受开发者青睐。而路由导航作为 UniApp 应用的关键环节,如同穿梭于各个页面场景的桥梁,直接关联着用户在应用内的操作体验。无…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地

前言:本文教程为,上传文件到服务器并训练深度学习模型,与下载服务器文件到本地。演示指令输入,完整的上传文件到服务器,并训练模型过程;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

从零开始开发纯血鸿蒙应用之逻辑封装

从零开始开发纯血鸿蒙应用 一、前言二、逻辑封装的原则三、实现 FileUtil1、统一的存放位置2、文件的增删改查2.1、文件创建与文件保存2.2、文件读取2.2.1、读取内部文件2.2.2、读取外部文件 3、文件删除 四、总结 一、前言 应用的动态,借助 UI 响应完成&#xff0…

python读写文件的三种做法

对于文件操作,python提供了3种做法:open(), os.open() 和with open()语句。 1. open()函数:一般用于更高级的文件读写操作,即人能读懂的用法,如果是写入数据,可用传入字符串。 用法:open(path…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录,条件:某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data? Server-Sent Events (SSE):允许服务器连续发送多个 data: 行,每个代表一个独立的数据块。 流式响应:大模型服务通常以流式响应方式返回数据,提高响应速度。 批量处理&#x…

MySQL 中存储金额数据一般使用什么数据类型

在 MySQL 中存储金额数据时,应该谨慎选择数据类型,以确保数据的精度和安全性。以下是几种常用的数据类型及其适用性: DECIMAL 类型: 描述:DECIMAL 类型是专门为存储精确的小数而设计的。它可以指定小数点前后的数字位数…

【数据结构】链表(1):单向链表和单向循环链表

链表 链表是一种经典的数据结构,它通过节点的指针将数据元素有序地链接在一起,在链表中,每个节点存储数据以及指向其他节点的指针(或引用)。链表具有动态性和灵活性的特点,适用于频繁插入、删除操作的场景…

离散数学考前一天

判断强连通,单向连通,弱连通: 求可达性矩阵P,P里面全是1,就是强连通 否则看P与P的转置矩阵,如果除了主对角线是0,其他全是1,就是单向连通 否则看A1=A与A的转置矩阵&am…

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 🍸前言 🍻一、服务器选择 🍹 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 🍸三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ 🍹四、测试 🍸前言 小伙伴们大家好…

chrome缓存机制以及验证缓存机制

一、Chrome 缓存机制 浏览器缓存机制旨在提高网页加载速度、减少服务器负载和节约带宽。Chrome 的缓存主要包括以下几种类型: 1. 强缓存 (Strong Cache) 无需向服务器发送请求即可使用缓存的资源。由 HTTP 响应头控制,包括: Expires&…

西门子DBX DBD DBB DBW的关系

DB10.DBD0 DB10.DBW0DB10.DBW2 DB10.DBB0DB10.DBB1DB10.DBB2DB10.DBB3 DB10.DBX0.00.7DB10.DBX1.01.7DB10.DBX2.02.7DB10.DBX3.03.7 使用之前需要在DB10中先定义,如果你仅在DB10中定义了一个DBD0,那么原则上你是可以使用上述所有地址的,但…

Android `android.graphics` 包深度解析:架构与设计模式

Android android.graphics 包深度解析:架构与设计模式 目录 引言android.graphics 包概述核心类与架构 CanvasPaintBitmapColorPathShaderMatrix设计模式在 android.graphics 中的应用 工厂模式装饰者模式策略模式享元模式高级图形处理技术 硬件加速离屏渲染自定义 View 中的…

Nginx的性能分析与调优简介

Nginx的性能分析与调优简介 一、Nginx的用途二、Nginx负载均衡策略介绍与调优三、其他调优方式简介四、Nginx的性能监控 一、Nginx的用途 ‌Nginx是一种高性能的HTTP和反向代理服务器,最初作为HTTP服务器开发,主要用于服务静态内容如HTML文件、图像、视…

vue2使用pdfjs-dist和jsPDF生成pdf文件

vue2使用pdfjs-dist和jsPDF生成pdf文件 1、安装依赖 npm install pdfjs-dist2.6.3472、引入依赖 import { jsPDF } from jspdf// 使用require方式导入pdfjs-dist v2.6.347,高版本报错(import导入会报错:GlobalWorkerOptions undefined&…

sklearn_pandas.DataFrameMapper的用法

文章目录 介绍主要作用基本用法示例对不同列应用不同的转换器对多列应用相同的转换器输出为 Pandas DataFrame 注意事项转换器的适用性:输出格式:与 scikit-learn 的兼容性: 介绍 DataFrameMapper 是 sklearn-pandas 库中的一个工具&#xf…

HTML——31.定义媒介资源

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>定义媒介资源</title></head><body><!--source标签用来为<video>视频和<audio>音频 &#xff0c;定义媒介资源--><!--src属性&…

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用&#xff0c;选择【安装配置】点击右边绿色按钮&#xff0c;进行安装&#xff0c;这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …

ArcGIS土地利用数据制备、分析及基于FLUS模型土地利用预测(数据采集、处理、分析、制图)

FLUS&#xff08;Flexible Land Use Simulation&#xff09;模型是一个用于模拟土地利用变化的模型&#xff0c;它结合了经济理论、土地利用和土地覆盖变化的动态过程。FLUS模型由美国农业部农业经济研究服务局&#xff08;ERS&#xff09;开发&#xff0c;旨在提供对美国及全球…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(一)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 三、传统微调范式&#xff08;Traditional Fine-Tuning Paradigm&#xff09; 在这个范式中&#xff0c;首先在大量未标记的文本数据上预…