王晓良 發表於 2023-6-25 00:00:00

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">--&gt; 执行事务检查</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">---&gt; 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">---&gt; 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">--&gt; 处理依赖关系 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]
查看完整版本: Centos系统下“无法打开并写入文件”问题的解决