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

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

文件权限设定的作用

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

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

db2赋予用户查询权限_给数据库用户赋予dba权限_linux赋予用户读写权限

图1/proc下的部份文件

文件权限的界定

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

图2文件属性细节

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

db2赋予用户查询权限_linux赋予用户读写权限_给数据库用户赋予dba权限

图3文件权限

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

db2赋予用户查询权限_给数据库用户赋予dba权限_linux赋予用户读写权限

图4用户/用户组信息

给数据库用户赋予dba权限_linux赋予用户读写权限_db2赋予用户查询权限

文件权限修改方式

Linux提供chmod命令用于改变或则设置文件的权限。命令格式如图5,将hello文件的其它用户权限可执行属性去除:vmuser@Linux-host:hello$chmodo-xhello。若果同时设置u/g/olinux赋予用户读写权限,可用a表示,比如为hello降低全部用户可执行权限:vmuser@Linux-host:~$chmoda+xhello。

db2赋予用户查询权限_给数据库用户赋予dba权限_linux赋予用户读写权限

图5文件权限修改(一)

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

db2赋予用户查询权限_linux赋予用户读写权限_给数据库用户赋予dba权限

图6文件权限修改(二)

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

linux赋予用户读写权限_给数据库用户赋予dba权限_db2赋予用户查询权限

图7用户默认权限修改

怎样保护重要文件

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

权限管理方面,在修改文件权限时不可随便,例如直接chmod777filename。以系统或APP的工作日志文件为例linux赋予用户读写权限,它对绝大部份可登入用户仅可读,若对其覆盖写入将永久遗失日志信息。在复杂的多用户协同系统中,要严格管理单用户权限、组用户权限,慎用root用户权限。

db2赋予用户查询权限_给数据库用户赋予dba权限_linux赋予用户读写权限

图8只读日志文件

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

图9文件系统权限修改

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

快速了解Linux开机启动流程

整个开机流程可以归结为以下几点:

首先分个介绍:

ROMCode(芯片内固化好的一段代码),起最初的引导功能,包括初始化时钟、片内RAM、相关外设等,读取引脚配置信息等;

U-Boot(UniversalBootLoader),初始化相关硬件设备,引导系统加载内核镜像的一段程序;

Kernel,负责储存器、文件、外设等的管理,以及进程通讯、调度等;

文件系统,负责文件的管理;

应用,就是各个应用程序。

为形象点说明,我们将整个流程称作开一辆面包车,我们把前面那幅图进行修改:

给数据库用户赋予dba权限_linux赋予用户读写权限_db2赋予用户查询权限

上电后CPU执行内部固化好的一段代码(ROMCode),初始化相关外设,按照外部引脚的信息,选择从那个储存设备读取U-Boot(emmc、TF卡......),之后将U-Boot加载到显存上运行,U-Boot完成相关外设配置后,将Kernel加载到显存上,至此中标linux,由Kernel负责剩下的任务。

这儿ROMCode是上电后最先执行的动作,就相当一个启动引导的过程;U-Boot不仅初始外设外,还有很重要的一点就是为Kernel初始化相关显存空间,为其加载做打算,这或许就相当于要使底盘发动,要先为它提供能源;有了底盘没设备,空有动力也做不了哪些实质的事,相反,没有底盘提供动力,设备动不上去,这儿似乎就阐明着Kernel和文件系统密不可分的关系;当一切打算就绪后,我们就可以在里面编撰、运行应用相关的程序。

本文原创地址:https://www.linuxprobe.com/lxdwjzxsfywx.html编辑:刘遄,审核员:暂无