0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux下文件“哲学”是否与Windows相同?

工程师兵营 来源:网络 作者:网络 2022-07-11 15:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

“一切皆是文件”是Unix/Linux的基本哲学之一,目录、字符设备、块设备、套接字等在Unix/Linux都是以文件的形式存在。面对众多的文件,如何理解和管理他们的读、写、执行权限呢?

在Windows下,可以通过鼠标右击文件,在属性栏查看文件的权限。Linux下的文件“哲学”是否与Windows相同呢?我们从以下几点分析。

一、文件权限设定的作用

文件权限的设定是为了保护系统及用户数据的安全性。对于用户来说,最重要的事情就是数据、文件的私密性及安全性。从系统管理员到普通用户,从文件属性到文件特殊加密 ,无不围绕着一个主题:权限管理。若一个关键文件被意外写入,轻则数据丢失,重则系统崩溃。

以根目录下的/proc目录文件为例,该文件是linux内核提供的一种虚拟文件系统,可访问内核内部数据结构、改变内核设置的机制。其中swaps 为交换空间的使用情况,tty 保存tty设备信息,version Linux内核版本和gcc版本。我们可以发现,这些与系统紧密关联的文件全部为只读,即使对于root用户。

1.png

图1 /proc下的部分文件

二、文件权限的划分

Linux下的权限管理从访问者方面来看大致可分为三块,分别是用户、用户组、管理员。如图2,打开当前用户目录下的文件列表细节。大部分时候我们使用此命令仅仅是关注右半部分的信息,比如文件名、日期、大小等。左半部分展现的就是对应文件的权限信息了。

2.png

图2 文件属性细节

Linux系统对用户的权限有着严格的管理。如图3,可将一个文件的权限分为三部分:对文件所有者权限、对所有者所在用户组权限、对其他用户权限。其中,用户组(group)就是具有相同特征的用户的集合体。

3.png

图3 文件权限

用户和用户组的信息分别在/etc目录下的passwd、group文件内,可以使用cat命令直接读取。

4.png

图4 用户/用户组信息

三、文件权限更改方法

Linux提供chmod命令用于改变或者设置文件的权限。命令格式如图5,将hello 文件的其它用户权限可执行属性去掉:vmuser@Linux-host: hello$ chmod o-x hello。如果同时设置 u/g/o,可用 a 表示,例如为 hello 增加全部用户可执行权限:vmuser@Linux-host: ~$ chmoda+x hello。

5.png

图5 文件权限更改(一)

前面我们说到,linux的文件权限管理是一种“哲学美”,chmod命令还提供更间接的使用方式。如图6,分别将r、w、x对应为数字4、2、1,用数字之和代表该组权限值,比如rwx可用 7 表示, r-x 可用 5 表示。若想将hello文件设置为最宽松的权限,可直接使用命令chmod 777 hello。

6.png

图6 文件权限更改(二)

那么除了先创建文件再修改权限,是否可直接创建特定权限的文件呢?答案是肯定的,我们可以通过修改umask的值管理对应用户默认权限。可以直接输入umask获取当前用户的权限默认值,当然也可以使用umask=xxx去修改它。此外,若想永久设置umask的值,可以修改~/.bashrc或者./bash_profile。Umask的值与文件的权限并不是一一对应的,感兴趣到的读者可以查阅相关资料。

7.png

图7 用户默认权限更改

四、如何保护重要文件

文件的保护可以从量方面入手:文件的权限管理、文件及时备份。

权限管理方面,在更改文件权限时不可随意,比如直接chmod 777 filename。以系统或APP的工作日志文件为例,它对绝大部分可登录用户仅可读,若对其覆盖写入将永久丢失日志信息。在复杂的多用户协同系统中,要严格管理单用户权限、组用户权限,慎用root用户权限。

8.png

图8 只读日志文件

对于标准的rootfs,不建议普通用户直接去更改它,在uboot挂载该文件系统时直接赋予它只读权限。将bootargs的最后一项赋值为“ro”即为read only。若需临时修改为读写模式,可使用mount -o remount,rw /,用于临时修改为可读写模式,尽量避免修改uboot代码。

9.png

图9 文件系统权限更改

文件备份时保护重要文件的另一种手段,在严格的权限管理机制也不能保证万无一失。重要文件可使用脚本自动化、定时备份,必要时还可以将文件保存到其他物理存储介质或云盘中。在涉及到扣费、计费时,数据及文件的安全性显得尤为重要。

10.png

图10 文件系统双备份

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    218010
  • arm9
    +关注

    关注

    2

    文章

    290

    浏览量

    56188
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞凌嵌入式ElfBoard-Linux系统中的文件分类

    从本质上讲,Linux系统就是由文件组成的,一切皆文件linux系统设计的核心理念,接下来介绍一下文件类型的种类:1.普通
    发表于 12-09 08:59

    Linux新手通关!5分钟掌握文件/目录管理,告别“找不到北”

    新手入门:Linux 文件 / 目录管理实操指南 刚上手 Linux 的小伙伴,是不是常陷入这些 “混乱时刻”:想找的文件藏在层层目录里,翻半天找不到;误删
    的头像 发表于 11-17 10:42 173次阅读
    <b class='flag-5'>Linux</b>新手通关!5分钟掌握<b class='flag-5'>文件</b>/目录管理,告别“找不到北”

    windows环境下如何生成bitstream文件

    system.org我明白这个是E203的顶层文件,但是不知道在windows环境下这个文件该怎么使用
    发表于 11-06 06:18

    WindowsLinux环境下分别使用Olimex和蜂鸟调试器下载程序

    本队伍编号CICC3042,本篇文章介绍在WindowsLinux环境下分别使用Olimex和蜂鸟调试器下载程序,和上一篇Hbirdv2的移植配合使用。 使用过第一版蜂鸟的同学们可能按照书中
    发表于 10-31 08:26

    Windows10上运行vivado使用tcl文件创建E203项目路径错误的问题

    软件版本是vivado2020.1,开发板是MCU200T。由于习惯使用了Windows系统所以想在Windows上创建vivado项目进行开发。但是由于Makefile更适合Linux系统,所以
    发表于 10-28 07:19

    飞凌嵌入式ElfBoard-Vim编辑器之windows与ubuntu系统互传文件

    linux-4.1.15-elf1.tar.bz2、文件系统(本节以rootfs.tar.bz2为例)、命令行测试程序elf1_cmd_wdt.c放到Windows主机的共享文件夹后。
    发表于 10-20 08:46

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为一名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1047次阅读

    Linux系统目录结构全面剖析

    Linux文件系统采用层次化的目录结构,这种设计遵循了Unix哲学中的"一切皆文件"原则。理解Linux目录层次架构对于系统管理员、运维工程
    的头像 发表于 07-21 17:33 593次阅读

    聚徽厂家解码——工控机操作系统选择:WindowsLinux、QNX 如何匹配工业场景

    在工业自动化进程不断推进的当下,工控机作为核心设备,其操作系统的恰当选择对工业生产的稳定性、高效性和安全性起着决定性作用。常见的 WindowsLinux 和 QNX 操作系统,各自具备独特
    的头像 发表于 05-29 16:28 1252次阅读

    CCG7D ibs文件在哪里获取?

    我的客户想获取 CCG7D 的 ibs 档案。 以下文件是否公开? .s*p/.lib/.ibs 文件
    发表于 05-29 06:37

    不借助Linux系统,在Windows下如何搭建ZMC900E交叉编译环境

    不需要依赖笨重的虚拟机,也不需要安装双系统。抛开繁琐的环境准备,在Windows上轻松搭建交叉编译环境。本文将介绍如何在Windows上搭建交叉编译环境,不借助Linux系统,直接进行交叉编译。前言
    的头像 发表于 05-21 11:34 652次阅读
    不借助<b class='flag-5'>Linux</b>系统,在<b class='flag-5'>Windows</b>下如何搭建ZMC900E交叉编译环境

    如何将FX3与WSL(LinuxWindows 子系统)一起使用?

    如何将 FX3 与 WSL(LinuxWindows 子系统)一起使用? 我在 /dev/ 中找不到任何设备 我有许多项目在 Windows 上使用VISUAL STUDIO项目进行操作,因此请验证该设备
    发表于 05-06 07:11

    S32K在AUTOSAR中使用CAT1 ISR,是否需要执行上下文切换?

    如果我们在 AUTOSAR 中使用 CAT1 ISR,是否需要执行上下文切换?另外,是否需要返回指令才能跳回到作系统?您有没有带有 CAT1 ISR 的 S32K3x4 微控制器的示例?
    发表于 03-27 07:34

    如何实现Windows应用在Linux系统上的无缝运行

    统信 Windows 应用兼容引擎 V3.0 的推出,让用户可以在 deepin 系统上直接双击.exe文件运行 Windows 应用程序。 近期,我们收到了大家诸多的反馈信息。基于这些反馈,我们
    的头像 发表于 12-30 09:51 2540次阅读
    如何实现<b class='flag-5'>Windows</b>应用在<b class='flag-5'>Linux</b>系统上的无缝运行

    微软新功能:Windows与iPhone互联

    微软近期透露了一项创新功能,旨在让Windows用户能够像使用苹果的AirDrop一样,在iPhone与PC之间便捷地传输文件。这一名为Phone Link的应用,是微软专为Windows平台打造
    的头像 发表于 12-12 11:42 1214次阅读