Linux手动创建用户不使用useradd【七步走完成】

文章目录

      • 第一步:修改 /etc/passwd 文件
      • 第二步:修改 /etc/shadow 文件
      • 第三步:修改 /etc/group 文件
      • 第四步:新建用户家目录
      • 第五步:复制/etc/skel目录下的环境变量配置文件到家目录下
      • 第六步:修改家目录的权限和属主
      • 第七步:创建邮箱文件
      • 确认用户创建成功


  • 环境: CentOS7.6

  • 需求: 手动新建一个用户,用户名为zhangsan,uid设置为1024(前提是这个uid没有被占用),gid也设置为1024,组名与用户名同名,家目录在/home/zhangsan、默认shell为/bin/bash


注意:以下步骤都是使用root用户进行,部分命令和操作只有root用户才有权限。

第一步:修改 /etc/passwd 文件

  • vim 打开 /etc/passwd 文件追加一行信息

在这里插入图片描述

/etc/passwd文件的每一行代表一个用户的信息,用冒号分隔的每一个字段分别代表不同的含义。

  • 第一个字段:用户名
  • 第二个字段:密码,这里的 x 仅仅是一个标识,真正的密码加密保存在 /etc/shadow 中
  • 第三个字段:UID
  • 第四个字段:GID
  • 第五个字段:用户描述信息,可不填
  • 第六个字段:用户家目录位置
  • 第七个字段:默认shell

修改完成,:wq保存退出。


第二步:修改 /etc/shadow 文件

  • 用 vim 打开 /etc/shadow 文件,打开会提示正在修改一个只读文件
  • 可以看一下,shadow 文件啥权限啥也没有

在这里插入图片描述

  • 在 shadow 文件的最后追加一行信息。

在这里插入图片描述

  • 修改完毕,使用 wq! 保存退出,不然又会给出警告,无法保存。

shadow文件同样是一行一个用户的信息,每个字段有不同含义。

  • 第一个字段:用户名
  • 第二个字段:密码。有密码的用户在这里都是一串加密过的字符。这里我填了两个叹号,表示没有密码。
  • 第三个字段:从1970/01/01到最近一次密码修改经过的时间,以天为单位。
  • 第四个字段:密码过多久可以被修改,0表示随时可改。
  • 第五个字段:密码的有效期
  • 第六个字段:密码要过期前多少天提醒用户,7就是提前一周提醒。
  • 第七个字段:密码过期后多少天之内还能登录,但是要登录必须改密码。
  • 第八个字段:密码的最长使用期限
  • 第九个字段:系统保留字段

第三步:修改 /etc/group 文件

  • 在最后追加如下信息

在这里插入图片描述

group 文件一行有四个字段

  • 第一个字段是组名
  • 第二个字段是组密码,这里的 x 和 /etc/passwd 的密码字段差不多。
  • 第三个字段就是GID
  • 第四个字段是组中的用户,如果该组是某个用户的主要组,那么这个用户不会显示在这个字段里,因此这里我空着。

第四步:新建用户家目录

mdkir /home/zhangsan

第五步:复制/etc/skel目录下的环境变量配置文件到家目录下

cp /etc/skel/.bash* /home/zhangsan && ls -al /home/zhangsan

在这里插入图片描述

第六步:修改家目录的权限和属主

  • 到现在为止,用户 zhangsan 的家目录和其中的所有文件都是root用户的

在这里插入图片描述

  • 将这些文件的归属权给 zhangsan,并修改文件权限
  • 将用户 zhangsan 的家目录 /home/zhangsan 的属主和组修改为 zhangsan
chown -R zhangsan:zhangsan /home/zhangsan
  • 修改文件的权限,只允许属主有读写权限,其他用户和组没有任何权限
chmod 700 /home/zhangsan
  • 修改后的结果如下

在这里插入图片描述

第七步:创建邮箱文件

  • 创建邮箱文件
touch /var/spool/mail/zhangsan
  • 同样需要修改邮箱的所有者
chown zhangsan:zhangsan /var/spool/mail/zhangsan
  • 同样需要修改邮箱的所有者
chown zhangsan:zhangsan /var/spool/mail/zhangsan

确认用户创建成功

在这里插入图片描述

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

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

相关文章

AI基础知识(2)--决策树,神经网络

1.什么是决策树? 决策树是一类常见的机器学习方法,决策树是基于树的结构来进行决策。决策过程中提出的每一个问题都是对于属性的“测试”,决策的最终结论对应了我们希望的判定结果。一个决策树包含一个根节点,若干个内部节点和若…

这个简单的生活方式,为你带来满满的幸福感

在今天文章的开头,我想请你思考一个问题:影响幸福感的最大因素是什么? 不妨先想一想,再往下拉,继续阅读。 可能不少朋友的回答,会是财富、事业、理想、生活环境、社会地位…… 这些因素当然对幸福感都非常重…

震惊!多数408院校复试线炸穿天际!

兄弟们,别盯着408有多难,你去看看408有多卷 都说408难,可是都去卷408,这是什么意思,一个个的算盘打的比谁都精 还不是因为考408的院校多,机会比较多,不像自命题不好换学校,全国一共…

模板(初阶)

一、介绍: 1.1模板目的: 将重复的活,从程序员手中交给编译器执行。 1.2泛型编程: 编写与类型无关的通用代码,实现代码的复用。 二、函数模板: 2.1函数模板: 函数模板代表了一个函数家族&…

spring boot3登录开发-2(2短信验证码接口实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 短信验证码接口实现 1.依赖导入 2.接口分析 3.实现思路 3.功能实现 创建发送短信…

QT的学习

代码练习 做一个UI登录页面 源文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setWindowTitle("洛克启动!");this->…

Cinema 4D 2024 for mac/Win:开启三维动画与建模新纪元

在数字化时代,三维动画与建模已成为影视、游戏、广告等多个领域不可或缺的创作工具。而Cinema 4D,作为这一领域的佼佼者,始终以其卓越的性能和创新的功能引领着行业的发展。如今,Cinema 4D 2024的发布,更是为我们带来了…

【数据结构与算法】(14):堆排序和选择排序(超详细配图~)

🤡博客主页:Code_文晓 🥰本文专栏:数据结构与算法 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多数据结构与算法点击专栏链接查看&…

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示 前端页面加载触发代码: import { getCodeImg } from "/api/login&q…

HarmonyOS(鸿蒙)ArkUI组件

方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面…

jar读取目录配置、打包jar后无法获取目录下的配置

jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…

Windows系统部署GoLand结合内网穿透实现SSH远程Linux服务器开发调试

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-HIOuHATnug3qMHzx {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

es 聚合操作(二)

书接上文,示例数据在上一篇,这里就不展示了 一、Pipeline Aggregation 支持对聚合分析的结果,再次进行聚合分析。 Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类: Sibling - 结果和现有…

③【Docker】Docker部署Nginx

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ③【Docker】Docker部署Nginx docker拉取nginx…

聚焦两会:数字化再加速,VR全景助力制造业转型

近年来,随着信息技术、人工智能、VR虚拟现实等新兴技术的不断涌现,数字化正日益成为推动当今经济发展的新驱动力。在不久前的两会上,数字化经济和创新技术再度成为热门话题: 国务院总理李强作政府工作报告: 要深入推…

【Session】Tomcat Session 集群

设备 nginx:192.168.67.11 tomcat1:192.168.67.12 tomcat2:192.168.67.13安装nginx (192.168.67.11) #关闭防火墙和安全机制 [roottest1 ~]# systemctl stop firewalld [roottest1 ~]# setenforce 0#安装epel源 [ro…

Postman接口做关联测试的方法步骤

应用场景 假设下一个接口登录需要上一个接口的返回值,例如请求需要先登录获取到token,下一个请求要携带对应的token才能进行请求 方法:通过设置全局变量/环境变量 方法一:设置全局变量 1.先请求登录接口,请求成功之后…

HarmonyOS ArkTS 开发基础/语言

目录 一、ArkUI (方舟开发框架) 概述 1.1 基本概念 1.2 两种开发范式 1.3 不同应用类型支持的开发范式 二、ArkTS 声明式开发范式 2.1 开发能力 2.2 整体架构 三、ArkTS 基础类型 3.1 Any 类型 3.2 数字类型 3.3 字符串类型 3.4 布尔类型 3.5 联合类型 3.6 数组类…

【leetcode】67.二进制求和

前言:剑指offer刷题系列 问题: 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例: 输入:a "1010", b "1011" 输出:"10101"思路1: …

Kotlin,简直是 Java 的 Pro Max!(笔记4 协程篇)

目录 Kotlin 协程 为什么引入协程? 协程和线程有什么区别? 协程的使用 依赖 GlobalScope.launch runBlocking 创建多个协程 delay suspend 关键字 coroutineScope job async withContext 函数 Kotlin 协程 为什么引入协程? 1. …