在Linux系统中,sysfs是一个非常重要的文件系统,是一个虚拟文件系统,用于向用户空间提供Linux内核与硬件设备及其驱动程序相关的各种信息。这些信息以文件的形式展现在/sys目录下,并可供用户空间程序访问和操作。由于sysfs文件系统的重要性,因此探究它的文件权限也是必不可少的。
创新互联公司是一家专业提供宽城企业网站建设,专注与成都网站制作、网站建设、H5响应式网站、小程序制作等业务。10年已为宽城众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
文件权限简介
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的过程中,一定要注意其特殊性质,确保系统的安全性。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220【解决方法】
1、通过mount查看当前参数:
# mount
/dev/sda2 on / type ext3 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda5 on /boot type ext3 (rw,acl,user_xattr)
/dev/sda9 on /home type ext3 (rw,acl,user_xattr)
/dev/sda10 on /opt type ext3 (rw,acl,user_xattr)
/dev/sda8 on /tmp type ext3 (rw,acl,user_xattr)
/dev/sda6 on /usr type ext3 (rw,acl,user_xattr)
/dev/sda7 on /var type ext3 (rw,acl,user_xattr)
通过查看可以发现,当前挂载的权限是rw权限。
2、fsck修复
[ ~]# umount /opt/
umount: /opt: device is busy
umount: /opt: device is busy
[ ~]# fuser -m /dev/sda10
/dev/sda10: 11334
[ ~]# ps auxww|grep 11334
apache.0 0.? S 09:47 0:00 /usr/in/httpd -k start -DSSL
root.0 0.pts/0 R+ 09:50 0:00 grep 11334
[ ~]# service httpd stop
Stopping httpd: [ OK ]
[ ~]# umount /opt/
[ ~]# fsck -V -a /dev/sda10
fsck 1.39 (29-May-2023)
[/in/fsck.ext3 (1) — /opt] fsck.ext3 -a /dev/sda10
/opt: recovering journal
/opt: clean,/files,/blocks
3、岩键硬盘检测
这个可以根据OEM厂商提供的针对相关系统的工具而定,常用的如HP的hpacucli 、DELL的delldset、ATAE的disk_info_test等。
【chattr的基本语法】
1、培者$ chattr [-RVf][操作符][标志位]文件。
2、其中操作符可以是“+”(把选定的标志位添加到标志位列表)、粗中巧“-”(从标志位列表中移除选定的标志位)、或者“=”(强制使用选定的标志位)。
3、下面是一些可用的标志位:
a: 只能以追加模式打开。
A: 不能更新atime(文件访问时间)。
c: 当被写入磁盘时被自动压缩。
C: 关掉“写时复制”。
i: 不可变更。
s: 通过自动归零来安全删除。(LCTT 译注:一般情况文件被删后内容不会被修改,改标志位会使得文件被删后原有内容被“0”取代)
mkdir: cannot create directory `/usr/local/share/man/man8′: Permission denied 不能创建目录 `/usr/local/share/man/man8′ 肯定是指man8目录不能创建 后面提到不允许错误 请注意 这个错误是指你mkdir时不敏改允许 而不桥拿差是你进入目录时不允许 所以不需要该权限的 因为是mkdir错误 切换成root把或者试试前面加sudo 在敏皮创建 不明白的再说
权埋桐戚限不够, 你可以进入root帐号在建立文件夹弯陵, 或者打轮空上 sudo mkdir 123,
进入root帐号 你可以打 su -
根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置。
Linux的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序,一般说来根目录”/”下的顶层目录都有一些比较固定命名和用途。
下面列出了一个Linux根文件系统中的比较常见的目录结构:
/bin 存放二进制可执行命令的目录
该目录下存放所有用户都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。
/bin目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,
/dev 存放设备文件的目录
该目录下存放的是设备文件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过”dev/ttySAC0″文件可以操作串口0,通过”/dev/mtdblock1″可以访问MTD设备的第2个分区。
/etc 存放系统管理和配置文件的目录
该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。
/home 用户主目录,首笑比如用户user的主目录就是/home/user,可以用~user表示
用户目录,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。
/lib 存放动态链接共享库的目录
该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如:/bin /in 目录下的程序。
/in存放系统管理员使用的管理程序的目录
该目录下存放系统命令,即只有管理员能够使段芹宏用的命令,系统命令还可以存放在/usr/in,/usr/local/in目录下,/in目录中存放的是基 本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/in,所以/in目录必须和根文件系统在同一个分区中。
/in目录下常用的命令有:shutdown reboot fdisk fsck等,本地用户自己安装的系统命令放在/usr/local/in目录下。
/tmp 公用的临时文件存储点
用于存放临时文件,通常是空目录,一些需要生握册成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。
/root 系统管理员的主目录
根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建一引起空的子目录,比如/mnt/cdram /mnt/hda1 。用来临时挂载光盘、硬盘。
/proc 虚拟文件系统,可直接访问这个目录来获取系统信息。
这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
/usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享,这些主要也符合FHS标准的。/usr中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如/var。/usr目录在嵌入式中可以精减。
/var 某些大文件的溢出区
与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。
一、移植环境:
1、 Ubuntu 10.10发行版
2、 u-boot.bin
3、 目标机:FS_S5PC100平台
4、 交叉编译器 arm-cortex_a8-linux-gnueabi-gcc
二、移植步骤
1、 源码下载
我们选择的版本是busybox-1.17.3.tar.bz2下载路径为:
2、 解压源码
$ tar xvf busybox-1.17.3.tar.bz2
3、 进入源码目录
$ cd busybox-1.17.3
4、 配置源码
$ make menuconfig
Busybox Settings —>
Build Options —>
Build BusyBox as a static binary (no shared libs)
Force NOMMU build
Build with Large File Support (for accessing files > 2 GB)
(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix
() Additional CFLAGS
5、 编译
$ make
6、 安装
busybox默认安装路径为源码目录下的_install
$ make install
7、 进入安装目录下
$ cd _install
$ ls
bin linuxrc in usr
8、 创建其他需要的目录
$ mkdir dev etc mnt proc var tmp sys root
9、 添加库
在_install目录下创建一个lib文件夹,将工具链中的库拷贝到lib目录下
$ mkdir lib
$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/
删除lib下的所有目录、.o文件和.a文件,对库进行瘦身以减小文件系统的大小
$ rm *.o *.a
$ arm-cortex_a8-linux-gnueabi-strip lib/*
10、 添加系统启动文件
在etc下添加文件inittab
$ vim /etc/inittab
文件内容如下:
#this is run first except when booting in single-user mode.
:: sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# Start an “askfirst” shell on the console (whatever that may be)
::askfirst:-/bin/sh
# Stuff to do when restarting the init process
::restart:/in/init
# Stuff to do before rebooting
::ctrlaltdel:/in/reboot
在etc下添加文件fstab
$ vim /etc/fstab
文件内容如下:
#device mount-point typeoptionsdump fsck order
proc/procprocdefaults 0
tmpfs /tmptmpfsdefaults
sysfs/syssysfsdefaults
tmpfs/devtmpfsdefaults
这里我们挂在的文件系统有三个proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持
修改内核配置:
$ make menuconfigFile systems —>
Pseudo filesystems —>
Virtual memory file system support (former shm fs)
Tmpfs POSIX Access Control Lists
重新编译内核
$ make zImage
在etc下创建init.d目录,并在init.d下创建rcS文件
$ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS
rcS文件内容为:
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
为rcS添加可执行权限:
$ chmod +x init.d/rcS
在etc下添加profile文件
$ vim /etc/profile
文件内容为:
#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
#export PS1=”\\$ “
export PS1=”\# “
PATH=/bin:/in:/usr/bin:/usr/in
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
11、 设备文件创建
根文件系统中有一个设备节点是必须的,在dev下创建console节点
$ mknod dev/console c 5 1
linux sysfs 文件权限的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux sysfs 文件权限,Linux sysfs文件权限探究,Linux使用Mkdir时提示cannot create directory‘test’怎么办,如何制作Linux根文件系统的信息别忘了在本站进行查找喔。
成都网站建设选创新互联(☎:028-86922220),专业从事成都网站制作设计,高端小程序APP定制开发,成都网络营销推广等一站式服务。
新闻名称:Linuxsysfs文件权限探究(linuxsysfs文件权限)
网页链接:http://www.mswzjz.cn/qtweb/news5/55805.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能