首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux用户管理命令

Linux用户管理命令

作者头像
张旭博客
发布于 2022-12-29 07:18:08
发布于 2022-12-29 07:18:08
2.5K00
代码可运行
举报
文章被收录于专栏:zxbkzxbk
运行总次数:0
代码可运行

Linux 系统的管理员之所以是 root,并不是因为名字叫 root,而是因为该用户的身份号码即 UID(User IDentification)的数值为 0。在 Linux 系统中 UID 就像我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。在 RHEL 8 系统中,用户身份有下面这些。

  • 管理员 UID 为 0:系统的管理员用户。
  • 系统用户 UID 为 1~999:Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户 UID 为 1000开始的:是由管理员创建的用于日常工作的用户。

为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

Linux 系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。

基本用户组就像是原生家庭,是在创建账号(出生)时就自动生成的;而扩展用户组则像工作单位,为了完成工作,需要加入到各个不同的群体中,这是需要手动添加的。

id 命令

id 命令用于显示用户的详细信息,语法格式为“ id 用户名 ”。

简单轻松地查看用户的基本信息,例如用户 ID、基本组与扩展组 GID,以便于我们判别某个用户是否已经存在,以及查看相关信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# id root
    uid=0(root) gid=0(root) groups=0(root)
[root@servera ~]# id zhangxu
    uid=1000(zhangxu) gid=1000(zhangxu) groups=1000(zhangxu)

useradd命令

useradd 命令用于创建新的用户账户,语法格式为“ useradd [参数] 用户名 ”。

使用该命令创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。

这些默认设置可以根据下表的 useradd 命令参数自行修改。

参数

作用

-d

指定用户的家目录,-m 选项可以自动创建主目录。

-e

账户的到期时间,格式为 YYYY-MM-DD

-u

指定该用户的默认UID

-g

指定一个初始的用户基本组(必须已存在的)

-G

指定一个或多个扩展组

-N

不创建与用户同名的基本用户组

-s

指定该用户的默认Shell解释器

使用 useradd 命令创建一个名称为 zxbke 的用户,并使用 id 命令确认信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# useradd -m zxbke
[root@servera ~]# id zxbke 
    uid=1001(zxbke) gid=1001(zxbke) groups=1001(zxbke)

创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。在下面的命令中,注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# useradd -d /home/ww -u 5678 -s /sbin/nologin  wangwu
[root@servera ~]# id wangwu 
    uid=5678(wangwu) gid=5678(wangwu) groups=5678(wangwu)

groupadd 命令

groupadd 命令用于创建新的用户组,语法格式为“ groupadd [参数] 群组名

为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。

例如在工作中成立一个部门组,当有用户身份与文件权限新的同事加入时就把他的账号添加到这个部门组中,这样新同事的权限就自动跟其他同事一模一样了,从而省去了一系列烦琐的操作。

创建用户组的步骤非常简单,例如使用如下命令创建一个用户组 yunwei:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# groupadd yunwei

usermod 命令

usermod 命令用于修改用户的属性,英文全称为“user modify”,语法格式为“ usermod [参数] 用户名 ”。

用户的信息保存在/etc/passwd 文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用 usermod 命令修改已经创建的用户信息,比如用户的 UID、基本/扩展用户组、默认终端等。

usermod 命令的参数以及作用如表所示。

参数

作用

-c

填写用户账户的备注信息

-d -m

参数 -m 与 -d 连用,可以重新指定用户的家目录并自动把旧的数据转移过去

-e

账户的到期时间,格式为 YYYY-MM-DD

-g

变更所属用户组

-G

变更扩展用户组

-L

锁定用户禁止其登录系统

-U

解锁用户,允许登录系统

-s

变更默认终端

-u

修改用户的UID

将用户 zhangxu 加入到 root 用户组中,扩展组中则会出现 root 用户组的字样,而基本组不会受到影响:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# id zhangxu
    uid=1000(zhangxu) gid=1000(zhangxu) groups=1000(zhangxu)
    
[root@servera ~]# usermod -G root zhangxu 

[root@servera ~]# id zhangxu
    uid=1000(zhangxu) gid=1000(zhangxu) groups=1000(zhangxu),0(root)

试用-u 参数修改 zhangxu 用户的 UID 号码值:1000 更改为了 9999

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# id zhangxu
    uid=1000(zhangxu) gid=1000(zhangxu) groups=1000(zhangxu),0(root)
    
[root@servera ~]# usermod -u 9999 zhangxu 

[root@servera ~]# id zhangxu
    uid=9999(zhangxu) gid=1000(zhangxu) groups=1000(zhangxu),0(root)

passwd 命令

passwd 命令用于修改用户的密码、过期时间等信息,英文全称为“password”,语法格式为“ passwd [参数] 用户名 ”。

普通用户只能使用 passwd 命令修改自己的系统密码,而 root 管理员则有权限修改其他所有人的密码。

root 管理员在 Linux 系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然 root 管理员能够修改其他用户的密码,就表示其完全拥有该用户的管理权限。passwd 命令中的参数以及作用如表所示。

参数

作用

-l

锁定用户

-u

解除锁定,允许用户登录

--stdin

通过标准输入修改用户密码: echo "zx123456" \

passwd --stdin zhangxu

-d

使该用户可用空密码登录系统

-e

强制用户在下次登录时修改密码

-S

显示用户的密码是否被锁定,以及密码所采用的加密算法名称

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# echo "123456" | passwd --stdin zhangxu   #更改zhangxu账户的密码
    Changing password for user zhangxu.
    passwd: all authentication tokens updated successfully.

[root@servera ~]# passwd -S zhangxu            #还没锁定,查看状态为 PS
    zhangxu PS 2022-09-23 0 99999 7 -1 (Password set, SHA512 crypt.)

[root@servera ~]# passwd -l zhangxu            #将zhangxu用户锁定,查看状态
    Locking password for user zhangxu.
    passwd: Success

[root@servera ~]# passwd -S zhangxu            #锁定状态为 LK
    zhangxu LK 2022-09-23 0 99999 7 -1 (Password locked.)

userdel 命令

userdel 命令用于删除已有的用户账户,英文全称为“user delete”,语法格式为“ userdel [参数] 用户名 ”。

如果确认某位用户后续不会再登录到系统中,则可以通过 userdel 命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r 参数将其删除。userdel 命令的参数以及作用如表所示。

参数

作用

-f

强制删除

-r

同时删除用户及用户家目录

一般会建议保留他的家目录数据,以免有重要的数据被误删除。所以在使用 userdel 命令时可以不加参数,写清要删除的用户名称就行:

虽然此时该用户已被删除,但家目录数据会继续存放在/home 目录中,等确认未来不再使用时将其手动删除即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@servera ~]# userdel  zhangxu
[root@servera ~]# ls -l /home/
    total 0
    drwx------. 4 9999 1000 150 Sep 24 02:43 zhangxu
[root@servera ~]# rm -rf /home/zhangxu/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
@EnableConfigurationProperties 注解
@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效。
黑洞代码
2021/06/23
1.1K0
Spring注解-@Autowired注解使用
首先要知道另一个东西,default-autowire,它是在xml文件中进行配置的,可以设置为byName、byType、constructor和autodetect;比如byName,不用显式的在bean中写出依赖的对象,它会自动的匹配其它bean中id名与本bean的set**相同的,并自动装载。 @Autowired是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。 两者的功能是一样的,就是能减少或者消除属性或构造器参数的设置,只是配置地方不一样而已。 autowire四种模式的区别
SerMs
2022/04/11
1.1K0
Spring注解-@Autowired注解使用
SpringBoot常用注解的简单理解
其他资料参考:https://zhuanlan.zhihu.com/p/135987318
小锋学长生活大爆炸
2020/09/08
1.4K0
SpringBoot常用注解的简单理解
SpringBoot必须掌握的常用注解!
那么接下来,咱们就一起来看下 Spring Boot 中的常用注解有哪些?及其这些注解的具体使用。
磊哥
2024/11/07
3270
SpringBoot注解梳理总结
@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
攻城狮的那点事
2019/10/15
6220
聊聊spring事务失效的12种场景,太坑了
在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。
苏三说技术
2021/09/13
9.6K2
精进Spring—Spring常用注解【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。
Java编程指南
2019/10/23
5540
精进Spring—Spring常用注解【经典总结】
SpringBoot线程池的创建、@Async配置步骤及注意事项
前 言: 最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Spring是以配置文件的形式来开启@Async,而SpringBoot则是以注解的方式开启。
全栈程序员站长
2022/09/12
1.5K0
SpringBoot线程池的创建、@Async配置步骤及注意事项
SpringBoot注解大全,收藏一波!!!
@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
用户5224393
2019/08/15
1K0
@Async异步失效的9种场景
在Spring中要开启@Async注解异步的功能,需要在项目的启动类,或者配置类上,使用@EnableAsync注解。
科技新语
2024/05/28
2550
@Async异步失效的9种场景
SpringBoot注解最全详解,建议收藏
基于 SpringBoot 平台开发的项目数不胜数,与常规的基于Spring开发的项目最大的不同之处,SpringBoot 里面提供了大量的注解用于快速开发,而且非常简单,基本可以做到开箱即用!
Java极客技术
2022/12/04
1.3K0
SpringBoot注解最全详解,建议收藏
SpringBoot线程池的创建、@Async配置步骤及注意事项
最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。
IT大咖说
2020/02/25
2.4K0
初识SpringBoot Web开发
虽说前端的h5和js都可以完成表单的字段验证,但是这只能是防止一些小白、误操作而已。如果是一些别有用心的人,是很容易越过这些前端验证的,有句话就是说永远不要相信客户端传递过来的数据。所以前端验证之后,后端也需要再次进行表单字段的验证,以确保数据到后端后是正确的、符合规范的。本节就简单介绍一下,在SpringBoot的时候如何进行表单验证。
端碗吹水
2020/09/23
4780
初识SpringBoot Web开发
springBoot注解大全,一键收藏!
一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
程序员白楠楠
2020/11/23
6490
SpringBoot整合InfluxDB:封装方法助力高效时序数据处理
在当今这个信息化飞速发展的时代,数据的增长速度和多样性呈现出爆炸性态势。面对如此庞杂的数据量,如何高效地存储、管理和分析这些数据成为了我们面临的关键问题。InfluxDB作为一种专为时序数据设计的开源数据库,以其卓越的性能和独特的特性,在众多数据库中脱颖而出,成为处理时间序列数据的理想选择。
Front_Yue
2024/10/15
8950
SpringBoot整合InfluxDB:封装方法助力高效时序数据处理
@Async异步失效的9种场景
最近有粉丝问了我一个问题:他在项目某个方法使用@Async注解,但是该方法还是同步执行了,异步不起作用,到底是什么原因呢?
苏三说技术
2024/05/09
1.6K0
搞不懂,Synchronized锁在Spring事务管理下,为啥还线程不安全?
简单来说:多线程跑一个使用synchronized关键字修饰的方法,方法内操作的是数据库,按正常逻辑应该最终的值是1000,但经过多次测试,结果是低于1000。这是为什么呢?
IT大咖说
2019/10/15
9760
搞不懂,Synchronized锁在Spring事务管理下,为啥还线程不安全?
synchronized+Spring事务,为啥还线程不安全呢?
简单来说: 多线程跑一个使用synchronized关键字修饰的方法,方法内操作的是数据库,按正常逻辑应该最终的值是1000,但经过多次测试,结果是低于1000。这是为什么呢?
烟雨平生
2023/03/07
3050
synchronized+Spring事务,为啥还线程不安全呢?
springBoot注解与分析
@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。 @ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。 @EnableAutoConfiguration 自动配置。 @ComponentScan 组件扫描,可自动发现和装配一些Bean。 @Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。 @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。 @Autowired自动导入。 @PathVariable获取参数。 @JsonBackReference解决嵌套外链问题。 @RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。
全栈程序员站长
2022/08/04
1.2K0
springBoot注解与分析
推荐阅读
相关推荐
@EnableConfigurationProperties 注解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档