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.rhkb.cn/news/499057.html

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

相关文章

论文分享 | PromptFuzz:用于模糊测试驱动程序生成的提示模糊测试

大语言模型拥有的强大能力可以用来辅助多种工作,但如何有效的辅助仍然需要人的精巧设计。分享一篇发表于2024年CCS会议的论文PromptFuzz,它利用模型提示生成模糊测试驱动代码,并将代码片段嵌入到LLVM框架中执行模糊测试。 论文摘要 制作高质…

2024年底关于期货的工作总结

十几年程序猿出身,因几年前的懵懂无畏闯入期货市场,盈了,感觉期货太简单,飘然裸辞,想当财务自由者,全职做交易。当深入学习时,却亏了,原来市场是让人敬畏的,也是反人性的…

mybatis 和 mybatisPlus 兼容性问题

项目采用的是 mybatis, 后续引入了 mybatisPlus,用 mybatisX 创建的四个类一直报错,提示找不到符号,意识到 mybatis 和 mybatisPlus 的兼容性问题,通过修改配置 两者的配置如下 #配置mybatis配置 mybatis:type-aliase…

使用maven-mvnd替换maven大大提升编译打包速度

先上结论!!! 多模块清理并打包提升:约3.5倍 多模块不清理打包提升:约5.5倍 单模块提升:约2倍 从计算结果来看,多模块提升的效率更高。在使用mvnd package打包多模块式,可在控制台…

【数据结构】(Python)差分数组。差分数组与树状数组结合

差分数组: 基于原数组构造的辅助数组。用于区间修改、单点查询。区间修改的时间复杂度O(1)。单点查询的时间复杂度O(n)。差分数组的元素:第一个元素等于原数组第一个元素,从第二个元素开始是原数组对应下标的元素与前一个元素的差&#xff0…

k8s-1.28.2 部署prometheus

一、prometheus helm仓库 ## 网站地址 # https://artifacthub.io/## prometheus 地址 # https://artifacthub.io/packages/helm/prometheus-community/prometheus. # helm repo add prometheus-community https://prometheus-community.github.io/helm-charts # helm repo …

vulhub-wordpress靶场

一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录,把它拖出来 点开moban目录后,创建…

深入浅出梯度下降与反向传播

文章目录 1. 前言2. 基本概念2.1 一元函数的导数2.2 偏导数2.3 方向导数2.4 梯度2.5 均方误差 3. 梯度下降3.1 梯度下降的公式3.2 梯度下降的类型(优化器) 4. 反向传播4.1 反向传播的基本步骤4.2 反向传播的数学推导 5. 实战5.1 手动求导5.2 自动求导5.3…

gitlab-runner的卸载与安装

如果你使用rpm方式安装gitlab-runner,则可以参考本教程。 卸载 停止和卸载gitlab-runner 停止 gitlab-runner stopchkconfig gitlab-runner off卸载 gitlab-runner uninstall删除rpm包 查询出rpm包名,根据包名删除rpm。 [rootEuler02 ~]# rpm -qa …

2024年12月31日Github流行趋势

项目名称:free-programming-books 项目地址url:https://github.com/EbookFoundation/free-programming-books项目语言:HTML历史star数:344575今日star数:432项目维护者:vhf, eshellman, davorpa, MHM5000, …

基于深度学习的视觉检测小项目(二) 环境和框架搭建

一、环境和框架要求 SAM的环境要求: Python>3.7 PyTorch>1.7 torchvision>0.8 YOLO V8的环境要求:YOLO集成在ultralytics库中,ultralytics库的环境要求: Python>3.7 PyTorch>1.10.0 1、确定pytorch版本…

深度学习——损失函数汇总

1. 连续值损失函数 总结:主要使用胡贝儿损失函数,应用于连续数值的预测之间的误差损失,参考地址 import torch import torch.nn as nna = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) b = torch.tensor([[3, 5], [8, 6]], dtype=torch.float)loss_fn1 = torch.nn.M…

【分布式数据库与数据存储方案】详解

分布式数据库与数据存储方案 一、分布式数据库概述 (一)概念 分布式数据库是一种将数据分散存储在多个物理节点上的数据库系统,这些节点通过网络进行连接和通信,对外呈现出一个统一的逻辑数据库,用户或应用程序可以像…

TB1801D 线性驱动 LED 恒流芯片

1、产品概述 TB1801D是一款专为12V灯珠设计的汽车灯专用的低压差恒流芯片,输出电流恒流精度≤3%,外围结构简单。TB1801D 内置 130℃过温保护电路,可在各种散热条件下将 LED 灯珠温度控制在 140℃以内。TB1801D 内置 100V 的功率 M…

HTML——38.Span标签和字符实体

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>span标签和字符实体</title><style type"text/css">h1{text-align: center;}p{text-indent: 2em;}span{color: red;}</style></head><…

纯血鸿蒙ArkUI线性布局详解

线性布局说明 线性布局&#xff08;LinearLayout&#xff09;是开发中最常用的布局&#xff0c;通过线性容器Row和Column构建。线性布局是其他布局的基础&#xff0c;其子元素在线性方向上&#xff08;水平方向和垂直方向&#xff09;依次排列。线性布局的排列方向由所选容器组…

Debian-linux运维-docker安装和配置

腾讯云搭建docker官方文档&#xff1a;https://cloud.tencent.com/document/product/213/46000 阿里云安装Docker官方文档&#xff1a;https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常见docker源配置指导&#xff1a;htt…

【网络安全实验室】脚本关实战详情

难道向上攀爬的那条路&#xff0c;不是比站在顶峰更让人热血澎湃吗 1.key又又找不到了 点击链接&#xff0c;burp抓包&#xff0c;发送到重放模块&#xff0c;点击go 得到key 2.快速口算 python3脚本 得到key 3.这个题目是空的 试了一圈最后发现是 4.怎么就是不弹出key呢…

极品飞车6的游戏手柄设置

极品飞车&#xff0c;既可以用键盘来控制车辆的前进、后退、左转、右转、加速与减速&#xff0c;也可以使用游戏手柄来操作车辆的运行。需要注意的是&#xff0c;极品飞车虽然支持手柄&#xff0c;但是仅支持常见的北通、罗技还有部分Xbox系列的手柄&#xff0c;至于其他的PS4手…

安科瑞防孤岛保护装置助力光储充系统安全运行

安科瑞 吕梦怡 ​1.孤岛效应是指在电网供电系统中出现的一种异常情况。 当公共电网因故障停电或者其他原因断电时&#xff0c;原本接入电网的分布式发电系统&#xff08;如太阳能电站、风力发电场&#xff09;如果没有及时与电网断开&#xff0c;就会继续向其周围的一部分用电…