[Ubuntu/服务器使用] 关于 unable to make backup link of `./usr/sbin/sshd’ before installing new version: Operation not permitted
背景
为了给服务器安装docker,需要使用到curl
命令,在安装curl
命令的时候又提示有损坏的包(由于是问题解决后写的,具体的内容记不清楚了,大概是ssh相关的一个包),需要用apt-get -f install
来修复。在修复的时候停在了这个错误上:
...
unable to make backup link of `./usr/sbin/sshd' before installing new version: Operation not permitted
问题分析与定位
通过对stackoverflow相关问题的研究,发现这个老兄精准地将问题定位到了lsattr/chattr这两个命令有问题上。这里插一句lsattr和chattr两个命令分别是用来显示和改变文件的属性的,属性中包括可以使得文件不得改动的i
或者让文件只能增加内容的a
等等。我用该问题中同样的方法检查了服务器里的相关命令,发现服务器中的这两个命令好像也gg了。
顺着这个思路我发现博客中有人提到挖矿病毒可能会通过先用chattr
命令使自己的文件不能被删除,再篡改该chattr
命令的文件使其失效,达到保护自己的目的。恰巧,这个服务器之前中过挖矿病毒,那么下一步就是如何修复chattr
命令,并修改相关文件(最开始报错的 `./usr/sbin/sshd’)的属性了。
chattr的修复
chattr的修复需要用到其源码,将源码复制,并在本地创建一个chattr.c
文件将源码粘贴进去:
vim chattr.c
之后编译生成运行文件a.out
并改名为chattr
:
cc chattr.c
mv a.out chattr
通过新编译好的chattr
命令来修改该原本chattr的权限并替换到相应位置:
sudo ./chattr -ia /usr/bin/chattr
sudo mv ./chattr /usr/bin/chattr
此时chattr
命令已经恢复正常,使用其修改该sshd的权限即可正常恢复损坏的包,并安装curl
chattr -ia /usr/sbin/sshd
Ps
docker的安装命令为
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun