Linux sysfs文件权限探究 (linux sysfs 文件权限)

在Linux系统中,sysfs是一个非常重要的文件系统,是一个虚拟文件系统,用于向用户空间提供Linux内核与硬件设备及其驱动程序相关的各种信息。这些信息以文件的形式展现在/sys目录下,并可供用户空间程序访问和操作。由于sysfs文件系统的重要性,因此探究它的文件权限也是必不可少的。

文件权限简介

Linux里每个文件和目录都有着自己的权限,权限规定了该文件或目录被哪些用户和组所能访问,以及可以执行哪些操作。权限被分为三类:读权限(r),写权限(w)和执行权限(x)。对于每个文件和目录,都可以对其所有者、所属组及其他用户三种权限进行设置。

文件权限通常用数字表示,共有4位,如744、644、755、666等。第1位表示文件类型,d表示目录,-表示文件,l表示链接文件等,后3位表示各个用户类别的权限,第1位表示所有者,第2位表示所属组,第3位表示其他用户。数字权限是由各个权限种类的值相加再计算二进制所得到的数字结果。

sysfs的特殊权限

sysfs是一个虚拟文件系统,其文件具有特殊的权限,需要我们认真探究。根据GNU编译器的C语言源代码在/sys/devices/system/cpu/cpu0/topology/cpu_type进行分析,可知sysfs在访问内核树而不是文件系统。因此,在实验中,我建议使用更严格的权限来保护sysfs系统。

sysfs系统对“其他用户”没有读、写或执行权限,如下表示:

“`

root@ubuntu:~# ls -l /sys/class

总数 0

drwxr-xr-x 2 root root 0 9月 9 16:05 acpi

drwxr-xr-x 3 root root 0 9月 9 16:05 backlight

drwxr-xr-x 3 root root 0 9月 9 16:05 block

drwxr-xr-x 3 root root 0 9月 9 16:05 bsg

drwxr-xr-x 4 root root 0 9月 9 16:05 bus

drwxr-xr-x 2 root root 0 9月 9 16:05 char

drwxr-xr-x 13 root root 0 9月 9 16:05 dma

drwxr-xr-x 3 root root 0 9月 9 16:05 dmi

drwxr-xr-x 2 root root 0 9月 9 16:05 driver

drwxr-xr-x 3 root root 0 9月 9 16:05 firmware

drwxr-xr-x 3 root root 0 9月 9 16:05 graphics

drwxr-xr-x 2 root root 0 9月 9 16:05 hdmi

drwxr-xr-x 5 root root 0 9月 9 16:05 hwmon

drwxr-xr-x 4 root root 0 9月 28 22:47 i2c-adapter

drwxr-xr-x 3 root root 0 9月 9 16:05 i2c-dev

drwxr-xr-x 3 root root 0 9月 9 16:05 input

drwxr-xr-x 4 root root 0 9月 9 16:05 iommu

drwxr-xr-x 2 root root 0 9月 9 16:05 iommu_groups

drwxr-xr-x 3 root root 0 9月 9 16:05 irq

drwxr-xr-x 2 root root 0 9月 9 16:05 memstick

drwxr-xr-x 4 root root 0 9月 9 16:05 misc

drwxr-xr-x 3 root root 0 9月 9 16:05 mmc_host

drwxr-xr-x 3 root root 0 9月 9 16:05 mqueue

drwxr-xr-x 3 root root 0 9月 9 16:05 net

drwxr-xr-x 2 root root 0 9月 9 16:05 nvme

drwxr-xr-x 2 root root 0 9月 9 16:05 pci_bus

drwxr-xr-x 3 root root 0 9月 9 16:05 platform

drwxr-xr-x 3 root root 0 9月 9 16:05 power_supply

drwxr-xr-x 4 root root 0 9月 9 16:05 regulator

drwxr-xr-x 5 root root 0 9月 9 16:05 rtc

drwxr-xr-x 2 root root 0 9月 9 16:05 scsi_disk

drwxr-xr-x 4 root root 0 9月 9 16:05 serial

drwxr-xr-x 3 root root 0 9月 9 16:05 soc

drwxr-xr-x 2 root root 0 9月 9 16:05 spi_master

drwxr-xr-x 3 root root 0 9月 9 16:05 spi_slave

drwxr-xr-x 3 root root 0 9月 9 16:05 thermal

drwxr-xr-x 3 root root 0 9月 9 16:05 tty

drwxr-xr-x 2 root root 0 9月 9 16:05 ubi

drwxr-xr-x 3 root root 0 9月 9 16:05 umisc

drwxr-xr-x 3 root root 0 9月 9 16:05 umon

drwxr-xr-x 3 root root 0 9月 9 16:05 vc

drwxr-xr-x 12 root root 0 9月 9 16:05 video4linux

drwxr-xr-x 4 root root 0 9月 9 16:05 vtconsole

drwxr-xr-x 3 root root 0 9月 9 16:05 w1

drwxr-xr-x 3 root root 0 9月 9 16:05 watchdog

sysfs系统中,/sys/bus下的文件和目录有特殊的权限,只有root用户和事先预设的bus ID的用户能读、写和执行。如下所示:

“`

root@ubuntu:~# ls -l /sys/bus

总数 0

drwxr-xr-x 2 root root 0 9月 9 16:05 event_source

drwxr-xr– 3 root root 0 9月 9 16:05 i2c

drwxr-xr– 3 root root 0 9月 9 16:05 ieee802154

drwxr-xr– 3 root root 0 9月 9 16:05 mdio_bus

drwxr-xr– 3 root root 0 9月 9 16:05 mhi

drwxr-xr– 3 root root 0 9月 9 16:05 mmc

drwxr-xr– 3 root root 0 9月 9 16:05 ncsi

drwxr-xr– 3 root root 0 9月 9 16:05 of_platform

drwxr-xr– 3 root root 0 9月 9 16:05 opal

drwxr-xr– 12 root root 0 9月 9 16:05 pci

drwxr-xr– 3 root root 0 9月 9 16:05 pnp

drwxr-xr– 3 root root 0 9月 9 16:05 ras

drwxr-xr– 2 root root 0 9月 9 16:05 rapidio

drwxr-xr– 3 root root 0 9月 9 16:05 rcar_du

drwxr-xr-x 3 root root 0 9月 9 16:05 regmap

drwxr-xr– 2 root root 0 9月 9 16:05 s390_bus

drwxr-xr– 3 root root 0 9月 9 16:05 sdio

drwxr-xr– 3 root root 0 9月 9 16:05 sdw

drwxr-xr– 3 root root 0 9月 9 16:05 serdev

drwxr-xr– 2 root root 0 9月 9 16:05 b

drwxr-xr– 3 root root 0 9月 9 16:05 spmi

drwxr-xr– 3 root root 0 9月 9 16:05 taos-evm

drwxr-xr– 3 root root 0 9月 9 16:05 tcpci

drwxr-xr– 2 root root 0 9月 9 16:05 thunderbolt

drwxr-xr– 2 root root 0 9月 9 16:05 u

drwxr-xr– 3 root root 0 9月 9 16:05 w1

drwxr-xr– 3 root root 0 9月 9 16:05 virtio-fs

sysfs文件和目录的权限分析

sysfs系统的访问权限与一般的Linux文件系统不同,sysfs系统主要用于向用户空间提供内核信息,因此只有具有特殊权限的用户才能访问和操作sysfs文件。sysfs文件的访问权限规则如下:

1、sysfs目录下的子目录和文件,对于“其他用户”来说,不具有相应的权限,但对于sysfs的内核而言,不存在这种限制,可以对其进行读写操作。

2、sysfs文件必须在sysfs树上有一个节点,否则文件将失效。sysfs树是由sysfs_dirent代表的节点构成的。

3、sysfs系统中,只有匹配内核驱动程序的类型和版本的设备驱动程序才被视为是可用的设备。用于访问sysfs文件的用户空间程序必须匹配相应的内核驱动程序。

sysfs的文件和目录权限非常严格,只有具有特殊权限的用户才能进行访问和操作,这也给使用者带来了很大的安全性保障。

结论

sysfs是一个非常重要的虚拟文件系统,也是Linux系统的一部分。sysfs以文件的形式展现了Linux内核与硬件设备及其驱动程序相关的各种信息。由于sysfs文件的特殊性,对其探究文件权限也是必须的。在实验中我们可以看到,sysfs文件的权限非常严格,只有具有特殊权限的用户才能进行访问和操作。因此,在使用sysfs的过程中,一定要注意其特殊性质,确保系统的安全性。


数据运维技术 » Linux sysfs文件权限探究 (linux sysfs 文件权限)