Linux学习笔记——用户管理
一、用户管理命令
useradd #用户增加命令
usermod #用户修改命令
passwd #密码修改命令
userdel #用户删除命令
su #用户提权命令
1、useradd命令(加用户):
创建并设置用户信息,使用useradd命令可以自动完成用户信息,基本组,家目录等创建工作,并在创建过程中对用户初始信息进行定制。
语法格式:useradd 参数 用户名

实例:
useradd test1 #创建指定用户信息

user -M -s /sbin/nologin test2 #创建指定用户信息,但不创建家目录,也不能登录。
useradd -u 6688 test3 #创建指定用户信息,并自定义UID值
useradd -G root test4 #创建指定用户信息,并追加指定组为该用户
useradd -e "2025/06/01" test5 #创建一个临时用户
当系统没有给新建的用户添加密码时,只能通过root用户登陆,同为用户需要密码,而新建的用户没有设置密码所以不能登陆。
2、passwd命令(加密码):
passwd命令来自password的缩写,其功能是修改用户的密码值。
同时也可以对用户进行锁定等操作,但需要管理员身份才能执行。
当使用useradd命令添加用户之后,默认给用户不能登陆,因为没有设置密码值。
只有设置了密码之后,才可以登陆。
语法格式:passwd 参数 用户名

passwd #修改当前用户密码
passwd test1 #修改指定用户的密码(需要root管理员)
passwd -l test1 #锁定指定用户的密码值,不允许其修改;
passwd -u test1 #解锁指定用户的密码值,允许其修改;
passwd -e test2 #在下次登陆时强制修改密码
passwd -d test2 #删除指定用户的密码值
passwd -S test3 #查看指定用户的密码状态
扩展:重置root密码的方法:
1、首先重启系统,然后快速按下e键进入GRUB界面,
2、然后在最后一行之前输入rd.break,如图:
3、输入好后,按ctrl+x来重启系统。
重启系统后,按任意键继续,然后在第一个命令提示符下输入
mount -o remount,rw /sysroot #重新挂载文件系统
输入好后回车,在输入
mount |grep sysroot #判断成功与否
然后回车。
然后在命令提示符下输入如下命令:
chroot /sysroot/ #改变系统目录为临时目录
echo 123 |passwd --stdin root #修改root密码为123
touch /.autorelabel #重新标记SElinux环境值文件
然后输入两次exit来退出。
然后系统就会自动重启。密码修改成功。
Linux救援模式===》单用户模式
3、usermod命令:
usermod命令(user modify),其功能是修改用户信息中的各项参数,在创建用户后发现信息错误,可以不用删除,用usermod命令直接修改用户信息,并且参数会立即生效。
语法格式:usermod 参数 用户名

实例:
usermod -d /home/testA test1 #修改指定用户的家目录路径,不能有用户正在使用该账号。
usermod -u 6666 test1 #修改用户ID为6666
查用户ID:vim /etc/passwd
修改前:
修改后:![]()
对于用户来说该账号的名称为:test1,而对于系统来说该账号的名称为6666
usermod -l newname test1 #修改指定用户名称为newname
在/etc/passwd里面修改成功
,而用户的家目录没有发生变化。![]()
usermod -L test1 #锁定指定的用户,临时不允许登陆系统,使用xshell登陆不上去
usermod -U test1 #解锁指定用户,再次允许登陆系统
4、userdel命令
(user delete),功能为删除用户信息。在Linux系统中一切都是文件,用户信息被存在/etc/passwd和/etc/shadow以及/etc/group文件中,
故使用userdel命令实际上是删除指定用户在上述三个文件中的对应信息。
语法格式:userdel 参数 用户名

实例:
userdel test1 #删除指定用户
userdel -r test2 #删除用户信息以及家目录,何其所有子文件
扩展:将用户从用户组中删除:gpasswd -d <用户名称> <用户组名>
5、su命令
su命令来自于switch user的缩写,其功能是切换用户身份。
将管理员切换至任意用户身份无序进行密码认证,而将普通用户切换到任意用户身份均需密码验证。另外,添加的单个减号(-)参数表示完全的身份变更,不保留之前的用户任何的环境变量信息。
语法格式:su 参数 用户名

实例:
su test 与 su - test 的区别:

解决问题:XXX不在sudoers文件中,此事将被报告
修改/etc/sudoer即可:
su root
chmod 777 /etc/sudoers
vim /etc/sudoers
在root那行添加:XXX ALL=(ALL) ALL
保存退出
chmod 440 /etc/sudoers
再返回自己的是身份。
之后再次执行。
二、用户组管理命令
groupadd #用户组添加命令
groupmod #用户组修改命令
groupwd #用户组密码设置命令
groupdel #用户组删除命令
1、groupadd命令:
groupadd命令的功能是创建新的用户组,每个用户在创建的时候都有一个与其同名的基本组,后期可以使用groupadd命令创建新的用户组信息,让更多的用户加入到指定的扩展组。
语法格式:group 参数 用户组

实例:
groupadd newgroup1 #创建一个新的用户组
groupadd -g 6688 newgroup2 #创建一个新的用户组,并指定用户组ID
groupadd -r newgroup3 #创建新的用户组,设定为系统工作组
#1000以内的编号是系统组,1000普通用户组
添加用户组以后:/etc/group会发生变化。
扩展:
新建用户将其加入到指定的用户组之中,作为其主用户组(每个用户有且仅有一个用户组)
useradd -g <用户组名> <用户名>
useradd -g xxx yyy #-g是加入主要组
或新建用户并将其加入指定附属组,一个用户可以有多个附属组,多个附属组名称用逗号隔开。
useradd -G <用户组名> <用户名>
useradd -G xxx yyy #G是加入附属组
1、主要群组:每个文件都必须有一个组的所有者,因此必须有一个与每个用户相关的默认组。这个默认组成为新建文件的组所有者,被称为用户的主要群组。用户的主要群组再passwd中的第四个字段中定义。
2、次要群组:除了主要群组,用户也可以根据需要再隶属于其他的群组,这些群组称为次要群组,再group文件中第四个字段中定义。
#将已有的用户添加到指定的用户组
#将已有的用户添加到指定的用户组,作为其附属用户组
#-a代表append和-G一起使用,将用户添加到新用户组中而不避开原有的其他用户组。
usermod -g <新用户组名> <旧用户组名>
#将已有用户的主用户组修改为其他新的用户组
usermod -g <新用户组名> <旧用户组名>
权限中第二个为组权限,对于同组的人来说如果权限开放,可以互相进入对方的~(home)
2、groupmod命令:
“group modify”,作用是用于更改群组属性。linux系统下的群组信息一般不建议修改,因为涉及已加入的用户的归属问题,尤其是群组名称,组GID,一定要确认好后再操作。
语法格式:groupmod 参数 群族名

实例:
groupmod -n newgroupA oldgroupB #更改指定的用户组名称
groupmod -g 8888 newgroupA #更改指定用户组识别码
3、groupdel命令:
delete a group 其功能是用于删除用户组,Linux系统中的用户组信息被保存在/etc/group和/etc/gshadow中,手动删除对应的信息即可,亦可以使用groupdel命令删除。
语法格式:groupdel [参数] 群组名
常用参数:
-f 强制删除
-h 显示帮助信息
实例:
groupdel newgroup #删除指定名称的用户组
groupdel -f newgroup #强制删除指定名称的用户组
三、用户配置文件
在Linux系统中,用户名,密码,用户组,和用户组密码都是保存在不同的配置文件中。
/etc/passwd 用于保存用户的账号文件
/etc/shadow 用于保存用户的密码文件 ===>useradd,passwd
/etc/group 用于保存用户组的文件
/etc/gshadow 用于保存用户组密码的文件 ===>groupadd,gpasswd
/etc/skel 保存用户家目录隐藏文件
/etc/default/useradd 用于定义添加用户的信息文件 ===>用户配置文件
相关文章:
Linux学习笔记——用户管理
一、用户管理命令 useradd #用户增加命令 usermod #用户修改命令 passwd #密码修改命令 userdel #用户删除命令 su #用户提权命令 1、useradd命令(加用户): 创建并设置用户信息,使用us…...
【AI】【本地部署】OpenWebUI的升级并移植旧有用户信息
【背景】 OpenWebUI的版本升级频率很高,并会修改旧版本的Bug,不过对于已经在使用的系统,升级后现有用户信息都会丢失,于是研究如何在升级后将现有的用户信息移植到升级后版本。 【准备工作】 OpenWebUI的升级步骤在Docker中有现…...
从synchronized到ReentrantLock_Java锁机制的演进与选择
1 引言 在Java并发编程中,锁机制是确保线程安全的关键。synchronized关键字和显式锁(如ReentrantLock)是两种常用的锁机制。本文将深入探讨这两种锁的工作原理、优缺点,并分析它们在不同场景下的最佳选择,帮助开发者做出明智的选择。 2 synchronized关键字详解 synchro…...
PyCharm接入DeepSeek实现AI编程
目录 效果演示 创建API key 在PyCharm中下载CodeGPT插件 配置Continue DeepSeek 是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的 AI 模型。DeepSeek-V3 是 DeepSeek 公司推出的最新一代 AI 模型。其前身是 DeepSeek-V2.5,经过持续的…...
21款炫酷烟花合集
系列专栏 《Python趣味编程》《C/C趣味编程》《HTML趣味编程》《Java趣味编程》 写在前面 Python、C/C、HTML、Java等4种语言实现18款炫酷烟花的代码。 Python Python烟花① 完整代码:Python动漫烟花(完整代码) Python烟花② 完整…...
数论问题75
命题,证明:存在K∈N,使得对于每个n∈N,Kx2^n1都是合数。 证明:设n2^m,当m0,1,2,3,4时,a(m)2^(2^m)1都是素数。 a(0)213,a(1)2^215,a(2)2^4117&…...
zyNo.15(Web题型总结1)
web 一、工具使用 1.sqlmap使用 在目录页输入cmd就可以打开程序 使用方法查看输入python sqlmap.py --help 二、web攻防知识体系 新手村 WEB CTF入门 md5绕过、变量覆盖、随机数问题 sql注入 MySQL注入介绍与联合…...
将 OneLake 数据索引到 Elasticsearch - 第 1 部分
作者:来自 Elastic Gustavo Llermaly 学习配置 OneLake,使用 Python 消费数据并在 Elasticsearch 中索引文档,然后运行语义搜索。 OneLake 是一款工具,可让你连接到不同的 Microsoft 数据源,例如 Power BI、Data Activ…...
Spring Boot多环境配置实践指南
在开发Spring Boot应用时,我们常常需要根据不同的运行环境(如开发环境、测试环境和生产环境)来配置不同的参数。Spring Boot提供了非常灵活的多环境配置机制,通过使用profile-specific properties文件,我们可以轻松地管…...
C++11中array容器的常见用法
文章目录 一、概述二、std::array的特点三、std::array的定义与初始化三、std::array的常用成员函数四、与 C 风格数组的互操作 一、概述 在 C11 中,std::array 是一个新的容器类型,它提供了一个固定大小的数组封装。相比传统的 C 风格数组,…...
NFTs 是网络艺术,而非数字艺术
传统艺术界对 NFTs 的误解 传统艺术界(包括博物馆、策展人等)常常认为: “我们收藏和策展数字艺术已经数十年了。我们非常了解这个领域。或许少数 NFT 可以被视为优秀的数字艺术,但更多的只是糟糕的数字艺术,甚至根本称…...
澳洲硕士毕业论文写作中如何把握主题
每到毕业季时,澳洲硕士毕业论文写作是留学生学业的头等大事。但是经常有留学生在澳洲毕业论文写作过程中会遇到写了一半,但是不知道应该如何继续下去的问题。有时候是在literature review的部分就越写越觉得偏离了方向,有时候是在数据收集阶段…...
SQL server 数据库使用整理
标题:SQL server 数据库使用整理 1.字符串表名多次查询 2.读取SQL中Json字段中的值:JSON_VALUE(最新版本支持,属性名大小写敏感) 1.字符串表名多次查询 SELECT ROW_NUMBER() OVER (ORDER BY value ASC) rowid,value…...
在Windows系统中本地部署属于自己的大语言模型(Ollama + open-webui + deepseek-r1)
文章目录 1 在Windows系统中安装Ollama,并成功启动;2 非docker方式安装open-webui3下载并部署模型deepseek-r1 Ollama Ollama 是一个命令行工具,用于管理和运行机器学习模型。它简化了模型的下载与部署,支持跨平台使用,…...
nosql mysql的区别
NoSQL 和 MySQL 是两种不同类型的数据库管理系统,它们在设计理念、数据模型、可扩展性和应用场景等方面有着本质的区别。 NoSQL 数据库 特点: 灵活的数据模型: NoSQL 数据库通常没有固定的表结构,可以很容易地存储不同结构的文档或键值对。水平扩展: …...
DeepSeek辅助学术写作摘要内容
学术摘要写作 摘要是文章的精华,通常在200-250词左右。要包括研究的目的、方法、结果和结论。让AI工具作为某领域内资深的研究专家,编写摘要需要言简意赅,直接概括论文的核心,为读者提供快速了解的窗口。 下面我们使用DeepSeek编…...
网络工程师 (5)系统可靠性
前言 系统可靠性是指系统在规定的条件和规定的时间内,完成规定功能的能力。这种能力不仅涵盖了系统本身的稳定性和耐久性,还涉及了系统在面对各种内外部干扰和故障时的恢复能力和容错性。系统可靠性是评价一个系统性能优劣的关键指标之一,对于…...
Swoole的MySQL连接池实现
在Swoole中实现MySQL连接池可以提高数据库连接的复用率,减少频繁创建和销毁连接所带来的开销。以下是一个简单的Swoole MySQL连接池的实现示例: 首先,确保你已经安装了Swoole扩展和PDO_MySQL扩展(或mysqli,但在这个示…...
RoboVLM——通用机器人策略的VLA设计哲学:如何选择骨干网络、如何构建VLA架构、何时添加跨本体数据
前言 本博客内解读不少VLA模型了,包括π0等,且如此文的开头所说 前两天又重点看了下openvla,和cogact,发现 目前cogACT把openvla的动作预测换成了dit,在模型架构层面上,逼近了π0那为了进一步逼近&#…...
Vue.js 配合 Vue Router 使用 Vuex
Vue.js 配合 Vue Router 使用 Vuex 今天我们来聊聊如何将 Vue Router 和 Vuex 结合使用,以实现更高效的状态和路由管理。在大型 Vue.js 应用中,Vue Router 负责路由管理,Vuex 负责状态管理。将两者结合,可以实现如权限控制、动态…...
【Django教程】用户管理系统
Get Started With Django User Management 开始使用Django用户管理 By the end of this tutorial, you’ll understand that: 在本教程结束时,您将了解: Django’s user authentication is a built-in authentication system that comes with pre-conf…...
2024年终总结——今年是蜕变的一年
2024年终总结 摘要前因转折找工作工作的成长人生的意义 摘要 2024我从国企出来,兜兜转转还是去了北京,一边是工资低、感情受挫,一边是压力大、项目经历少,让我一度找不到自己梦寐以求的工作,我投了一家又一家ÿ…...
MySQL--》深度解析InnoDB引擎的存储与事务机制
目录 InnoDB架构 事务原理 MVCC InnoDB架构 从MySQL5.5版本开始默认使用InnoDB存储引擎,它擅长进行事务处理,具有崩溃恢复的特性,在日常开发中使用非常广泛,其逻辑存储结构图如下所示, 下面是InnoDB架构图…...
SpringCloudAlibaba 服务保护 Sentinel 项目集成实践
目录 一、简介1.1、服务保护的基本概念1.1.1、服务限流/熔断1.1.2、服务降级1.1.3、服务的雪崩效应1.1.4、服务的隔离的机制 1.2、Sentinel的主要特性1.3、Sentinel整体架构1.4、Sentinel 与 Hystrix 对比 二、Sentinel控制台部署3.1、版本选择和适配3.2、本文使用各组件版本3.…...
c++面试:类定义为什么可以放到头文件中
这个问题是刚了解预编译的时候产生的疑惑。 声明是指向编译器告知某个变量、函数或类的存在及其类型,但并不分配实际的存储空间。声明的主要目的是让编译器知道如何解析程序中的符号引用。定义不仅告诉编译器实体的存在,还会为该实体分配存储空间&#…...
DeepSeek理解概率的能力
问题: 下一个问题是概率问题。乘车时有一个人带刀子的概率是百分之一,两个人同时带刀子的概率是万分之一。有人认为如果他乘车时带上刀子,那么还有其他人带刀子的概率就是万分之一,他乘车就会安全得多。他的想法对吗?…...
STM32 GPIO配置 点亮LED灯
本次是基于STM32F407ZET6做一个GPIO配置,实现点灯实验。 新建文件 LED.c、LED.h文件,将其封装到Driver文件中。 双击Driver文件将LED.c添加进来 编写头文件,这里注意需要将Driver头文件声明一下。 在LED.c、main.c里面引入头文件LED.h LED初…...
模板泛化类如何卸载释放内存
CustomWidget::~CustomWidget() {for (size_t i 0; i < buttonManager.registerItem.size(); i) {delete buttonManager.registerItem(exitButton);} } 以上该怎么写删除对象操作,类如下:template <typename T> class GenericManager { public…...
MFC结构体数据文件读写实例
程序功能将结构体内数组数据写入文件和读出 2Dlg.h中代码: typedef struct Student {int nNum[1000];float fScore;CString sss;}stu; class CMy2Dlg : public CDialog { // Construction public:CMy2Dlg(CWnd* pParent NULL); // standard constructorstu stu1; ... } 2Dl…...
jemalloc 5.3.0的tsd模块的源码分析
一、背景 在主流的内存库里,jemalloc作为android 5.0-android 10.0的默认分配器肯定占用了非常重要的一席之地。jemalloc的低版本和高版本之间的差异特别大,低版本的诸多网上整理的总结,无论是在概念上和还是在结构体命名上在新版本中很多都…...

