嵌入式 linux入 门第二课, linux 文件系统、文件类型及权限管理。 ...... 矜辰所致前言在上文我们说过:在linux中一切接文件。 既然所有东西都是文件,那么如何区分不同的东西?
本文我们就来学习说明一下 linux 文件系统 以及对文件的权限管理 。
在文章中我们会使用一些 shell 命令进行操作,虽然系列文章还没有讲到 shell 命令,但是作为嵌入式工程师,多多少少也得知道是什么一个东西,就像 windows 有 cmd 命令一样,玩 rt-thread 的时候也会使用到 shell 命令,即便这些你都不知道,在下一篇 linux 入门会记录说明一些常用的 linux shell 命令,本文的命令也可以作为学习了解。
嵌入式 linux 入门系列博文:
嵌入式 linux 入门(一、linux 基本介绍及文件结构)
.
我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!
一、linux 文件属性我们进入到 ubuntu 系统,打开终端,默认是进入到我们自己的用户目录下面,我们使用 ls -l (查看该目录下所有文件的详细信息)命令,查看文件详情,如下图:
在上面图片中的目录详情,我们先整体来说明一下各部分的含义:
我们主要需要了解文件权限的含义:
文件类型后面的9个字符以3个为一组,第一组表示“文件所有者的权限”,第二组表示“用户组的权限”,第三组表示“其他非本用户组的权限”。(用户和用户组的知识,本文后面会有对应的说明。)
每组都是 rwx 的组合,其中 r 代表可读,w 代表可写,x 代表可执行,- 代表没有这个权限。
1.1 linux 文件类型在linux 中,一共有7种文件类型,如下表格:
字母类型说明
- 普通文件 普通文件包括 文档图片音乐等;纯文本文件(ascii)、二进制文件(binary)、数据格式的文件(data)、各种压缩文件
d 目录文件 目录,可用 cd 命令进入
c 字符设备文件 linux 驱动里面的字符设备驱动,比如 串行设备,音频设备,键盘、鼠标等等
b 块设备文件 存储设备驱动,比如硬盘,u盘等
p 管道文件 fifo也是一种特殊的文件类型,它主要目的是解决多个程序同时存取一个文件所造成的错误
l 链接文件 类似windows下面的快捷方式
s 套接字文件 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信
我们在上面文章的一些图片中已经看到过 普通文件,和目录文件。
那么我们通过上一篇文章嵌入式 linux 入门(一、linux 基本介绍及文件结构)应该可以知道,在目录 /dev 中应该有很多与设备有关的文件,如下图:
字符设备,块设备,还有连接文件都看到了。
还有一点可以说明一下, 我们后面学习 linux 驱动开发基本都是与 字符设备文件 和块设备文件 打交道。
文件类型这个基本的知识,也好理解,没有什么复杂的,我们知道了就可以。
1.2 linux 文件权限及修改在上面我们讲过文件的 3 种读写权限:读(r)、写(w)和执行(x)。
除了用 r、w 和 x 表示以外,我们也可以使用二进制数表示,三种权限就可以使用 3 位二进制数来表示,一种权限对应一个二进制位,如果该位为1就表示具备此权限,如果该位为 0就表示没不具备此权限:
那么组合一下,所有的文件共有 8 种不同的权限组合:
在linux 系统中,使用命令“chmod”修改一个文件的权限。
我们经常看到前辈们使用的一条指令为 : chmod 777 xxxx(文件名字),意思就是把这个文件的权限全面开放,对于初学者来说,首先记住这条指令就可以了。
但是要记住,系统本身的文件,千万不要瞎修改,可以在自己的账户下随便新建一个文件作为测试,自己修改看看。
比如,我们做个简单的测试,如下图:
在我们以后使用 linux 的时候,经常会遇到权限不够的问题,我们一般都会在命令前加上一个 sudo ,比如下图测试:
上图中,我用自己的 qzh 账户尝试在根目录 “/” 创建文件 test,给出权限不够的提示。只有 root用户才能在根目录“/”下创建文件 , 所以使用了 sudo 命令暂时获取管理员用户权限。
当然接下来的删除,也是需要 sudo 命令的:
上面sudo 这个命令以后需要经常使用,需要记住。
二、linux 用户系统在上文说明 linux 文件的设备类型的时候,有提到用户权限,用户组权限,和其他用户权限。
那么我们需要明白什么是用户? 什么是用户组?
2.1 linux 的用户linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。其实在我们使用 windows 系统的时候,也有用户的概念,只是日常应用很少创建多个用户,切换来切换去,可能相对多的时候,也只是右键 “以管理员身份运行” 某个程序。
在安装 ubuntu系统的时候被要求创建一个账户,当我们创建好账号以后,系统会在目录/home 下以该用户名创建一个文件夹,所有与该用户有关的文件都会被存储在这个文件文件夹中。同样的,创建其它用户账号的时候也会在目录/home 下生成一个文件夹来存储该用户的文件,如下图:
linux 的用户分类:
linux 用户类型分为以下 3类:
管理员:root 用户,系统管理员,具有所有权限。系统用户:管理系统运行服务,系统中系统服务由不同用户运行,更加安全,默认被限制登录系统。普通用户:用于日常工作而不能管理系统的普通用户,只有一部分权限。在我们使用的 ubuntu 中,上面的 qzh 用户属于普通用户,但是他是按照系统时候创建的用户,其权限比后面创建的用户大一点,但是没有 root 用户权限大。
这个地方初次创建的用户,比后面创建的普通用户的区别暂时没有必要研究,因为后期我们在使用过程中基本都是在初次创建的用户下面,遇到权限问题可以临时获取管理员,这里做个了解即可。
uid每个用户都有一个 id 号,称为 uid,操作系统通过 uid 来识别是哪个用户,用户相关信息可以在文件 /etc/passwd 查看到 :
每行用户信息都以 “:” 作为分隔符,划分为7个字段,每个字段所表示的含义如下:
用户名:密码:uid:gid:描述性信息:主目录:默认shell每一行都是一个用户的信息,意思如下图解释:
上面第二个密码“x” ,在以前版本的 linux 系统中存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,但是由于 /etc/passwd 文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多linux 版本都使用了shadow技术,把真正加密后的用户口令存放到 /etc/shadow 文件中,而在 /etc/passwd 文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*”来表示。
那么结合这个文件,我们可以再次说明一下 linux 系统中的几个用户 uid:
超级用户 uid 0 :
系统用户 uid 1-999 :
普通用户 uid 1000以上:
特殊的来宾账号:
nobody这个的帐号uid为65534,这个用户的权限会进一步的受到限制,一般用于实现来宾帐号。
系统是根据 uid 来认定用户的权限而不是名字。如果把自己创建的用户 uid 改成 0 ,那么系统登录会把用户视为管理员用户。
2.2 linux 的用户组什么是用户组?
用户组是具有相同特征用户的逻辑集合, 有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权。
如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是 建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限,这就是用户组。
将用户分组是linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同linux 系统对用户组的规定有所不同,如linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。每个用户在被创建时均会创建一个默认组(其gid与uid相同,叫作基本组或初始组),而后加入的组叫作扩展组或附加组。
gidgid 是用户组的编号,可以将多个用户加入到某个组中,方便指派任务或工作。 和 uid 一样也是有一个对应的文件保存信息,用户组名和gid相关信息可以在文件 /etc/group 查看到:
每行的用户组的信息都以 “:” 作为分割符,划分为4个字段,每个字段所表示的含义如下:
组名:密码:gid:该用户组中的用户列表每一行都是一个用户组的信息,组中的用户列表只包括附加用户,如果该组是某个用户的初始组,则这个用户不会出现在这个用户列表中,如下图:
2.3 文件归属者修改命令相对于修改权限来说,修改归属者没那么常用,简单了解一下。
使用命令“chown”修改一个文件的所属者和所属:
chown [参数] [用户名.] [文件名/目录] chown [-cfhvr] [--help] [--version] user[:group] file...简单测试如图:
一些常用的指令我们下一篇讲 shell 命令的时候都会有说明。
三、linux 文件系统简介实际上,还需要说明一个文件系统的概念可以说明,文件系统用来组织计算机的文件和资料的系统。
此部分对于初学者,了解一下就好,后面如果真的遇到文件类型的问题再看一篇才好理解。
操作系统就是处理各种数据的,这些数据在硬盘上就是二进制,我们想要看懂这些数据,要有一个翻译器,将这些二进制的数据还原为人类能看懂的文件形式,这个工作就是由文件系统来完成的,文件系统的目的就是实现数据的查询和存储。
由于使用场合、使用环境的不同,linux有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、u 盘、sd卡、nand flash、nor flash、网络存储设备等。不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理 nand flash 的话使用 yaffs 文件系统,管理硬盘、sd 卡的话就是 ext 文件系统等等。
比如在我们使用 windows 的时候,格式化一个 u 盘,就需要选择文件系统,如下图:
3.1 linux文件系统类型和 windows 类似,在 windows 下有 fat32、ntfs 和exfat 这样的文件系统,在linux下又有哪些文件系统呢,linux 下的文件系统主要有 ext2、ext3、ext4 等文件系统。
linux 还支持其他的 unix文件系统,比如xfs、jfs、ufs 等,也支持windows的 fat文件系统和网络文件系统 nfs等。
ext2
具有极快的速度和极小的cpu占用率,可用于硬盘和移动存储设备,ext2是linux早期的文件系统,但是随着技术的发展 ext2文件系统已经不推荐使用了。
ext3
增加日志功能,可回溯追踪,完全兼容 ext2文件系统,ext3支持大文件;
ext4
ext4 相比与ext3提供了更佳的性能和可靠性,并且功能更丰富,ext4 向下兼容 ext3 和 ext2,因此可以将 ext2 和 ext3 挂载为 ext4。
日志式文件系统,支持1eb(1024*1024tb),最大单文件16tb,支持连续写入可减少文件碎片。
在终端中输入如下命令可查询当前磁盘挂载的文件系统:
df -t –h比如查询我安装的 ubuntu 使用的哪个版本的文件系统如下图:
上图中最后一个项目是“挂载点”,在 linux 下创建一个分区并且格式化好以后我们要将其“挂载”到一个目录下才能访问这个分区,这个我们后期会有对应介绍。
结语本文我们认识了 linux 的 7 种文件类型,知道如何查看文件类型,以及对文件的权限管理方式。
然后还任何了一下 linux 的用户系统,知道了 用户 与 用户组的概念,记住两个概念 uid 和 gid: 用户id 和 用户组 id。
然后知道了通过两个文件 /etc/passwd 和 /etc/group 可以查看当前系统下所有用户 和用户组的信息。
最后还简单的介绍了一下 linux 的文件系统。
这些都是 linux 的基础知识,内容简单不难理解,但是是学习嵌入式 linux 入门的必须要知道了解的内容,在下一篇文章,我们开始学习常用的 shell 命令。
本文就到这里,谢谢大家!
基于嵌入式Qt的车载GUI平台的设计详解
NMOS管应用电路设计
选择智能交互大屏,让企业展厅更有看点!
Wi-Fi 6和6E有什么区别 到底哪个好
采用SIEMENS S7-200小型PLC在复合机张力控制系统中的应用
嵌入式Linux入门(二、Linux文件系统、文件类型及权限管理)
MANET路由协议性能对比
ttl与非门中不用的输入端如何处理?
大众EA211发动机,燃烧效能提高10%
平价蓝牙耳机哪款好?适合学生党的四款蓝牙耳机推荐
2016新款MacBook Pro续航的续航能力究竟是好是坏?官方给你解答
VR行业现状以及VR的下一步
佳能新品下月发布 50/85/135人像镜怎么选才好
2020年Q1季度共有106款手机申请进网,5G款型占比53.77%
SS2168氯气传感器CL2
怎样将DHT11湿度传感器与ESP8266和ThingSpeak连接并监控数据
longsys+Marvell优势互补 合力开拓高品质SSD市场
国际半导体设备公司排名
无线充电局面扑朔迷离 统一标准尚需时日
基于NuVolta NU8060Q无线充电之车载快充应用