嵌入式软件开发之Linux 用户权限管理
创始人
2025-05-28 10:04:36
0

目录

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一样。

相关内容

热门资讯

安卓点歌系统连电脑,打造个性化... 你有没有想过,你的安卓手机里的点歌系统竟然可以和电脑无缝连接呢?这听起来是不是很神奇?没错,今天就要...
那个电视搭载安卓系统,智能娱乐... 你有没有想过,家里的电视竟然也能搭载安卓系统?没错,就是那个曾经只存在于手机和平板电脑上的操作系统,...
安卓系统反黄软件,净化网络环境 你有没有发现,随着智能手机的普及,我们每天的生活越来越离不开这个小小的屏幕了。但是,你知道吗?在这个...
安卓怎么测试系统好坏,安卓系统... 你有没有想过,你的安卓手机是不是真的像你想象中那么强大呢?别急,今天就来给你揭秘,怎么测试安卓系统的...
安卓8.0软件系统精简,极致体... 你知道吗?最近安卓系统更新换代的速度可真是让人眼花缭乱。这不,安卓8.0系统已经悄悄地来到了我们身边...
安卓脱敏系统是什么,隐私保护与... 你有没有想过,你的手机里那些看似普通的信息,其实可能藏着大大的秘密呢?今天,就让我来给你揭秘一个神秘...
64位系统安卓手机,畅享智能生... 你有没有发现,最近市面上那些64位系统安卓手机真是越来越火了?这不,我就买了一部,简直让我爱不释手!...
苹果系统用不惯安卓系统,跨越系... 你有没有发现,身边总有些人,他们用着苹果手机,却对安卓系统情有独钟?这究竟是怎么回事呢?今天,我们就...
安卓系统更新删软件,你准备好了... 亲爱的手机控们,你们有没有发现,最近你的安卓手机是不是总在默默更新呢?没错,就是那个让你又爱又恨的系...
安卓系统怎么安装winxp,安... 你有没有想过,在安卓系统上安装Windows XP这样的经典操作系统呢?想象在手机上就能体验到XP的...
安卓系统u3,新一代智能体验的... 你知道吗?在手机操作系统的大千世界里,安卓系统U3可是个隐藏的宝藏呢!它不仅拥有强大的功能,还能让你...
安卓系统装显卡教程,安卓系统轻... 你有没有想过,你的安卓手机或者平板,竟然也能装上显卡?是的,你没听错,就是显卡!这可不是什么天方夜谭...
崩坏3安卓换装系统,展现独特魅... 你有没有发现,最近玩《崩坏3》的小伙伴们都在热议一个新玩意儿——安卓换装系统!这可是个大新闻,让我来...
安卓系统访问用户中心,用户中心... 你有没有发现,每次打开安卓手机,总有一个神秘的地方隐藏在角落里,那就是用户中心。今天,就让我带你一起...
psv用安卓系统更新,轻松实现... 你有没有发现,你的PSV(PlayStation Vita)最近有点儿“懒洋洋”的?别急,别急,我来...
钉钉越狱 安卓系统,安卓系统下... 你知道吗?在科技圈里,最近可是掀起了一股“越狱”热潮。这不,钉钉这款办公软件在安卓系统上的越狱方法,...
安卓系统耳机定位功能,畅享智能... 你有没有发现,现在手机里的安卓系统越来越聪明了?它不仅能帮你找到失落的手机,还能帮你精准地找到耳机!...
安卓系统怎么玩4399,439... 你有没有想过,在安卓系统上玩4399游戏,竟然能这么有趣呢?没错,就是那个我们小时候就爱不释手的43...
系统克隆能用吗安卓,系统克隆助... 你有没有想过,如果你的手机突然“复活”了,那会是怎样一番景象呢?没错,我要说的就是那个神奇的系统克隆...
小电脑装安卓系统,小电脑搭载安... 你有没有想过,一台小小的电脑也能装上安卓系统?听起来是不是有点不可思议?别急,让我带你一探究竟,看看...