Linux 文件系统似乎有一层又一层的微妙之处,我偶然发现:
我有兴趣编辑这个文件:
[user@box ~]$ ls -l /a/b/c/foo.bar
-rw-rwxr-x 1 user user 144529 Jan 26 2018 /a/b/c/foo.bar
看起来它应该是用户可写的user
——真的吗?但是当我尝试在 vim 中编辑文件时,我得到一个“ W10: Warning: Changing a readonly file
”警告。
我知道文件可写性依赖于其包含文件夹的权限。我认为包含文件夹需要具有执行权限 - 是吗?我假设所需的目录权限也一直延伸到/
- 真的吗?
在我看来,上述文件的包含文件夹树具有执行权限:
[user@box ~]$ ls -ld /a/b/c/
drwxrwxrwx 2 user user 36864 Mar 5 17:50 /a/b/c/
[user@box ~]$ ls -ld /a/b/
drwxrwxr-x 4 user user 4096 Sep 22 2017 /a/b/
[user@box ~]$ ls -ld /a/
drwxrwxr-x 9 user user 4096 Sep 15 2017 /a/
[user@box ~]$ ls -ld /
drwxr-xr-x 24 root root 0 Aug 24 10:48 /
[user@box ~]$ whoami
user
据我所知,相关树中的每个目录都具有执行权限。起初,我怀疑它是否与/
被拥有有关root
,但它具有“其他人”的执行权限。另外,如果存在与/
由 拥有相关的问题root
,我想我将无法以除 之外的用户身份在文件系统上的任何位置写入文件root
,但事实并非如此。
任何人都可以想到/确定指出文件被视为只读的其他原因吗?
首先 - 你设置了不可变的标志
如果设置了不可变标志,则无法更改文件。请记住,权限不会覆盖该行为!
其次,检查文件所在的目录是否以只读方式安装在另一个磁盘或分区中,只需键入:
(没有参数)
如果您看到像您的目录这样以只读方式安装的内容,那是有原因的!将其重新安装为读写以获得幸运!
第三 - 也是最常见的,你只是在运行一个有错误的文件系统,要纠正它,你必须备份你可以备份的内容,重新启动,然后以单一模式登录并运行:
(ext4 可能需要更改为您的分区类型)
祝你好运!