操作系统:Centos 7.4
最终目标:安装 openssh-server
当前的问题:删除 sshd 的先前副本
先前的场景:由于 yum 错误,openssh-server 无法更新。我尝试删除 openssh-server,然后通过 yum 安装它,希望从头开始可以解决任何问题。然而,当前的问题与原始问题相同。
问题:尝试安装 openssh-server 时,Yum 尝试重命名现有的 sshd 文件时出现错误:
Installing : openssh-server-7.4p1-13.el7_4.x86_64 1/1
Error unpacking rpm package openssh-server-7.4p1-13.el7_4.x86_64
error: unpacking of archive failed on file /usr/sbin/sshd: cpio: rename
我猜想安装程序在安装其版本之前会尝试重命名旧文件。因此我尝试以 root 身份自行重命名它:
mv /usr/sbin/sshd /usr/sbin/sshd.old
mv: cannot move ‘/usr/sbin/sshd’ to ‘/usr/sbin/sshd.old’: Operation not permitted
我首先想到的是,/usr/sbin 目录中的项目可能是不可变的。但是,我能够重命名其中的其他文件(我将它们重命名回来了!)并且我能够在其他 centos 7 服务器上重命名 sshd。
在做研究时,我发现了运行命令的建议lsattr
。但是,无论我在哪个文件/目录上运行此命令,都没有输出。我尝试在其他 Centos 7 服务器上运行它,它在那里可以正常工作。
似乎也是如此chattr
,但我不确定它是否应该显示任何输出。如果不使用lsattr
,我无法确认它是否chattr
做了任何事情。我运行了以下命令,尽管 /usr/sbin/sshd 可能是不可变的:
chattr -i /usr/sbin/sshd
该文件仍然无法重命名。我以 root 身份执行所有命令,该文件归 root 所有,并且具有 root 的 r/w/x 权限。
-rwxr-xr-x. 1 root root 500K Dec 30 21:08 sshd
此外,根据 lsof 或 ps,没有以 sshd 形式运行的进程。
我不太清楚该如何解释,也许我的问题应该是lsattr
不输出任何内容,而不是这个问题。我怀疑我需要提供更多信息,但不确定是什么。所以我会尝试根据要求更新问题并提供更多信息。有人对我可以尝试进一步解决问题的方法有什么建议吗?
答案1
好的,以下是我对这个问题的解决方案:
我制作了 lsattr 和 chattr 的新副本。我使用这些副本修复了这些程序的系统副本上的属性。我删除了系统副本并用我的新副本替换它们。然后我使用 chattr 修复了 /usr/sbin/sshd 的属性。我删除了 /usr/sbin/sshd。我通过 Yum 安装了 openssh-server。
3 个有问题的文件设置了 a 和 u attr 标志。我需要上传新副本,因为用于更改属性的文件本身已损坏。