/sys是不同的;甚至root不能直接在那里创造东西

/sys是不同的;甚至root不能直接在那里创造东西

我正在学习 Ubuntu 并进行各种实验。

我注意到我无法在 /sys 内创建目录

这是特殊目录吗?还有其他类型的目录吗?

(我做了 asudo -i和 a chmod a+w /sys

答案1

首先,您应该将/sys的权限改回来(sudo chmod a-r /sys将会这样做,因为默认权限是dr-xr-xr-x)。/sys不应该是全球可写的!

一般来说,要在系统主文件夹、外部媒体和/tmp文件夹之外的部分创建文件和目录,您应该root使用sudo,而不是通过更改权限或所有权来授予自己访问权限。特别不建议将目录设置为全球可写。

有关推荐方法的信息,请参见:

您甚至可以使用gksudo nautilus(或者sudo -H nautilus如果您没有gksudo)打开 root 拥有的文件浏览器窗口。不过要小心——它可以做任何事情,而且大多数事情都是您可能不想做的事情。另外,请注意,如果您启动一个程序从 root 拥有的文件浏览器窗口,该程序也将以 root 身份运行。

那是一般来说您应该做什么,编辑或创建 所拥有的目录的新内容root。但是……

/sys是不同的;甚至root不能直接在那里创造东西

/proc和类似/dev,在 Ubuntu 和其他使用 Linux 内核的操作系统中/sys虚拟文件系统,它所代表的并不是你磁盘上(或任何地方)的真实文件。

简而言之,/sys是一种方式内核提供有关(物理和虚拟)设备的信息。

文件系统中的一些条目/sys也是有意义的可写的,写入这些条目是动态设置设备配置的一种方式。(这不应与/dev文件系统混淆;写入条目/dev是一种向设备发送数据。

但这仍然必须以 root 身份执行。您无需更改权限/sys或其任何部分,只需以 root 身份执行上述操作即可sudo

这个答案Unix.SE 上解释了如何做到这一点,甚至如何允许一些非管理员(不能以 root 身份执行大多数操作)更改某些/sys设置。

有关/sys其工作原理的详细信息,请参阅:

中的条目/sys由内核和驱动程序创建;您不能只从命令行创建它们。(如上所述,您可以编辑一些以 root 身份创建,但通常不能从用户空间创建新的,除非通过加载内核模块或以其他方式安装驱动程序或修改内核。

如果您恰好对编写驱动程序感兴趣,请参阅:

答案2

是的,/sys是一个“特殊”目录。来自维基百科

现代 Linux 发行版包含一个 /sys 目录作为虚拟文件系统(sysfs,类似于 /proc,它是 procfs),它存储并允许修改连接到系统的设备,而许多传统的 UNIX 和类 Unix 操作系统使用 /sys 作为内核源代码树的符号链接。

“存储并允许修改连接到系统的设备”非常重要。事实上,它/sys被用作虚拟文件系统,经过特殊安装,这就是为什么您(和 root)无法写入它的原因。我会避免弄乱它/sys。对于非常开放和透明的 Linux,出于安全原因,通常不能更改事物;或者在这种情况下,因为有另一种风险小得多的方法来实现您的目标。

相关内容