嵌入式软件开发之Linux 用户权限管理

目录

Ubuntu 用户系统

权限管理

 权限管理命令

权限修改命令 chmod

 文件归属者修改命令 chown


Ubuntu 用户系统

        Ubuntu 是一个多用户系统,我们可以给不同的使用者创建不同的用户账号,每个用户使用各自的账号登陆,使用用户账号的目的一是方便系统管理员管理,控制不同用户对系统的访问权限,另一方面是为用户提供安全性保护。

        我们在安装 Ubuntu 系统的时候被要求创建一个账户,当我们创建好账号以后,系统会在目录/home 下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的,创建其它用户账号的时候也会在目录/home 下生成一个文件夹来存储该用户的文件,如下图所示就是我的电脑上“zhangyu”这个账户的文件夹,也就是用户账户的根目录。

        装系统的时候创建的用户其权限比后面创建的用户大一点,但是没有 root 用户权限大,Ubuntu 下用户类型分为以下 3 类: 

  • 初次创建的用户,此用户可以完成比普通用户更多的功能。
  • root 用户,系统管理员,系统中的玉皇大帝,拥有至高无上的权利。
  • 普通用户,安装完操作系统以后被创建的用户。

        以上三种用户,每个用户都有一个 ID 号,称为 UID,操作系统通过 UID 来识别是哪个用户,用户相关信息可以在文件/etc/passwd 中查看到,如下图所示:

        从配置文件 passwd 中可以看到,每个用户名后面都有两个数字,比如用户“zhangyu”后面“1000:1000”,第一个数字是用户的 ID,另一个是用户的 GID,也就是用户组 ID。Ubuntu里面每个用户都属于一个用户组里面,用户组就是一组有相同属性的用户集合。 

权限管理

        在使用 Windows 的时候我们很少接触到用户权限,最多就是打开某个软件出问题的时候会选择以“管理员身份”打开。Ubuntu 下我们会常跟用户权限打交道,权限就是用户对于系统资源的使用限制情况,root 用户拥有最大的权限,可以为所欲为,装系统的时候创建的用户拥有root 用户的部分权限,其它普通用户的权限最低。对于我们做嵌入式开发的人一般不关注用户的权限问题,因为嵌入式基本是单用户,做嵌入式开发重点关注的是文件的权限问题。

        对于一个文件通常有三种权限:读(r)、写(w)和执行(x),使用命令“ls -l”可以查看某个目录下所有文件的权限信息,如下图所示:

        在上图中我们zy1.c为例讲解,文件zy.c文件信息如下:

-rw-rw-r-- 1 zhangyu zhangyu     0  3月 15 15:38 zy1.c

        其中“-rw-rw-r--”表示文件权限与用户和用户组之间的关系,第一位表示文件类型,剩下的 9 位以 3 位为一组,分别表示文件拥有者的权限,文件拥有者所在用户组的权限以及其它用户权限。后面的“zhangyu zhangyu”分别代表文件拥有者(用户)和该用户所在的用户组,因此文zy1.c 的权限情况如下:

        ①、文件 zy.c 的拥有者是用户 zhangyu,其对文件 zy1.c 的权限是“rw-”,也就是对该文件拥有读和写两种权限。
        ②、用户 zhangyu 所在的用户组也叫做 zhangyu,其组内用户对于文件 zy1.c 的权限是“rw-”,也是拥有读和写这两种权限。
        ③、其它用户对于文件 zy1.c 的权限是“r--”,也就是只读权限。

        对于文件,可读权限表示可以打开查看文件内容,可写权限表示可以对文件进行修改,可执行权限就是可以运行此文件(如果是软件的话)。对于文件夹,拥有可读权限才可以使用命令 ls查看文件夹中的内容,拥有可执行权限才能进入到文件夹内部。

        如果某个用户对某个文件不具有相应的权限的话就不能进行相应的操作,比如根目录“/”下的文件只有 root 用户才有权限进行修改,如果以普通用户去修改的话就会提示没有权限。比如我们要在根目录“/” 创建一个文件 mytest,使用命令“touch mytest”,结果如下图所示:

        在上图中,我以用户“zhangyu”在根目录“/”创建文件 mytest,结果提示我无法创建“mytest”,因为权限不够,因为只有 root 用户才能在根目录“/”下创建文件。我们可以使用命令“sudo”命令暂时切换到 root 用户,这样就可以在根目录“/”下创建文件 mytest 了。

        文件的权限有三种:读(r)、写(w)和执行(x),除了用 r、w 和 x 表示以外,我们也可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为 1 就表示具备此权限,如果该位为 0 就表示没不具备此权限,如下图所示:

字母二进制八进制
r1004
w0102
x0011

         如果做过单片机开发的话,就会发现和单片机里面的寄存器位一样,将三种权限 r、w 和 x
进行不同的组合,即可得到不同的二进制数和八进制数,3 位权限可以组出 8 种不同的权限组合,如下表所示:

权限二进制数字八进制数字
---0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx1117

        表 中权限所对应的八进制数字就是每个权限对应的位相加,比如权限 rwx 就是4+2+1=7。前面的文件 zy.c 其权限为“rw-rw-r--”,因此其十进制表示就是:664。

        另外我们也开始使用 a、u、g 和 o 表示文件的归属关系,用=、+和-表示文件权限的变化,如下表所示:

字母

意义

r

可读权限

w

可写权限

x

可执行权限

a

所有用户

u

归属用户

g

归属组

o

其他用户

=

具备权限

+

添加某权限

-

去除某权限

        对于文件 zy.c,我们想要修改其归属用户(zhangyu)对其拥有可执行权限,那么就可以使用:u+x。如果希望设置归属用户及其所在的用户组都对其拥有可执行权限就可以使用:gu+x。

 权限管理命令

        我们也可以使用 Shell 来操作文件的权限管理,主要用到“chmod”和“chown”这两个命令。

权限修改命令 chmod

命令“chmod”用于修改文件或者文件夹的权限,权限可以使用前面讲的数字表示也可以使用字母表示,命令格式如下:

chmod [参数] [文件名/目录名]

 主要参数如下:

  • -c 效果类似“-v”参数,但仅回显更改的部分。
  • -f 不显示错误信息。
  • -R 递归处理,指定目录下的所有文件及其子文件目录一起处理。
  • -v 显示指令的执行过程。

        命令“chmod”修改一个文件的权限,在用户根目录下创建一个文件 test,然后查看其默认权限,操作如下图 所示:

         在上图中我们创建了一个文件:test,这个文件的默认权限为“rw-rw-r--”,我们将其权限改为“rwxrw-rw”,对应数字就是 766,操作如下:

        在上图中,我们修改文件 test 的权限为 766,修改完成以后的 test 文件权限为“rwxrwrw-”,和我们设置的一样,说明权限修改成功 。

        上面我们是通过数字来修改权限的,我们接下来使用字母来修改权限,操作如下图所示:

         上面两个例子都是修改文件的权限,接下来我们修改文件夹的权限,新建一个 test 文件夹,在文件夹 test 里面创建 a.c、b.c 和 c.c 三个文件,如下图所示:

        在上图中 test 文件夹下的文件 a.c、b.c 和 c.c 的权限均为“rw-rw-r--”,我们将 test 文件夹下的所有文件权限都改为“rwxrwxrwx”,也就是数字 777,操作如下图所示:,我们利用递归来修改文件权限。

 文件归属者修改命令 chown

        命令 chown 用来修改某个文件或者目录的归属者用户或者用户组,命令格式如下:

chown [参数] [用户名.<组名>] [文件名/目录]

        其中[用户名.<组名>]表示要将文件或者目录改为哪一个用户或者用户组,用户名和组名用“.”隔开,其中用户名和组名中的任何一个都可以省略,命令主要参数如下:

  • -c 效果同-v 类似,但仅显示更改的部分。
  • -f 不显示错误信息。
  • -h 只对符号连接的文件做修改,不改动其它任何相关的文件。
  • -R 递归处理,将指定的目录下的所有文件和子目录一起处理。
  • -v 显示处理过程

        在用户根目录下创建一个 test 文件,查看其文件夹所属用户和用户组,如下图所示:

        从上图可以看出,文件 test 的归属用户为 zhangyu,所属的用户组为 zhangyu,将文件 test 归属用户改为 root 用户,所属的用户组也改为 root,操作如下图所示 

        命令 shown 同样也可以递归处理来修改文件夹的归属用户和用户组,用法和命令 chown一样。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java-正装照换底色小demo-技术分享

文章目录前言java-正装照换底色小demo-技术分享01 实现思路02 效果02::01 原图:02::02 执行单元测试:02::03 效果:03 编码实现前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞…

用Python Flask为女朋友做一个简单的网站(附可运行的源码)

&#x1f31f;所属专栏&#xff1a;献给榕榕&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该专栏系为女友准备的&#xff0c;里面会不定时发一些讨好她的技术作品&#xff0c;感兴趣的小伙伴可以关注一下~&#x1f449;文章简介…

2023年网络安全比赛--attack(新)数据包分析中职组(超详细)

一、竞赛时间 180分钟 共计3小时 任务环境说明: 1 分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户第一次访问HTTP服务的数据包是第几号,将该号数作为Flag值提交; 2.继续查看数据包文件attack.pcapng,分析出恶意用户扫描了哪些端口,将全部的端口号…

基于Qt WebEngine 的Web仪器面板GUI程控技术

随着IIoT的发展&#xff0c;很多工业仪器也具备了远程管理的GUI。与早期使用串口进行命令交互不同&#xff0c;这些GUI可以直接在远程呈现数据。 作为希望对仪器、软件进行二次开发的小公司来说&#xff0c;会遇到GUI人工操作转自动化的需求。在无法通过串口等传统接口进行自动…

力扣-股票的资本损益

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1393. 股票的资本损益二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他…

我一个普通程序员,光靠GitHub打赏就年入70万,

一个国外程序员名叫 Caleb Porzio在网上公开了自己用GitHub打赏年入70万的消息和具体做法。 Caleb Porzio 发推庆祝自己靠 GitHub 打赏&#xff08;GitHub Sponsors&#xff09;赚到了 10 万美元。 GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能&#xff0c;允许开发…

Matplotlib从入门到精通05-样式色彩秀芳华

Matplotlib从入门到精通05-样式色彩秀芳华总结Matplotlib从入门到精通05-样式色彩秀芳华导入依赖一、matplotlib的绘图样式&#xff08;style&#xff09;1.matplotlib预先定义样式2.用户自定义stylesheet3.设置rcparams二、matplotlib的色彩设置&#xff08;color&#xff09;…

十大经典排序算法(上)

目录 1.1冒泡排序 1. 算法步骤 3.什么时候最快 4. 什么时候最慢 5.代码实现 1.2选择排序 1. 算法步骤 2. 动图演示 3.代码实现 1.3 插入排序 1. 算法步骤 2. 动图演示 3. 算法实现 1.4 希尔排序 1. 算法步骤 2. 动图演示 3.代码实现 1.5 归并排序 1. 算法步骤 2…

30岁了,说几句大实话

是的&#xff0c;我 30 岁了&#xff0c;还是周岁。 就在这上个月末&#xff0c;我度过了自己 30 岁的生日。 都说三十而立&#xff0c;要对自己有一个正确的认识&#xff0c;明确自己以后想做什么&#xff0c;能做什么。 想想时间&#xff0c;过得真快。 过五关斩六将&…

大数据核心技术是什么

大数据的核心层&#xff1a;数据采集层、数据存储与分析层、数据共享层、数据应用层&#xff0c;可能叫法有所不同本质上的角色都大同小异。 大数据的核心技术都包括什么&#xff1f; 1、数据采集 数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上&#xff0c…

Java代码是如何被CPU狂飙起来的?

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测

随着社会和经济的持续发展&#xff0c;电力系统的投资与建设也日益加速。在电力系统中&#xff0c;输电线路作为电能传输的载体&#xff0c;是最为关键的环节之一。而绝缘子作为输电环节中的重要设备&#xff0c;在支撑固定导线&#xff0c;保障绝缘距离的方面有着重要作用。大…

20230315整理

1.乐观锁与悲观锁 1.1什么是悲观锁&#xff1f;使用场景是什么&#xff1f; 悲观锁总是假设最坏的情况&#xff0c;认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改)&#xff0c;所以每次在获取资源操作的时候都会上锁&#xff0c;这样其他线程想拿到这个资源就…

宇宙最强-GPT-4 横空出世:最先进、更安全、更有用

文章目录前言一、准确性提升1.创造力2.视觉输入3.更长的上下文二、相比于ChatGPT有哪些提升1.GPT-4 的高级推理能力超越了 ChatGPT2.GPT-4 在多种测试考试中均优于 ChatGPT。三、研究团队在GPT-4模型都做了哪些改善1.遵循 GPT、GPT-2 和 GPT-3 的研究路径2.我们花了 6 个月的时…

考研408 王道计算机考研 (初试/复试) 网课笔记总结

计算机初试、复试笔记总结&#xff08;导航栏&#xff09;&#x1f4dd; 408 考研人&#xff0c;人狠话不多&#xff1a;3、2、1&#xff0c;上链接 &#xff01; 408 考研初试 - 备战期&#xff0c;专业课笔记&#xff0c;导航&#x1f6a5;&#x1f6a5;&#x1f6a5; &…

史上最全最详细的Java架构师成长路径图,程序员必备

从新手码农到高级架构师&#xff0c;要经过几步&#xff1f;要多努力&#xff0c;才能成为为人倚重的技术专家&#xff1f;本文将为你带来一张程序员发展路径图&#xff0c;但你需要知道的是&#xff0c;天下没有普适的道理&#xff0c;具体问题还需具体分析&#xff0c;实践才…

01背包入门讲解

01背包问题研究的是&#xff0c;给定n件物品以及能够最大承重为maxWeight的背包&#xff0c;第i个物品的重量为item[i].weight,价值为item[i].value.每一件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大?dp[i][j]含义根据题干可知&#xff0c;最后的答…

程序员的逆向思维

前要&#xff1a; 为什么你读不懂面试官提问的真实意图&#xff0c;导致很难把问题回答到面试官心坎上? 为什么在面试结束时&#xff0c;你只知道问薪资待遇&#xff0c;不知道如何高质量反问? 作为一名程序员&#xff0c;思维和技能是我们职场生涯中最重要的两个方面。有时候…

AcWing算法基础课笔记 第一章 基础算法

新星计划-算法赛道 解读 (qq.com) 新星计划-算法赛道 解读 学习期间需要做什么学习算法&#xff0c;然后写文章 每位学员每周需保证更新不少于2篇的原创文章&#xff0c;如果当周少于2篇文章则失去参赛资格&#xff1b; 文章内容有什么要求&#xff1f;因为每个人的情况不同&am…

【数据结构】链表OJ(二)

Yan-英杰的博客 悟已往之不谏 知来者之可追 目录 一、反转链表 二、合并两个有序链表 三、链表分割 四、链表的回文结构 一、反转链表 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xf…
最新文章