php can t open file,Linux下报错E212: Can't open file for writing解决方法

之前有朋友问我,在修改文件的时候提示报错E212: Can't open file for writing(如果你系统安装了中文语言包会提示“无法打开并写入文件”),奇怪的是我是用的账号,改文件也有执行权限,为何不能修改呢!

下面我说下我的思路:当前root账户编辑/etc/ssh/sshd_config却提示没有权限修改,报错如上描述。既然是有权限又提示这个过肯定是这个文件被赋予了其他特殊的权限。我们首先要检查下该文件的完整权限。

通常我们使用这两个命令来检查文件的特殊权限:

getfacl

lsattr

执行getfscl结果如下:

root@94ip $ getfacl  /etc/ssh/sshd_config

getfacl: Removing leading '/' from absolute path names

# file: etc/ssh/sshd_config

# owner: root

# group: root

user::rw-

group::---

other::---

一般系统在执行lsattr这个命令的时候会提示-bash: lsattr: command not found没有该命令,那就尝试安装下这个命令。

查找得知lsattr和chattr属于安装包e2fsprogs,用yum安装下:

root@94ip $ yum install -y e2fsprogs

设置安装进程

解决依赖关系

--> 执行事务检查

---> Package e2fsprogs.x86_64 0:1.41.12-18.el6_5.1 will be 升级

---> Package e2fsprogs.x86_64 0:1.41.12-23.el6 will be an update

--> 处理依赖关系 libss = 1.41.12-23.el6,它被软件包 e2fsprogs-1.41.12-23.el6.x86_64 需要

... ...

更新完毕:

e2fsprogs.x86_64 0:1.41.12-23.el6

作为依赖被升级:

e2fsprogs-libs.x86_64 0:1.41.12-23.el6  libcom_err.x86_64 0:1.41.12-23.el6  libcom_err-devel.x86_64 0:1.41.12-23.el6

libss.x86_64 0:1.41.12-23.el6

命令安装好了就使用lsattr来 检查下文件吧

root@94ip $ lsattr /etc/ssh/sshd_config

----i--------e- /etc/ssh/sshd_config

这里的i 表示immutable,在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件。(这就是之所以会出现这个错误的原因)

这里的e 表示extent format,它表明该文件使用磁盘上的块的映射扩展。属于“正常”规则。

接下来我们用chattr命令删除这个不可修改的属性。

root@94ip $ chattr -i /etc/ssh/sshd_config

root@94ip $ lsattr /etc/ssh/sshd_config

-------------e- /etc/ssh/sshd_config

root@94ip $ vim /etc/ssh/sshd_config

这里显示我们现在可以修改并保存该文件,完成修改你也可以用这个命令恢复不可修改的属性:

chattr +i /etc/ssh/sshd_config

问题解决!

或许你也可以尝试下下面这个方法:(由于小弟很懒没有亲自测试这个方法是否可行,如可使用请回复下高速小弟!)

保存文件时用  : w ! sudo tee %

tee 用于读取输入文件,同时保存

%表示当前编辑文件

(不过这种方法有个要求就是当前编辑用户必须在 sudoers这个文件中,这也是执行sudo命令的要求)

01903f2303fd0ac74e96dd767b78fe22.png

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
E212: Can't open file for writing是一个错误提示,表示无法打开文件进行写入操作。这个错误通常出现在用户没有足够的权限来修改文件的情况下。根据引用所提到的内容,可能是因为该文件被设置了特殊权限导致的。您可以使用getfacl和lsattr命令来检查特殊权限设置,确保您有足够的权限来进行写入操作。 另外,引用中提到了"lsattr: Inappropriate ioctl for device While reading flags on 7.05.p7"的错误提示。这个错误可能是由于读取文件属性时的设备不适当导致的。请确保您正在正确的设备上读取文件属性。 最后,引用提到了一个示例,通过sudo vim命令打开一个文件进行保存,但无法保存。这可能是由于您没有适当的权限来将更改保存到该文件中导致的。您可以尝试使用sudo命令以root权限来运行编辑器,并确认您具有适当的权限来进行写入操作。 综上所述,E212: Can't open file for writing错误通常是因为权限不足导致的。您可以通过检查特殊权限设置、确认设备以及使用适当的权限来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Centos系统下“无法打开并写入文件”问题的解决](https://download.csdn.net/download/weixin_38622611/14109021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vi编辑问件时出现错误:E212: Can't open file for writing](https://blog.csdn.net/weixin_35192920/article/details/117319019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [E212: Can‘t open file for writing 大概率是操作不当](https://blog.csdn.net/weixin_45813351/article/details/130106956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值