13.2 【Linux】帐号管理

news2024/11/25 3:00:30

13.2.1 新增与移除使用者: useradd, 相关配置文件, passwd,usermod, userdel

我们登陆系统时会输入(1)帐号与 (2)密码, 所以创建一个可用的帐号同样的也需要这两个数据。那帐号可以使用 useradd 来新建使用者,密码的给予则使用 passwd 这个指令!这两个指令下达方法如下:

useradd

其实系统已经帮我们规定好非常多的默认值了,所以我们可以简单的使用“ useradd 帐号 ”来创建使用者即可。 CentOS 这些默认值主要会帮我们处理几个项目:

在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;

在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;

在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;

在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700

由于在 /etc/shadow 内仅会有密码参数而不会有加密过的密码数据,因此我们在创建使用者帐号时, 还需要使用“ passwd 帐号 ”来给予密码才算是完成了使用者创建的流程。如果由于特殊需求而需要改变使用者相关参数时, 就得要通过上述表格中的选项来进行创建了,参考下面的案例:

在这个范例中,我们创建的是指定一个已经存在的群组作为使用者的初始群组,因为群组已经存在, 所以在 /etc/group 里面就不会主动的创建与帐号同名的群组了! 此外,我们也指定了特殊的 UID 来作为使用者的专属 UID 。了解了一般帐号后,我们来瞧瞧那啥是系统帐号(system account)

我们在谈到 UID 的时候曾经说过一般帐号应该是 1000 号以后,那使用者自己创建的系统帐号则一般是小于 1000 号以下的。 所以在这里我们加上 -r 这个选项以后,系统就会主动将帐号与帐号同名群组的 UID/GID 都指定小于 1000 以下, 在本案例中则是使用 699(UID) 与699(GID)。此外,由于系统帐号主要是用来进行运行系统所需服务的权限设置, 所以系统帐号默认都不会主动创建主文件夹的。

由这几个范例我们也会知道,使用 useradd 创建使用者帐号时,其实会更改不少地方,至少我们就知道下面几个文件:

使用者帐号与密码参数方面的文件:/etc/passwd, /etc/shadow

使用者群组相关方面的文件:/etc/group, /etc/gshadow

使用者的主文件夹:/home/帐号名称

useradd 参考档

其实 useradd 的默认值可以使用下面的方法调用出来:

GROUP=100:新建帐号的初始群组使用 GID 为 100 者

系统上面 GID 为 100 者即是 users 这个群组,此设置项目指的就是让新设使用者帐号的初始群组为 users 这一个的意思。 但是我们知道 CentOS 上面并不是这样的,在 CentOS 上面默认的群组为与帐号名相同的群组。 举例来说, vbird1 的初始群组为 vbird1 。怎么会这样啊?这是因为针对群组的角度有两种不同的机制所致, 这两种机制分别是:

私有群组机制:

系统会创建一个与帐号一样的群组给使用者作为初始群组。 这种群组的设置机制会比较有保密性,这是因为使用者都有自己的群组,而且主文件夹权限将会设置为 700 (仅有自己可进入自己的主文件夹) 之故。使用这种机制将不会参考 GROUP=100 这个设置值。代表性的distributions 有 RHEL, Fedora, CentOS 等;

公共群组机制:

就是以 GROUP=100 这个设置值作为新建帐号的初始群组,因此每个帐号都属于 users 这个群组, 且默认主文件夹通常的权限会是“ drwxr-xr-x ... username users ... ”,由于每个帐号都属于 users 群组,因此大家都可以互相分享主文件夹内的数据之故。代表 distributions 如SuSE等。

由于我们的 CentOS 使用私有群组机制,因此这个设置项目是不会生效的。

HOME=/home:使用者主文件夹的基准目录(basedir)

使用者的主文件夹通常是与帐号同名的目录,这个目录将会摆放在此设置值的目录后。所以vbird1 的主文件夹就会在 /home/vbird1/ 了。

INACTIVE=-1:密码过期后是否会失效的设置值

第七个字段的设置值将会影响到密码过期后, 在多久时间内还可使用旧密码登陆。这个项目就是在指定该日数。如果是 0 代表密码过期立刻失效, 如果是 -1 则是代表密码永远不会失效,如果是数字,如 30 ,则代表过期 30 天后才失效。

EXPIRE=:帐号失效的日期

是 shadow 内的第八字段,你可以直接设置帐号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设置此项目,但如果是付费的会员制系统,或许这个字段可以设置。

SHELL=/bin/bash:默认使用的 shell 程序文件名

系统默认的 shell 就写在这里。假如你的系统为 mail server ,你希望每个帐号都只能使用email 的收发信件功能, 而不许使用者登陆系统取得 shell ,那么可以将这里设置为/sbin/nologin ,如此一来,新建的使用者默认就无法登陆! 也免去后续使用 usermod 进行修改的手续。

SKEL=/etc/skel:使用者主文件夹参考基准目录

举我们的范例一为例, vbird1 主文件夹 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的。所以,未来如果我想要让新增使用者时,该使用者的环境变量 ~/.bashrc 就设置妥当的话,您可以到 /etc/skel/.bashrc去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的主文件夹下就会有 www 那个目录了。

CREATE_MAIL_SPOOL=yes:创建使用者的 mailbox

使用“ ll /var/spool/mail/vbird1 ”看一下,会发现有这个文件的存在。这就是使用者的邮件信箱。

除了这些基本的帐号设置值之外, UID/GID 还有密码参数又是在哪里参考的呢?那就得要看一下 /etc/login.defs 。 这个文件的内容有点像下面这样:

这个文件规范的数据则是如下所示:

mailbox 所在目录: 使用者的默认 mailbox 文件放置的目录在 /var/spool/mail,所以vbird1 的 mailbox 就是在 /var/spool/mail/vbird1。

shadow 密码第 4, 5, 6 字段内容: 通过 PASSMAX_DAYS 等等设置值来指定的。要注意的是,由于目前我们登陆时改用 PAM 模块来进行密码检验,所以那个 PASS_MIN_LEN是失效的。

UID/GID 指定数值: 虽然 Linux 核心支持的帐号可高达 232 这么多个,不过一部主机要作出这么多帐号在管理上也是很麻烦的! 所以在这里就针对 UID/GID 的范围进行规范就是了。上表中的 UID_MIN 指的就是可登陆系统的一般帐号的最小 UID ,至于 UID_MAX则是最大 UID 之意。

要注意的是,系统给予一个帐号 UID 时,他是 (1)先参考 UID_MIN 设置值取得最小数值; (2)由 /etc/passwd 搜寻最大的 UID 数值, 将 (1) 与 (2) 相比,找出最大的那个再加一就是新帐号的 UID 了。我们上面已经作出 UID 为 1500 的 vbird2 , 如果再使用“ useradd vbird4 ”时,你猜 vbird4 的 UID 会是多少?答案是: 1501 。 所以中间的1004~1499 的号码就空下来。

而如果我是想要创建系统用的帐号,所以使用 useradd -r sysaccount 这个 -r 的选项时,就会找“比 201 大但比 1000 小的最大的 UID ”就是了。

使用者主文件夹设置值: 为何我们系统默认会帮使用者创建主文件夹?就是这个“CREATE_HOME = yes”的设置值。这个设置值会让你在使用 useradd 时, 主动加入“ -m ”这个产生主文件夹的选项。如果不想要创建使用者主文件夹,就只能强制加上“-M ”的选项在 useradd 指令执行时。至于创建主文件夹的权限设置呢?就通过 umask这个设置值。因为是 077 的默认设置,因此使用者主文件夹默认权限才会是“ drwx------ ”

使用者删除与密码设置值: 使用“USERGROUPS_ENAB yes”这个设置值的功能是: 如果使用 userdel 去删除一个帐号时,且该帐号所属的初始群组已经没有人隶属于该群组了, 那么就删除掉该群组,举例来说,我们刚刚有创建 vbird4 这个帐号,他会主动创建vbird4 这个群组。 若 vbird4 这个群组并没有其他帐号将他加入支持的情况下,若使用userdel vbird4 时,该群组也会被删除的意思。 至于“ENCRYPT_METHOD SHA512”则表示使用 SHA512 来加密密码明文,而不使用旧式的 MD5。

使用 useradd 这支程序在创建 Linux 上的帐号时,至少会参考:

/etc/default/useradd

/etc/login.defs

/etc/skel/*

这些文件,不过,最重要的其实是创建 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow还有使用者主文件夹。如果你了解整个系统运行的状态,也是可以手动直接修改这几个文件就是了。

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

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

相关文章

深度剖析数据在内存中的储存

深度剖析数据在内存中的储存 整形在内存的储存大小端浮点型在内存中的存储浮点数在内存中存储规则 整形在内存的储存 #include <stdio.h> int main() {int a 0x11223344; }将整形a赋值为0x11223344 然后监视内存的地址 将地址在内存调试窗口中搜索&#xff0c;可以找到…

【MySQL】SQL性能分析 (七)

&#x1f697;MySQL学习第七站~ &#x1f6a9;本文已收录至专栏&#xff1a;MySQL通关路 ❤️文末附全文思维导图&#xff0c;感谢各位点赞收藏支持~ 假如我们需要对SQL进行优化&#xff0c;我们就必须对他足够的了解&#xff0c;比如 对哪一类SQL进行优化&#xff08;增删改查…

【计算机组成原理】24王道考研笔记——第二章 数据的表示和运算

第二章 数据的表示和运算 一、数值与编码 1.1 进制转换 任意进制->十进制&#xff1a; 二进制<->八进制、十六进制&#xff1a; 各种进制的常见书写方式&#xff1a; 十进制->任意进制&#xff1a;&#xff08;用拼凑法最快&#xff09; 真值&#xff1a;符合人…

【C/C++】类之间的横向关系

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Qt曲线绘制-QChart使用(一)

最近打算研究一下qt绘制曲线图&#xff0c;以前项目中绘制曲线图都是纯painter画的&#xff0c;查了一下才发现qt关于曲线的图绘制有自带的qchart&#xff0c;还有第三方的qcustomplot、qwt、echarts等等&#xff0c;先研究QChart&#xff0c;QChart是Qt5.7之后才有的并且安装q…

基于antd@5.x封装Form.List组件

基于antd5.x封装Form.List组件 使用案例 const initFormState {formList1: [{start: 测试,end: 100,},{start: abc,end: value,},],formList2: [{start: 测试2,end: 6,},{start: vxcv,end: jksdhfjk,},], };<Formform{form}onFinish{onFinish}autoCompleteoffinitialValue…

源码对接微软Azure OpenAI 规范注意点

众所周知&#xff0c;我们是访问不通OpenAI官方服务的&#xff0c;但是我们可以自己通过代理或者使用第三方代理访问接口 现在新出台的规定禁止使用境外的AI大模型接口对境内客户使用&#xff0c;所以我们需要使用国内的大模型接口 国内的效果真的很差&#xff0c;现在如果想合…

【RabbitMQ】RabbitMQ集群搭建(Docker版本)

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

react+redux异步操作数据

reactredux异步操作数据 redux中操作异步方法&#xff0c;主要是&#xff1a; 1、借助createAsyncThunk()封装异步方法&#xff1b;2、通过extraReducers处理异步方法触发后的具体逻辑&#xff0c;操作派生的state 1、异步操作的slice import { createSlice, createAsyncThunk…

关于Docker的基本概念和使用

关于Docker的基本概念和使用 一、Docker 概述1、Dcker的概念2、容器的优势3、Docker与虚拟机的区别4、容器在内核中支持2种重要技术5、Docker核心概念 二、安装 Docker1、安装依赖包2、设置阿里云镜像源3、安装 Docker-CE并设置为开机自动启动3、查看 docker 版本信息4、docker…

【蓝图】p36-p39蓝图通信、自定义事件、类型转换、角色移动速度、触发加速

p36-p39蓝图通信、自定义事件、类型转换、角色移动速度、触发加速 p36蓝图通信和自定义事件蓝图通信自定义事件 p37类型转换加速功能类型转换 p38创建自定义事件p39实现触发加速 p36蓝图通信和自定义事件 蓝图通信 在Unreal Engine&#xff08;UE&#xff09;中&#xff0c;蓝…

【开源项目】低代码数据可视化开发平台go-view

数据可视化开发平台go-view 基本介绍 GoView 是一个Vue3搭建的低代码数据可视化开发平台&#xff0c;将图表或页面元素封装为基础组件&#xff0c;无需编写代码即可完成业务需求。 它的技术栈为&#xff1a;Vue3 TypeScript4 Vite2 NaiveUI ECharts5 Axios Pinia2 Plop…

Vite + Vue3 + Ts 【免key、免账号实战本地运行GPT】

&#x1f414; 前期回顾 Vue3 Ts Vite —— 封装庆祝彩屑纷飞 示例_彩色之外的博客-CSDN博客封装 彩屑纷飞 示例https://blog.csdn.net/m0_57904695/article/details/131718019?spm1001.2014.3001.5501 目录 &#x1f30d; 公网 &#x1f6f9; 本地 &#x1fa82; 源码 &…

LeetCode[1508]子数组和排序后的区间和

难度&#xff1a;Medium 题目&#xff1a; 给你一个数组 nums &#xff0c;它包含 n 个正整数。你需要计算所有非空连续子数组的和&#xff0c;并将它们按升序排序&#xff0c;得到一个新的包含 n * (n 1) / 2 个数字的数组。 请你返回在新数组中下标为 left 到 right &#…

某康视频插件无法在chrome正常播放解决方法

使用低版本谷歌浏览器&#xff08;94版本以下&#xff09; 在谷歌浏览器中地址栏输入 chrome://flags/ &#xff0c; 搜索secure&#xff0c;找到 Allow invalid certificates for resources loaded from localhost&#xff08;启用它&#xff09;&#xff0c;找到Block insecu…

JavaSwing+MySQL的物业管理系统

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88081588?spm1001.2014.3001.5503 JDK1.8、MySQL5.7 《数据库应用系统》课程设计报告 题 目: 居民小区物业管理系统的设计与实现 目录 1 引言 1 2 系统需求描述 1 2.1 业务需求 1 2.2 …

怎么使用css写可视化常见的背景和元素

4个角的背景加背景颜色 .line-bg {--width: 2px;--height: 10px;--color: v-bind(colorConfig.visial.normal);background-color: rgba(255, 255, 255, 0.05);background-image: linear-gradient(to bottom, var(--color) var(--width), transparent 1px),linear-gradient(to r…

行云创新 CloudOS 助力上汽乘用车企业云原生IT架构变革

近日&#xff0c;在2023架构可持续未来峰会成都制造业分会场上&#xff0c;上海汽车集团股份有限公司乘用车公司基础架构部主管茹洋带来了议题为《云原生时代上汽乘用车企业IT架构变革和实践》的精彩演讲。他从云原生对于企业IT架构的意义、企业IT架构变革的必要性入手&#xf…

智能优化算法:塘鹅优化算法-附代码

智能优化算法&#xff1a;塘鹅优化算法 文章目录 智能优化算法&#xff1a;塘鹅优化算法1.塘鹅优化算法1.1种群初始化1.2探索阶段1.3开发阶段 2.实验结果3.参考文献4.Matlab5.python 摘要&#xff1a;塘 鹅 优 化 算 法&#xff08;Gannet Optimization Algorithm&#xff0c; …

Flutter、Android Studio 安装详细步骤以及常错解决

目录 一、前言 二、介绍 三、安装 (一&#xff09;、安装Flutter SDK 1&#xff09;双击文件夹&#xff0c;打开之后就是这样&#xff1a;​编辑 2&#xff09;双击此文件&#xff1a;​编辑 3&#xff09;此过程问题&#xff1a; (二&#xff09;、配置 Flutter SDK 环…