discuz修改用户uid_你知道Linux中的UID和GID的含义吗

你知道Linux中的UID和GID的含义吗

是不是大家看到UID(user id)和GID(group id),都会立马说不就是用户和用户组ID。

但是。

当我们登陆Linux系统时,输入自己的用户名和密码,这里其实Linux系统并不认识你的用户名(或者换一种说法,不是依赖于你的用户名来识别你),它只认识你的用户名所对应的ID号(一串数字)。

直白一点,用户名实际没有ruan用,仅是为了方便用户的记忆而已(对比域名和ip)。

如下图:

查看odysee用户UID和GID

38f3c92ee023944dc6084bcff9fb18a6.png

Linux系统将所有用户名称与ID的对应关系都存储在/etc/passwd文件中。

如下图:

324caf5519d055001792d29ef56669ef.png

用户组名称和ID对应关系都存储在/etc/group文件中。

b86cc91b79220fb3e4680304a585754b.png

1、 这里大家可能会问,既然Linux系统不认识用户名,文件是如何判别它的拥有者名称和群组名称的呢?

解:

每个文件都有自己的拥有者ID和组ID,当显示文件属性时,系统会根据/etc/passwd和 /etc/group文件中的内容,分别找到UID和GID对应的用户名和群组名,然后显示出来。

这里就类似于数据库中student表,拿着sno(学号)找对应的sname(姓名)。

如下图所示:

stat groovy.txt

f0b9ae70046fa67b066c03a527d0a461.png

2、 做个小demo

实现让odysee用户无法进入自己的家目录

提示:修改重要配置文件请提前备份

d947f6875ff0021f30c7b3ddf962c635.png

(1)修改odysee的UID

282e4a5fa4cd4f155d198345b40fdb72.png

(2)查看刚刚odysee的groovy.txt文件

是不是发现本来的用户名odysee变成了1000

前面我们已经说过了,每个文件都有自己的拥有者ID和组ID,当文件groovy拿着ID(1000)去/etc/passwd找自己的姓名时,发现没有和1000匹配的姓名(因为我们刚刚把它的UID改为了9527)。所以只能显示UID。

bd484c0b850230e2bc2c3b33ddde4f1c.png

(3) 从root切到odysee

下面居然提示没有权限。

还回不了自己的家了。

690ab111eb55836c3d6cea8c29f8f3c7.png

ll home

drwx------ 3 1000 odysee 4096 May 22 11:04 odysee

是不是跟(2)一样的原理。

该目录只有UID为1000的用户可以进入,其余的(不限root)一切免进(g、o位没有权限,只有u位有rwx权限)。

3e0bf4b0312c79f901079c5a74d6b89a.png

总结:

关于UID和GID大家是不是有了一点点新的认识。

关于/etc/passwd文件中用户的UID别忘了改回去。

修改UID操作慎用!!!

感谢支持。

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

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

相关文章

linux5种IO模型以及同步异步,阻塞非阻塞

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出…

MYSQL的函数有哪些?(4.3时间与日期函数)

一。时间与日期函数的格式说明符 格式说明符 描述说明 %a 一星期中每天名称的缩写(Sun...Sat) %b 月份的缩写(Jan...Dec) %c 月份的数字表现形式(0...12) %D 带有英语后缀的一个月中的每一天的…

根据图片地址得到文件流

/*** 得到文件流** param url 图片地址* return*/public static byte[] getFileStream(String url) {try {URL httpUrl new URL(url);HttpURLConnection conn (HttpURLConnection) httpUrl.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(…

MYSQL中最基础的的聚合函数(重点!)

一。聚合函数的介绍 在数据库查询过程中,不仅只返回数据的基础信息,有时还需对这些数据进行统计和汇总。MySQL 提供了聚合函数,用于实现这些高级功能。 二。聚合函数的基础运用 聚合函数用于对一组值进行计算并返回一个汇总值,…

商品尺码规格和颜色需要支持双引号

商品尺码规格和颜色需要支持双引号 商品尺码规格和颜色既然要支持双引号,不得不佩服这个需求; 如果支持英文双引号 就会是 "color":""red"" 导致前端获取不到颜色,但是中文状态下是没有问题的 只能将英文转换…

EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File

今天用EasyExcel导入的时候报错&#xff0c;如下 com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/FileMagic at com.alibaba.excel.analysis.ExcelAnalyserImpl.<init>(ExcelAnalyserImpl.java…

MYSQL中最基础的的聚合函数(avg求平均值及count求和)

一。avg函数 1.性质及作用&#xff1a;avg(column) 用于返回数字型字段 column 的平均值&#xff0c;注意&#xff1a;列值为 null 的字段不参与运算。 2.如何运用 实例&#xff1a;1.获取线路里程的平均值。 2.获取公交二公司所属线路的平均里程数。 二。count函数 1.性质…

geo数据差异分析_使用GEO数据库来筛选差异表达基因,KOBAS进行KEGG注释分析

前言本文主要演示GEO数据库的一些工具&#xff0c;使用的数据是2015年在Nature Communications上发表的文章Regulation of autophagy and the ubiquitin-proteasome system by the FoxO transcriptional network during muscle atrophy.[pubmed:25858807]作者通过将FoxO1-3-4-f…

分组查询 group by 子句及order by子句

一。group by的实际意义 使用 group by 子句可以将数据划分到不同的组中&#xff0c;实现对记录的分组查询。group by 从英文字面的意义上可以理解为“根据&#xff08;by&#xff09;一定的规则进行分组&#xff08;group&#xff09;”&#xff0c;该子句的作用是通过一定的…

GIT入门笔记(18)- 标签创建和管理

git tag <name>用于新建一个标签&#xff0c;默认为HEAD&#xff0c;也可以指定一个commit id&#xff1b; git tag -a <tagname> -m "blablabla..."可以指定标签信息&#xff1b; git tag可以查看所有标签 git show <tagname>可查看tag说明信息…

列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

视频&#xff1a;《零基础学习Android开发》第五课 类与面向对象编程1-1类的定义、成员变量、构造方法、成员方法一、从数据与逻辑相互关系审视代码通过前面的课程&#xff0c;我们不断接触Java语言的知识&#xff0c;不断增加自己的语言表达能力。到现在为止&#xff0c;我已经…

MYSQL多字段分组having子句

一。多字段分组的意义 group by 子句的分组字段是一个字段列表&#xff0c;即 MySQL 支持按多个字段进行分组。具体的分组策略&#xff1a;分组优先级从左至右&#xff0c;即先按第一个字段进行分组&#xff0c;然后在第一个字段值相同的记录中&#xff0c;再根据第二个字段的…

Hadoop的多节点集群启动,唯独没有namenode进程?(血淋淋教训,一定拍快照)(四十五)...

前言 大家在搭建hadoop集群时&#xff0c;第一次格式化后&#xff0c;一路要做好快照。别随便动不动缺少什么进程&#xff0c;就来个格式化。 问题描述&#xff1a;启动hadoop时报namenode未初始化&#xff1a;java.io.IOException: NameNode is not formatted. 同时&#xff0…

Mybatis之SqlSession简析

在 MyBatis 中&#xff0c;SqlSession 是其核心接口。在 MyBatis 中有两个实现类&#xff0c;DefaultSqlSession 和 SqlSessionManager。 SqlSession是Mybatis的一个核心类&#xff0c;简单点就是执行sql的&#xff0c;Mybatis的一级缓存应该就在这个级别上的&#xff0c;实际…

MYSQL中where子句与having子句的区别

一。作用上的区别 having 子句和 where 子句均用于过滤数据&#xff0c;两者的区别在于&#xff1a;where 子句对结果集进行过滤筛选&#xff0c;而 having 子句则对分组的结果进行筛选。 例&#xff1a;统计公交公司为非“通恒公司”的最长线路里程大于 24 的分组信息&#…

并发执行变成串行_网易Java研发面试官眼中的Java并发——安全性、活跃性、性能...

一. 安全性问题线程安全的本质是正确性&#xff0c;而正确性的含义是程序按照预期执行理论上线程安全的程序&#xff0c;应该要避免出现可见性问题(CPU缓存)、原子性问题(线程切换)和有序性问题(编译优化)需要分析是否存在线程安全问题的场景&#xff1a;存在共享数据且数据会发…

TensorFlow: couldn’t open CUDA library cupti64_80.dll、InternalError: Blas SGEMM launch failed

1. couldn’t open CUDA library cupti64_80.dll Win10 TensorFlow&#xff08;gpu&#xff09;安装详解 在资源管理器中查询 cupti64_80.dll 的位置。如对于 windows 用户而言&#xff0c;如果将 nvidia 的显卡驱动安装在默认位置&#xff0c;该 dll 文件的路径在&#xff1a;…

Mybatis框架中SqlSessionFactory

首先SqlSessionFactory与SqlSession都是同一个接口 SqlSessionFactory是通过SqlSessionFactoryBuilder的build方法创建的 而build方法创建的是一个SqlSessionFactory的实现类,叫DefaultSqlSessionFactory 然后这个实现类主要用的设计模式是建造者(build)模式,而里面最终要达…

什么是内连接查询?

查询信息的来源如果来自多张表&#xff0c;则必须对这些表进行连接查询。 连接是把不同表的记录连到一起的最普遍的方法&#xff0c;通过连接查询可将多个表作为一个表进行处理。 连接查询分为内连接和外连接。