新聞中心
在Linux系統(tǒng)中,sysfs是一個非常重要的文件系統(tǒng),是一個虛擬文件系統(tǒng),用于向用戶空間提供Linux內(nèi)核與硬件設備及其驅(qū)動程序相關(guān)的各種信息。這些信息以文件的形式展現(xiàn)在/sys目錄下,并可供用戶空間程序訪問和操作。由于sysfs文件系統(tǒng)的重要性,因此探究它的文件權(quán)限也是必不可少的。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供寬城企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、網(wǎng)站建設、H5響應式網(wǎng)站、小程序制作等業(yè)務。10年已為寬城眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
文件權(quán)限簡介
Linux里每個文件和目錄都有著自己的權(quán)限,權(quán)限規(guī)定了該文件或目錄被哪些用戶和組所能訪問,以及可以執(zhí)行哪些操作。權(quán)限被分為三類:讀權(quán)限(r),寫權(quán)限(w)和執(zhí)行權(quán)限(x)。對于每個文件和目錄,都可以對其所有者、所屬組及其他用戶三種權(quán)限進行設置。
文件權(quán)限通常用數(shù)字表示,共有4位,如744、644、755、666等。第1位表示文件類型,d表示目錄,-表示文件,l表示鏈接文件等,后3位表示各個用戶類別的權(quán)限,第1位表示所有者,第2位表示所屬組,第3位表示其他用戶。數(shù)字權(quán)限是由各個權(quán)限種類的值相加再計算二進制所得到的數(shù)字結(jié)果。
sysfs的特殊權(quán)限
sysfs是一個虛擬文件系統(tǒng),其文件具有特殊的權(quán)限,需要我們認真探究。根據(jù)GNU編譯器的C語言源代碼在/sys/devices/system/cpu/cpu0/topology/cpu_type進行分析,可知sysfs在訪問內(nèi)核樹而不是文件系統(tǒng)。因此,在實驗中,我建議使用更嚴格的權(quán)限來保護sysfs系統(tǒng)。
sysfs系統(tǒng)對“其他用戶”沒有讀、寫或執(zhí)行權(quán)限,如下表示:
“`
root@ubuntu:~# ls -l /sys/class
總數(shù) 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系統(tǒng)中,/sys/bus下的文件和目錄有特殊的權(quán)限,只有root用戶和事先預設的bus ID的用戶能讀、寫和執(zhí)行。如下所示:
“`
root@ubuntu:~# ls -l /sys/bus
總數(shù) 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文件和目錄的權(quán)限分析
sysfs系統(tǒng)的訪問權(quán)限與一般的Linux文件系統(tǒng)不同,sysfs系統(tǒng)主要用于向用戶空間提供內(nèi)核信息,因此只有具有特殊權(quán)限的用戶才能訪問和操作sysfs文件。sysfs文件的訪問權(quán)限規(guī)則如下:
1、sysfs目錄下的子目錄和文件,對于“其他用戶”來說,不具有相應的權(quán)限,但對于sysfs的內(nèi)核而言,不存在這種限制,可以對其進行讀寫操作。
2、sysfs文件必須在sysfs樹上有一個節(jié)點,否則文件將失效。sysfs樹是由sysfs_dirent代表的節(jié)點構(gòu)成的。
3、sysfs系統(tǒng)中,只有匹配內(nèi)核驅(qū)動程序的類型和版本的設備驅(qū)動程序才被視為是可用的設備。用于訪問sysfs文件的用戶空間程序必須匹配相應的內(nèi)核驅(qū)動程序。
sysfs的文件和目錄權(quán)限非常嚴格,只有具有特殊權(quán)限的用戶才能進行訪問和操作,這也給使用者帶來了很大的安全性保障。
結(jié)論
sysfs是一個非常重要的虛擬文件系統(tǒng),也是Linux系統(tǒng)的一部分。sysfs以文件的形式展現(xiàn)了Linux內(nèi)核與硬件設備及其驅(qū)動程序相關(guān)的各種信息。由于sysfs文件的特殊性,對其探究文件權(quán)限也是必須的。在實驗中我們可以看到,sysfs文件的權(quán)限非常嚴格,只有具有特殊權(quán)限的用戶才能進行訪問和操作。因此,在使用sysfs的過程中,一定要注意其特殊性質(zhì),確保系統(tǒng)的安全性。
成都網(wǎng)站建設公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設,提供企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,響應式網(wǎng)站制作,設計師量身打造品牌風格,熱線:028-86922220Linux使用Mkdir時提示cannot create directory‘test’怎么辦
【解決方法】
1、通過mount查看當前參數(shù):
# 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)
通過查看可以發(fā)現(xiàn),當前掛載的權(quán)限是rw權(quán)限。
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、巖鍵硬盤檢測
這個可以根據(jù)OEM廠商提供的針對相關(guān)系統(tǒng)的工具而定,常用的如HP的hpacucli 、DELL的delldset、ATAE的disk_info_test等。
【chattr的基本語法】
1、培者$ chattr [-RVf][操作符][標志位]文件。
2、其中操作符可以是“+”(把選定的標志位添加到標志位列表)、粗中巧“-”(從標志位列表中移除選定的標志位)、或者“=”(強制使用選定的標志位)。
3、下面是一些可用的標志位:
a: 只能以追加模式打開。
A: 不能更新atime(文件訪問時間)。
c: 當被寫入磁盤時被自動壓縮。
C: 關(guān)掉“寫時復制”。
i: 不可變更。
s: 通過自動歸零來安全刪除。(LCTT 譯注:一般情況文件被刪后內(nèi)容不會被修改,改標志位會使得文件被刪后原有內(nèi)容被“0”取代)
mkdir: cannot create directory `/usr/local/share/man/man8′: Permission denied 不能創(chuàng)建目錄 `/usr/local/share/man/man8′ 肯定是指man8目錄不能創(chuàng)建 后面提到不允許錯誤 請注意 這個錯誤是指你mkdir時不敏改允許 而不橋拿差是你進入目錄時不允許 所以不需要該權(quán)限的 因為是mkdir錯誤 切換成root把或者試試前面加sudo 在敏皮創(chuàng)建 不明白的再說
權(quán)埋桐戚限不夠, 你可以進入root帳號在建立文件夾彎陵, 或者打輪空上 sudo mkdir 123,
進入root帳號 你可以打 su -
如何制作Linux根文件系統(tǒng)
根文件系統(tǒng)一直以來都是所有類Unix操作系統(tǒng)的一個重要組成部分,也可以認為是嵌入式Linux系統(tǒng)區(qū)別于其他一些傳統(tǒng)嵌入式操作系統(tǒng)的重要特征,它給Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。我們需要清楚的了解根文件系統(tǒng)的基本結(jié)構(gòu),以及細心的選擇所需要的系統(tǒng)庫、內(nèi)核模塊和應用程序等,并配置好各種初始化腳本文件,以及選擇合適的文件系統(tǒng)類型并把它放到實際的存儲設備的合適位置。
Linux的根文件系統(tǒng)以樹型結(jié)構(gòu)組織,包含內(nèi)核和系統(tǒng)管理所需要的各種文件和程序,一般說來根目錄”/”下的頂層目錄都有一些比較固定命名和用途。
下面列出了一個Linux根文件系統(tǒng)中的比較常見的目錄結(jié)構(gòu):
/bin 存放二進制可執(zhí)行命令的目錄
該目錄下存放所有用戶都可以使用的、基本的命令,這些命令在掛接其它文件系統(tǒng)之前就可以使用,所以/bin目錄必須和根文件系統(tǒng)在同一個分區(qū)中。
/bin目錄下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,
/dev 存放設備文件的目錄
該目錄下存放的是設備文件,設備文件是Linux中特有的文件類型,在Linux系統(tǒng)下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬件。比如通過”dev/ttySAC0″文件可以操作串口0,通過”/dev/mtdblock1″可以訪問MTD設備的第2個分區(qū)。
/etc 存放系統(tǒng)管理和配置文件的目錄
該目錄下存放著各種配置文件,對于PC上的Linux系統(tǒng),/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴于系統(tǒng)中所擁有的應用程序,依賴于這些程序是否需要配置文件。在嵌入式系統(tǒng)中,這些內(nèi)容可以大為精減。
/home 用戶主目錄,首笑比如用戶user的主目錄就是/home/user,可以用~user表示
用戶目錄,它是可選的,對于每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,里面存放用戶相關(guān)的配置文件。
/lib 存放動態(tài)鏈接共享庫的目錄
該目錄下存放共享庫和可加載(驅(qū)動程序),共享庫用于啟動系統(tǒng)。運行根文件系統(tǒng)中的可執(zhí)行程序,比如:/bin /in 目錄下的程序。
/in存放系統(tǒng)管理員使用的管理程序的目錄
該目錄下存放系統(tǒng)命令,即只有管理員能夠使段芹宏用的命令,系統(tǒng)命令還可以存放在/usr/in,/usr/local/in目錄下,/in目錄中存放的是基 本的系統(tǒng)命令,它們用于啟動系統(tǒng),修復系統(tǒng)等,與/bin目錄相似,在掛接其他文件系統(tǒng)之前就可以使用/in,所以/in目錄必須和根文件系統(tǒng)在同一個分區(qū)中。
/in目錄下常用的命令有:shutdown reboot fdisk fsck等,本地用戶自己安裝的系統(tǒng)命令放在/usr/local/in目錄下。
/tmp 公用的臨時文件存儲點
用于存放臨時文件,通常是空目錄,一些需要生握冊成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在并可以訪問。
/root 系統(tǒng)管理員的主目錄
根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。
/mnt 系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng)。
用于臨時掛載某個文件系統(tǒng)的掛接點,通常是空目錄,也可以在里面創(chuàng)建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光盤、硬盤。
/proc 虛擬文件系統(tǒng),可直接訪問這個目錄來獲取系統(tǒng)信息。
這是一個空目錄,常作為proc文件系統(tǒng)的掛接點,proc文件系統(tǒng)是個虛擬的文件系統(tǒng),它沒有實際的存儲設備,里面的目錄,文件都是由內(nèi)核臨時生成的,用來表示系統(tǒng)的運行狀態(tài),也可以操作其中的文件控制系統(tǒng)。
/usr 最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。
/usr目錄的內(nèi)容可以存在另一個分區(qū)中,在系統(tǒng)啟動后再掛接到根文件系統(tǒng)中的/usr目錄下。里面存放的是共享、只讀的程序和數(shù)據(jù),這表明/usr目錄下的內(nèi)容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關(guān)的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。
/var 某些大文件的溢出區(qū)
與/usr目錄相反,/var目錄中存放可變的數(shù)據(jù),比如spool目錄(mail,news),log文件,臨時文件。
一、移植環(huán)境:
1、 Ubuntu 10.10發(fā)行版
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、 創(chuàng)建其他需要的目錄
$ mkdir dev etc mnt proc var tmp sys root
9、 添加庫
在_install目錄下創(chuàng)建一個lib文件夾,將工具鏈中的庫拷貝到lib目錄下
$ mkdir lib
$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/
刪除lib下的所有目錄、.o文件和.a文件,對庫進行瘦身以減小文件系統(tǒng)的大小
$ rm *.o *.a
$ arm-cortex_a8-linux-gnueabi-strip lib/*
10、 添加系統(tǒng)啟動文件
在etc下添加文件inittab
$ vim /etc/inittab
文件內(nèi)容如下:
#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
文件內(nèi)容如下:
#device mount-point typeoptionsdump fsck order
proc/procprocdefaults 0
tmpfs /tmptmpfsdefaults
sysfs/syssysfsdefaults
tmpfs/devtmpfsdefaults
這里我們掛在的文件系統(tǒng)有三個proc、sysfs和tmpfs,在內(nèi)核中proc和sysfs默認都支持,而tmpfs是沒有支持的,我們需要添加tmpfs的支持
修改內(nèi)核配置:
$ make menuconfigFile systems —>
Pseudo filesystems —>
Virtual memory file system support (former shm fs)
Tmpfs POSIX Access Control Lists
重新編譯內(nèi)核
$ make zImage
在etc下創(chuàng)建init.d目錄,并在init.d下創(chuàng)建rcS文件
$ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS
rcS文件內(nèi)容為:
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
為rcS添加可執(zhí)行權(quán)限:
$ chmod +x init.d/rcS
在etc下添加profile文件
$ vim /etc/profile
文件內(nèi)容為:
#!/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、 設備文件創(chuàng)建
根文件系統(tǒng)中有一個設備節(jié)點是必須的,在dev下創(chuàng)建console節(jié)點
$ mknod dev/console c 5 1
linux sysfs 文件權(quán)限的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux sysfs 文件權(quán)限,Linux sysfs文件權(quán)限探究,Linux使用Mkdir時提示cannot create directory‘test’怎么辦,如何制作Linux根文件系統(tǒng)的信息別忘了在本站進行查找喔。
成都網(wǎng)站建設選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設計,高端小程序APP定制開發(fā),成都網(wǎng)絡營銷推廣等一站式服務。
網(wǎng)站題目:Linuxsysfs文件權(quán)限探究(linuxsysfs文件權(quán)限)
本文路徑:http://m.fisionsoft.com.cn/article/dpjccds.html


咨詢
建站咨詢
