CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例

本文主要是介绍CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CentOS6服务器在升级openssh时因系统目录权限异常(有隐含i权限属性),下属文件无法删除,导致系统问题的故障一例。

一、问题现象

CentOS6在升级openssh时,提示如下问题:

warning: /etc/ssh/sshd_config created as /etc/ssh/sshd_config.rpmnewerror: unpacking of archive failed on file /usr/sbin/.sshd.hmac;666173a8: cpio: open

升级失败,系统出现故障。

 二、问题分析

根据报错信息排查,“ /usr/sbin/.sshd.hmac ”,这是和ssh加密算法有关文件。报错信息表明在解压归档文件时,对于文件 /usr/sbin/.sshd.hmac 在执行复制(cp)操作时失败了,并给出了一个校验和(666173a8)。

1、检查/usr/sbin/.sshd.hmac 文件权限

执行 ls -al /usr/sbin/.sshd.hmac 命令,结果如下:

文件权限为777,权限很低,应该可以删除或覆写。

2、尝试删除/usr/sbin/.sshd.hmac文件

执行rm -rf /usr/sbin/.sshd.hmac,结果如下:

报错“Permission denied”,文件无法删除,但上面已经看过文件是777权限,当前用户为root,理应可以删除。

3、从文件权限“-rwxrwxrwx.”来看,文件属性不太正常,正常的文件不会属性不会有这个点。继续排查:

执行lsattr /usr/sbin/.ssh.hmac,发现该文件有隐含权限e

lsattr相关属性说明
  • i 属性设置之后可使文件不能被删除、改名,设置连接也无法写入或添加数据,只有 root 用户才能设置。
  • a 属性设置之后,文件只能增加数据,既不能删除也不能修改数据,只有 root 用户才能设置。
  • A 设置A属性后,若你访问此文件或目录时,它的访问时间 atime 不会被修改,可避免I/O较慢的机器过度访问磁盘。这对速度较慢的计算机有帮助。
  • s 属性设置之后,如果文件被删除,将从硬盘彻底删除。
  • S 属性设置之后,文件将同步写入硬盘(一般为异步)。
  • u 属性设置之后,文件删除后数据内容还存在磁盘中,可以找回文件。
  • e  属性表示文件正在使用扩展数据块映射磁盘上的块。该属性不能用chattr清除。
  • I  属性来指示目录是使用散列树进行索引。尽管它可以通过lsattr来显示该属性,但不能用chattr来设置或清除。

如文件有 i 和 a 属性 ,则不可被删除,本文件属性为e,理应可被删除。

4、继续排查上级、上上级目录权限

可见/根目录权限属性正常; /usr目录有e属性,也还正常;/usr/sbin目录有i、I、e三个属性,其中i属性指向该目录不的隐藏属性是不可删除的,I、e属性对文档操作并无影响。经了解,发现这里比较让人意外的是,该i或a属性有传递性,当删除其下面的文件时, 不管该文件权限如何,系统也会提示文件不可删除, 权限不足。因此如果想要删除具有i隐藏属性的目录下的文件,需要去掉该属性。

三、解决办法

1、执行chattr -i /usr/sbin

2、再执行lsattr /usr/sbin -d,可以看到i属性已去除

3、现执行rm -rf /usr/sbin/.sshd.hmac,文件成功删除。

4、再执行openssh的升级指令,系统顺利升级成功。

四、问题总结

检查其它系统主机,发现/usr/sbin目录并没有被赋予隐藏权限:

[root@localhost ~]# lsattr /usr/sbin -d
---------------------- /usr/sbin

因该主机系统较老旧,也不知道是谁出于什么原因对/usr/sbin目录配置了i隐藏属性,通过此例,可以知道,如果root用户在删除文件时仍提示权限不足,可以排查文件本身及其上级目录是否被设置了隐藏权限,如有,则可以进行权限调整。

这篇关于CentOS6系统因目录有隐含i权限属性致下属文件无法删除的故障一例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037529

相关文章

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Python实现自动化删除Word文档超链接的实用技巧

《Python实现自动化删除Word文档超链接的实用技巧》在日常工作中,我们经常需要处理各种Word文档,本文将深入探讨如何利用Python,特别是借助一个功能强大的库,高效移除Word文档中的超链接... 目录为什么需要移除Word文档超链接准备工作:环境搭建与库安装核心实现:使用python移除超链接的

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资