Linux用户及用户组操作命令笔记

1.用户概念及作用

用户:指的是Linux操作系统中用于管理系统或者服务的人

Linux下一切皆文件,所以用户管理的是相应的文件

基本上分为两种:

  • 基本管理:文件的创建、删除、复制、查找、打包压缩等;文件的权限增加、减少等;
  • 高级管理:程序文件的安装、卸载、配置等。终极目的是对外提供稳定的服务。

2.用户的分类

2.1 超级用户

超级用户,也叫管理员,root。该用户(root)具有所有权限,UID=0并且绝对只能是0

2.2 系统用户

  • 系统用户,也叫程序用户。一般都是由程序创建,用于程序或者服务运行时候的身份。
  • 默认不允许登录系统。1<=UID<=499
  • 比如后面要学的web服务的管理用户apache,文件共享ftp服务的管理用户ftp等

注意:Centos7/RHEL8中,系统用户UID范围:1<=UID<=999

2.3 普通用户

  • 普通用户,一般都是由管理员创建,用于对系统进行有限的管理维护操作。
  • 默认可以登录系统。500<=UID<=60000

注意:Centos7/RHEL8中,普通用户UID范围:1000<=UID<=60000

说明:

  • 用户指的是操作系统上管理系统或服务的人,是人,就有相关的属性信息
  • 用户的属性信息包括但不限于,如:家目录、唯一身份标识(UID)、所属组(GID)等
  • 今天我们讨论的用户指的是普通用户,即由管理员创建的用户

3.用户的基本管理

3.1 创建用户

基本语法和选项

useradd [选项] 用户名
常用选项:
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户默认shell查看系统支持的shell(命令解释器)
[root@ljy ~]# cat /etc/shells
/bin/sh 软连接文件
/bin/bash 系统默认的解释器
/usr/bin/sh 软连接文件
/usr/bin/bash 系统默认的解释器
其他shell:
/sbin/nologin 不能登录操作系统,也叫非交互式shell
/bin/dash
/bin/tcsh
/bin/csh 

示例操作

id 用户名 查询用户信息命令

创建一个用户stu1
[root@ljy ~]# useradd stu1
查看用户信息
[root@ljy ~]# id stu1
uid=501(stu1) gid=501(stu1) groups=501(stu1)注意:当创建一个默认用户时,系统会给该用户以下东西,以stu1为例说明
1)用户的UID(唯一标识) 501(系统自动分配)
2)用户的默认组(主组) stu1组,默认跟该用户的用户名一致;组ID(501),默认和用户UID一致
3)用户的家目录 /home/stu1
4)默认拷贝相应的文件到用户的家里,是隐藏文件
[root@ljy ~]# su - stu1
[stu1@localhost ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla 

根据需求创建用户

/sbin/nologin 表示不能登录系

1. 创建用户stu2,但是不能登录操作系统
注意:-s 指定用户的默认shell,/sbin/nologin表示不能登录系统,也叫非交互
[root@ljy ~]# useradd -s /sbin/nologin stu2
验证:
[root@ljy ~]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
切换用户失败,说明该用户不能登录系统
[root@ljy ~]# su - stu2
This account is currently not available.2. 创建用户stu2,同时指定该用户的家目录为/rhome/stu2
注意:-d 指定用户的家目录,前提该用户家目录的上一级目录/rhome必须存在
[root@ljy ~]# mkdir /rhome
[root@ljy ~]# useradd -d /rhome/stu2 stu2
[root@ljy ~]# id stu2
uid=502(stu2) gid=502(stu2) groups=502(stu2)
说明:指定stu2家目录/rhome/stu2时,只需要/rhome存在即可,系统会默认在/rhome下创建stu2目录

注意:

当创建用户指定的家目录不存在,是不能切换用户的,会报错家目录不存在,这时需要root角色下为用户创建家目录,并拷贝相关隐藏文件到文件目录下

3.2 设置用户密码

passwd 用户名 表示给指定用户修改密码
passwd 直接回车 表示给当前用户修改密码[root@ljy ~]# passwd stu1
Changing password for user stu1.
New password: 密码不显示
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: 密码不显示
passwd: all authentication tokens updated successfully.说明:
1.管理员root可以给任何用户修改密码
2.普通用户可以自己给自己修改密码,但是密码复杂度要符合规范[root@ljy ~]# echo 123|passwd --stdin stu2
更改用户 stu2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
说明:使用这种方法不用交互可以直接设置成功,一般用于脚本中。

3.3 修改用户信息

基本语法选项

usermod [选项] 用户名
常用选项:
-u 指定用户uid,唯一标识,必须唯一
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-s 指定用户默认shell
-m 移动用户家目录,和-d一起使用
1. 修改stu3用户的UID为1100
[root@ljy ~]# usermod -u 1100 stu3
[root@ljy ~]# tail -5 /etc/passwd
yunwei:x:1001:1001::/home/yunwei:/sbin/nologin
stu1:x:1002:1002::/home/stu1:/bin/bash
stu2:x:1003:1003::/rhome/stu2:/bin/bash
stu3:x:1100:1004::/rhome/stu3:/bin/bash
stu4:x:1005:1005::/home/stu4:/sbin/nologin2.修改stu4用户的默认shell为可登录系统
[root@ljy ~]# su - stu4
This account is currently not available.
[root@ljy ~]# usermod -s /bin/sh stu4
[root@ljy ~]# tail -5 /etc/passwd
yunwei:x:1001:1001::/home/yunwei:/sbin/nologin
stu1:x:1002:1002::/home/stu1:/bin/bash
stu2:x:1003:1003::/rhome/stu2:/bin/bash
stu3:x:1100:1004::/rhome/stu3:/bin/bash
stu4:x:1005:1005::/home/stu4:/bin/sh3.修改stu5用户的家目录
[root@ljy ~]# useradd -d /rhome/stu5 stu5
[root@ljy ~]# usermod -md /home/stu5 stu5 

3.4 删除用户

 基本语法选项

userdel [选项] 用户名
常用选项:
-r 删除用户并且移除其家目录和邮箱
-f 强制删除正在登录的用户 
说明:
创建完用户后,家目录默认在/home/用户名下;用户的邮箱在/var/spool/mail/用户名1. 删除stu4用户以及家目录
[root@ljy ~]# userdel -r stu4
[root@ljy ~]# id stu4
id: stu4: No such user2.强制删除一个正在登录的用户
[root@ljy ~]# userdel -r stu5
userdel: user stu5 is currently used by process 7998
[root@ljy ~]# id stu5
uid=1101(stu5) gid=1101(stu5) 组=1101(stu5)
[root@ljy ~]# userdel -rf stu5
userdel: user stu5 is currently used by process 7998
[root@ljy ~]# id stu5
id: “stu5”:无此用户3. 只删除用户user02,不删除其家目录
[root@ljy ~]# userdel stu1

4.用户密码信息的文件

4.1 用户文件解析

1. 用户信息保存文件/etc/passwd
了解相关配置文件内容,可以通过求man文档解决,即 man 5 passwd
以冒号:分割为7列,如下:
account --> stu1 用户名称
password --> x 密码,将密码单独存放在另外一个文件中
UID --> 501 用户ID
GID --> 501 组ID
GECOS --> 用户自定义,描述说明
directory --> /home/stu1 用户的家目录
shell --> /bin/bash用户的默认shell,其中/sbin/nologin表示非交互,不能登录系统2. 用户密码信息保存文件/etc/shadow
了解相关配置文件内容,可以通过求man文档解决,即 man 5 shadow
以冒号:分隔为9列,如下:
login name
登录的用户名encrypted password
加密后的密码;!!表示没有设置密码date of last password change
最后一次更改密码的天数(距离1970年的1月1日到现在的天数)minimum password age
密码的最小生存周期;0表示可以立刻修改密码;如果是3,则表示3天后才能更改密码maximum password age
密码的最大生存周期;如果30表示每隔30天需要更新一次密码password warning period 密码过期前几天发出警告;7表示过期前7天开始警告password inactivity period
密码的宽限期;如果3表示允许密码过期3天,3天内还能登录系统,但是要求修改密码。3天后(密码过期3天后账户被封锁,需要联系管理员)account expiration date
账户过期的时间,账户过期的用户不能登录;密码过期用户不能用原来的密码登录。以1970年1月1日算起。reserved field
保留

4.2 用户的账号信息

chage --help
-d 修改用户最后一次更改密码的时间
-m 修改密码的最小存活期(几天后才能修改密码)
-M 修改密码的最大存活期(每隔多少天更新一次密码)
-W 修改密码过期前警告(过期前几天发出警告)
-I 修改允许密码过期几天
-E 修改账户过期时间
-l 列出账户的信息举例说明:
查看用户账号的相关信息命令:chage -l stu1
[root@ljy ~]# chage -l stu1
Last password change : Mar 04, 2019
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7修改用户账号的过期时间:2019-03-10过期
[root@ljy ~]# chage -E '2019-03-10' stu1
[root@ljy ~]# chage -l stu1
Last password change : Mar 04, 2019
Password expires : never
Password inactive : never
Account expires : Mar 10, 2019
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7修改用户账号的过期时间为10天以后:
[root@ljy ~]# chage -E $(date +%F -d '+10days') stu1

5.Linux下组管理及组和用户的关系

在Linux系统中,用户(User)和用户组(Group)是通过一种多对多的关系来组织的。这种关系允许灵活地管理权限和资源共享。以下是用户和用户组之间的关系概述:

  • 用户(User):

       每个用户在Linux系统中都有一个唯一的用户ID(UID),通常普通用户的UID从1000开始(这可能因发行版而异),而系统用户(如root)的UID通常是0。

   - 用户可以拥有一个或多个用户组。

  • 用户组(Group):

        用户组是具有相同权限集合的用户的集合。

        每个用户组都有一个唯一的组ID(GID)。

        用户组用于简化权限管理,因为可以给组分配权限,而组内的所有用户都会继承这些权限。

  • 用户和用户组的关系:

        主组(Primary Group):每个用户都有一个主组,这是用户创建文件时默认赋予的组。用户的主组通常与用户的用户名相同。

        附加组(Secondary Groups):用户可以属于多个附加组。这意味着用户可以继承多个组的权限。

       组文件(/etc/group):这个文件存储了系统中所有用户组的信息,包括组名和组内用户的列表。

       密码文件(/etc/passwd):这个文件存储了系统中所有用户的信息,包括用户的主组信息。

  • 权限管理:

      文件和目录的权限可以设置为用户(User)、组(Group)和其他(Other)。

      当用户尝试访问文件或目录时,系统会检查用户的UID和GID,以及文件或目录的所有者和组,以确定是否允许访问。

  • 用户和组的权限:

       用户对文件的访问权限由该文件的所有者权限决定。

      用户组的权限适用于组内的所有用户。

      其他用户(不属于文件所有者或组的用户)的权限是独立设置的。

  • sudo和su:

       `sudo` 命令允许授权的用户以另一个用户(通常是root)的身份执行命令,而不必知道该用户的密码。

       `su` 命令用于切换到另一个用户的身份,通常需要输入目标用户的密码。

通过这种结构,Linux系统管理员可以有效地控制用户对系统资源的访问,同时保持系统的安全性和灵活性。

6.组的管理

6.1 创建组

基本语法

groupadd [选项] 组名
常用选项:
-g 指定组的GID(编号),默认唯一
1.创建一个组admin
[root@ljy ~]# groupadd admin2.查看组信息
[root@ljy ~]# tail -1 /etc/group
admin:x:1005:
说明:关于/etc/group配置文件说明,可以man 5 group找帮助3.创建一个组sysadmin,指定组的GID为1111
[root@ljy ~]# groupadd -g 1001 sysadmin
[root@ljy ~]# tail -1 /etc/group
admin:x:1005:
sysadmin:x:1111 

6.2 删除组

基本语法

groupdel 组名  
[root@ljy ~]# groupdel admin
[root@ljy ~]# groupdel stu2
groupdel: cannot remove the primary group of user 'stu2'
注意:以上信息说明不能删除属于其他用户的主组 

6.3 组的成员管理

基本语法

gpasswd [选项] 组名
常见选项:
-a 添加用户到组
-d 从组中删除成员
-A 指定管理员
-M 指定组成员,可以批量添加用户到组中
-r 删除密码
gpasswd 组名 给组设置密码
# 添加用户到组里
1. 创建3个用户user01~user03
2. 将user01添加到sysadmin组里方法:1:指定user01用户的附加组为sysadmin(站在用户角度)
# usermod -G sysadmin user01方法2:使用gpasswd命令添加用户到组里
# gpasswd -a user01 sysadmin
-a选项:表示往组里追加用户
# gpasswd -M user02,user03 sysadmin 设置sysadmin组成员为user02,user03
-M选项:表示覆盖设置组成员(会覆盖原来的成员列表) # 删除组成员
将user03用户从组sysadmin里移除
# gpasswd -d user03 sysadmin

7.总结

7.1 创建用户(useradd)

1)useradd 用户名——>家目录/home/用户名、邮箱、UID、默认组(GID)[用户主组]

2)useradd [选项] 用户名字——>常用选项:-d/-s/-u/-g/-G

7.2设置用户密码(passwd)

1)passwd 用户名——>给指定的用户(管理员可以给任何人设置任何密码)

2)echo 密码|passwd --stdin 用户名——>非交互式(用于脚本中)

3)用户基本信息和用户密码信息保存文件——>/etc/passwd和/etc/shadow

4)扩展chage命令——>用来修改用户密码信息(账号过期时间、密码最小生存周期等)

7.3修改用户信息(usermod)

1) usermod [选项] 用户名——>usermod -md 新家 用户名

4、删除用户(userdel)

1)userdel 用户名——>只删除用户,不删除用户家目录、邮箱等信息

2)userdel -r 用户名——>删除用户以及用户其他信息

3)userdel -f 用户名——>强制删除用户(删除正在登录的用户)

7.4 创建组(groupadd)

组的信息保存文件——>/etc/group和/etc/gshadow

7.5 删除组(groupdel)

什么样的组不能删除?——>不能删除属于其他用户的主组

7.6 管理组成员(gpasswd)

1)添加用户到组里——>gpasswd -a user1 组名 或 gpasswd -M user1,user2,... 组名

2)从组里移除用户——>gpasswd -d user1 组名

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

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

相关文章

tcpdump使用方法

一、centos上可以采用下面的命令进行安装。 yum install tcpdump 二、实例&#xff1a; 1、监视指定网络接口的数据包 即监听指定网卡的数据包&#xff0c;若不指定网卡&#xff0c;默认tcpdump只会监视第一个网络接口。如监听 eth0网卡&#xff0c;如下&#xff1a; tcpd…

Double-Fetch漏洞检测工具的部署、使用与原理分析

文章目录 前言1、概述1.1、简介1.2、工作原理1.2.1、内核空间与用户空间的信息传递1.2.2、Double-Fetch漏洞产生的原因1.2.3、产生Double-Fetch漏洞的情况1.2.4、一个Double-Fetch漏洞示例1.2.5、Double-Fetch漏洞检测工具原理 1.3、模式匹配原理分析1.3.1、Coccinelle介绍1.3.…

大厂程序员的健身之路

大厂程序员的健身之路 基本信息饮食正餐营养补剂 睡眠训练计划 基本信息 健身时间&#xff1a;2023.03 -> 2024.09体重变化&#xff1a;52kg -> 67kg 饮食 正餐 早餐&#xff1a;不吃午餐&#xff1a;两碗米饭 鱼/鸡肉 蔬菜 酸奶晚餐&#xff1a;两碗米饭 鱼/鸡肉…

java之杨辉三角问题

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 如何实现呢&#xff1f; 思路&#xff1a;首先&#xff0c;我们可以将杨辉三角视作i行j列的二维数组。除了第一行和第二行之外&am…

BuripSuiteProfessional 抓取HTTPS配置

1.电脑拿开代理 谷歌为例 点击三点-设置 -输入代理--点击代理设置 打开手动代理---IP ,端口如图-点击保存 2.下载CA证书 打开代理后,谷歌浏览器打开,输入/burp--如下图-点击CA证书下载证书 选择下载目录--桌面 3.安装CA证书 谷歌浏览器中点开设置-输入证书-点击安全 点击…

传知代码-多示例AI模型实现病理图像分类

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 概述 本文将基于多示例深度学习EPLA模型实现对乳腺癌数据集BreaKHis_v1的分类。EPLA模型是处理组织病理学图像的经典之作。EPLA模型是基于多示例学习来进行了&#xff0c;那么多示例学习模型对处理病理学图像具有…

优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序

遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种启发式搜索算法&#xff0c;用于寻找复杂优化问题的近似解。它模拟了自然选择和遗传学中的进化过程&#xff0c;主要用于解决那些传统算法难以处理的问题。 遗传算法的基本步骤&#xff1a; 初始化种群&#xff0…

GNN-RAG:用于大模型推理的图神经检索

GNN-RAG&#xff1a;用于大模型推理的图神经检索 秒懂大纲提出背景解法拆解全流程优化创意总结 论文&#xff1a;GNN-RAG: Graph Neural Retrieval for Large Language Model Reasoning 代码&#xff1a;https://github.com/cmavro/GNN-RAG 秒懂大纲 ├── GNN-RAG【主题】…

美国站群服务器优化技巧解析

美国站群服务器&#xff0c;作为专为管理多个网站而设计的托管解决方案&#xff0c;其优化对于提升网站性能和用户体验至关重要。以下是一些关键的优化技巧&#xff1a; 首先&#xff0c;硬件配置是基础。选择高性能的CPU、大容量的内存以及高速的硬盘(如SSD)是提升服务器运算速…

Java 集合详解

目录 一. 概述 二. Collection接口实现类 三. Map接口实现类 四. 线程安全集合 五. List接口下集合实现原理 1. ArrayList实现原理 1.1. 基于动态数组 1.2. 随机访问 1.3. 添加元素 1.4. 删除元素 1.5. 迭代器 1.6. 克隆和序列化 1.7. ArrayList简单使用 2. Link…

Linux环境变量进程地址空间

目录 一、初步认识环境变量 1.1常见的环境变量 1.2环境变量的基本概念 二、命令行参数 2.1通过命令行参数获取环境变量 2.2本地变量和内建命令 2.3环境变量的获取 三、进程地址空间 3.1进程&#xff08;虚拟&#xff09;地址空间的引入 3.2进程地址空间的布局和理解 …

11年计算机考研408-数据结构

设执行了k次。 解析&#xff1a; d要第一个出&#xff0c;那么abc先入栈&#xff0c;d入栈然后再出栈&#xff0c;这前面是一个固定的流程&#xff0c;后面就很灵活了&#xff0c;可以ecba&#xff0c;ceba&#xff0c;cbea&#xff0c;cbae。 答案是4个序列。 解析&#xff1a…

【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation

Abstract transformers凭借其对大型数据集的扩展能力&#xff0c;彻底改变了视觉和自然语言处理。但在机器人操作中&#xff0c;数据既有限又昂贵。通过正确的问题表述&#xff0c;操纵仍然可以从变形金刚中受益吗&#xff1f;我们使用peract来研究这个问题&#xff0c;peract…

Spring Boot利用dag加速Spring beans初始化

1.什么是Dag&#xff1f; 有向无环图(Directed Acyclic Graph)&#xff0c;简称DAG&#xff0c;是一种有向图&#xff0c;其中没有从节点出发经过若干条边后再回到该节点的路径。换句话说&#xff0c;DAG中不存在环路。这种数据结构常用于表示并解决具有依赖关系的问题。 DAG的…

elasticsearch同步mysql方案

文章目录 1、1. 使用数据库触发器2. 使用定时任务3. 监听MySQL二进制日志&#xff08;binlog&#xff09;4. 使用数据管道5. 使用第三方工具或服务6. 编写自定义脚本注意事项 2、1. 使用Logstash步骤&#xff1a;示例配置&#xff1a; 2. 使用Debezium步骤&#xff1a; 3. 自定…

【Redis入门到精通三】Redis核心数据类型(List,Set)详解

目录 Redis数据类型 ​编辑 1.List类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 2.Set类型 &#xff08;1&#xff09;常见命令 &#xff08;2&#xff09;内部编码 Redis数据类型 查阅Redis官方文档可知&#xff0c;Redis提供给用户的核…

JavaScript - Document文档操作

1. 前言 ​​​​​​​ 编写网页时&#xff0c;我们需要时刻操作文档进而完成我们想要的效果。这就是通过文档对象模型实现&#xff0c;使用Document对象控制HTML以及样式信息的API 2. Document的树结构 在了解Document文档对象模型之前&#xff0c;我们先了解Dom的树结构 …

使用scp命令从本地往服务器传输文件失败

解决办法&#xff1a; 找到这个文件&#xff0c;打开&#xff0c;将里面的服务器ip对应的一行数据删掉即可。

(c语言+数据结构链表)项目:贪吃蛇

目录 1.项目背景 2.游戏效果演⽰ 3. ⽬标 4. 技术要点 5. Win32 API介绍 5.1 Win32 API 5.2 控制台程序 5.3 控制台屏幕上的坐标COORD 5.4 GetStdHandle 5.5 GetConsoleCursorInfo 5.5.1 CONSOLE_CURSOR_INFO 5.6 SetConsoleCursorInfo 5.7 SetConsoleCursorPositi…

d3dcompiler47dll丢失怎么解决,详细介绍6种解决方案

在电脑使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是系统提示某个文件缺失。其中&#xff0c;d3dcompiler_47.dll是许多用户经常遇到的问题之一。这个文件是DirectX组件的一部分&#xff0c;如果缺失&#xff0c;可能会导致游戏或应用程序无法正常运行…