我正在学习 Ubuntu 并进行各种实验。
我注意到我无法在 /sys 内创建目录
这是特殊目录吗?还有其他类型的目录吗?
(我做了 asudo -i
和 a chmod a+w /sys
)
答案1
首先,您应该将/sys
的权限改回来(sudo chmod a-r /sys
将会这样做,因为默认权限是dr-xr-xr-x
)。/sys
不应该是全球可写的!
一般来说,要在系统主文件夹、外部媒体和/tmp
文件夹之外的部分创建文件和目录,您应该做root
使用sudo
,而不是通过更改权限或所有权来授予自己访问权限。特别不建议将目录设置为全球可写。
有关推荐方法的信息,请参见:
- 根须藤(在 Ubuntu 文档 wiki 中)
- 我如何才能重命名不属于我的地方的项目,例如 / ,以及为什么我不应该这样做?
(关于重命名,但相关,并详细介绍了一些重要概念)
您甚至可以使用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,出于安全原因,通常不能更改事物;或者在这种情况下,因为有另一种风险小得多的方法来实现您的目标。