当前位置:首页 > 嵌入式 > 嵌入式硬件

作者:陶宁,华清远见嵌入式学院上海中心讲师。

每个用户有一个uid和gid, 这个记录在/etc/passwd, /etc/group里面,每个文件有一个uid, 就是拥有这个文件的用户的uid。每个用户运行一个程序时是以自己的uid作为身份的,如果这个程序被设置了stick位,则这个程序以程序拥有者的uid作为身份,程序运行时的这个身份(uid)就是euid, 表示这个程序以那个用户的身份运行(这样就拥有那个用户的权限,比如读取属于他的文件)。所以程序运行时的身份euid一般情况下都是运行这个程序的人的uid,有时会是这个程序拥有者的uid。

以passwd程序为例,这个程序要写/etc/passwd, /etc/shadow,一般用户对这些文件是没有写权限的,用户A运行了passwd,这个passwd进程的euid就是uidA,当要写这两个文件时,passwd调用了setuid(seteuid?),这样这个passwd进程的euid就是uidRoot了,passwd就可以写那两个文件了,写完之后euid再切换成uidA.这个过程就实现了对/etc/passwd, /etc/shadow的受控访问:普通用户只允许按照passwd程序定义好的方式修改这两个文件。

下面来看下这两个文件:

(1)/etc/passwd

功能:存放系统的用户帐号信息

内容:用户名 密码 UID GID 所属组用户主目录 SHELL

实例: u1 : x : 0 : 0 : u1   /home/u1 :/bin/bash

注:如果采用了shadow,此处存放口令的为屏蔽字符,真正密码保存在/etc/shadow中 。

如果不采用shadow,采用明文件显示,如果采用md5加密的话所存放的为密文。

(2)/etc/shadow

功能:存放用户口令(加密过的口令)

实例: u1 : bq$# : 10750: 0: 999 :7 : -1 :-1 : 12546

说明: u1 用户名

b1$# 加密的口令

10750 从1970.1.1开始计算,该口令修改后已过去了多少天

0 需要再过多少天这个口令可以被修改

9999 密码的有效期

7 口令失效多少天前发出警告

-1 口令失效多少天之后禁用这个账户

-1 口令从1970.1.1计算,该口令已经禁用了多少天

12546 保留


linux系统中每个进程都有2个ID,分别为用户ID和有效用户ID,UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程 对于文件和资源的访问权限(具备等同于哪个用户的权限)。可以通过函数getuid()和geteuid()或者进程的两个ID值。

当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件中的UID,一般情况下2个ID是相同的,但是某些情况下会出现2个ID不同的情况

下面举一个例子:



结果:




“本文由华清远见http://www.embedu.org/index.htm提供”



华清远见

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭