为什么我不能在/ sys中创建一个目录

我正在学习Ubuntu并尝试一些事情。

我注意到我无法在/ sys中创建一个目录

这是一个特殊目录还是什么? 还有其他类型的目录吗?

(我做了一个sudo -i和一个chmod a+w /sys

首先,您应该更改/sys的权限( sudo chmod ar /sys将执行此操作,因为默认权限为dr-xr-xr-x )。 /sys不应该是世界可写的!

通常,要在主文件夹,外部媒体和/tmp文件夹之外的系统部分中创建文件和目录,您应该使用sudo root身份执行 ,而不是通过更改权限或所有权来授予自己访问权限。 特别不建议使目录可以写入世界。

有关推荐方式的信息,请参阅:

  • RootSudo (在Ubuntu文档维基中)
  • 如何在我不拥有的地方重命名项目,比如/,为什么我不应该?
    (关于重命名,但相关,并详述一些重要概念)

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

通常是你应该做的,编辑或创建root拥有的目录的新内容。 然而…

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

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

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

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

但这仍然必须以root身份完成。 如上所述,您应该只使用sudo以root身份执行这些操作,而不是更改/sys或其任何部分的权限。

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

有关/sys如何工作的更多信息,请参阅:

  • sysfs(维基百科)
  • sys上的kernel.org文档 ( 从这里链接到)

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

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

  • man 2 sysfs
  • 如何正确创建`sysfs文件

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

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

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