Centos系统下“无法打开并写入文件”问题的解决
<p><span><strong>摘要</strong></span></p>
<p>
最近在工作中发行限了一个问题,当前是root用户,去编辑/etc/ssh/sshd_config 却提示没有权限修改。报错如"/etc/ssh/sshd_config" E212: 无法打开并写入文件。</p>
<p>
<span><strong>问题思考</strong></span></p>
<p>
既然提示没有权限,又是root用户,看肯定是给该文件设置了特殊的权限。检查特殊权限设置:</p>
<ul>
<li>
getfacl</li>
<li>
lsattr</li>
</ul>
<p>
getfacl 结果正常</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_705187">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ getfacl </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">getfacl: Removing leading </code><code class="bash string">'/'</code> <code class="bash plain">from absolute path names</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash comments"># file: etc/ssh/sshd_config</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash comments"># owner: root</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash comments"># group: root</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">user::rw-</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">group::---</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">other::---</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
lsattr提示错误:-bash: lsattr: command not found 没有该命令,奇怪。当前系统是CentOS release 6.5 (Final),那就尝试安装。</p>
<p>
查找得知lsattr和chattr属于安装包e2fsprogs,安装之。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_736879">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ yum </code><code class="bash functions">install</code> <code class="bash plain">e2fsprogs</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">设置安装进程</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">解决依赖关系</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">--> 执行事务检查</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">---> Package e2fsprogs.x86_64 0:1.41.12-18.el6_5.1 will be 升级</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">---> Package e2fsprogs.x86_64 0:1.41.12-23.el6 will be an update</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">--> 处理依赖关系 libss = 1.41.12-23.el6,它被软件包 e2fsprogs-1.41.12-23.el6.x86_64 需要</code>
</div>
<div class="line number8 index7 alt1">
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">... ...</code>
</div>
<div class="line number10 index9 alt1">
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">更新完毕:</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash spaces"> </code><code class="bash plain">e2fsprogs.x86_64 0:1.41.12-23.el6</code>
</div>
<div class="line number13 index12 alt2">
</div>
<div class="line number14 index13 alt1">
<code class="bash plain">作为依赖被升级:</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash spaces"> </code><code class="bash plain">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</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash spaces"> </code><code class="bash plain">libss.x86_64 0:1.41.12-23.el6</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
完毕!</p>
<p>
<span><strong>lsattr 检查</strong></span></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_75043">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ lsattr </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">----i--------e- </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这里的i 表示immutable,在文件上启用这个属性时,我们不能更改、重命名或者删除这个文件。</p>
<p>
这里的e 表示extent format,它表明该文件使用磁盘上的块的映射扩展。属于“正常”规则</p>
<p>
chattr删除不可修改属性</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_981840">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ chattr -i </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">iZ25zjpz5pqZ [~] 2017-12-16 10:59:14</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ lsattr </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">-------------e- </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">iZ25zjpz5pqZ [~] 2017-12-16 10:59:17</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$ vim </code><code class="bash plain">/etc/ssh/sshd_config</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">iZ25zjpz5pqZ [~] 2017-12-16 10:59:26</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">root@pts</code><code class="bash plain">/1</code> <code class="bash plain">$</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
从上面的操作可以看到我们取消i设置之后可以成功修改该文件。</p>
<p>
如果完成修改你可以让其恢复不可修改属性,可以执行chattr +i /etc/ssh/sshd_config</p>
<p>
<span><strong>总结</strong></span></p>
<p>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。</p>
<p>
原文链接:http://www.jianshu.com/p/eb76d618ccc5</p>
頁:
[1]