问题描述
有一天ubuntu服务器开机一直卡在登录界面,密码输入正确但是反复出现登录界面就是进不去,推测可能是ubuntu-desktop软件出了问题,于是在重装ubuntu-desktop过程中提示要安装binutils依赖,但是在安装binutils一直提示标题展示的错误,即做符号链接备份时提示Operation not permitted
一般遇上这种Operation not permitted** 的问题,多半是电脑上 lsattr 和 chattr 出了问题。我这里提示的 /usr/bin/strings 无权限,但是我使用如下命令查看文件权限时,没有任何输出
sudo lsattr /usr/bin/strings
说明我的lsattr文件已经损坏,而使用chattr更改文件属性时也没有输出
解决办法
chattr指令用于设置文件属性,‘+’选项,将给文件添加属性;‘-’选项,移除文件中的属性;‘=’选项,使得文件只有这些属性。
由于系统中的chattr文件和lsattr文件本身带有 a 和 i 属性,不能直接重新安装这两个指令文件。所以需要从网上找到chattr的源代码,编译一个文件来去掉系统中的chattr和lsattr文件的不可更改和删除的属性。具体操作步骤如下:
//下载源代码
wget https://github.com/posborne/linux-programming-interface-exercises/archive/refs/heads/master.zip
//解压
unzip master.zip
cd linux-programming-interface-exercises-master\15-file-attributes
//编译
gcc chattr.c
//重命名
sudo cp a.out chattr
//使用新的chattr更改系统中原有的chattr权限
sudo ./chattr -ia /usr/bin/chattr
sudo ./chattr -ia /usr/bin/lsattr
//下载新的chattr文件
sudo apt-get install e2fsprogs
//e2fsprogs文件是ubuntu下的包,其他系统请参考https://command-not-found.com/lsattr的提示下载
经过以上步骤,系统中的chattr和lsattr文件应该已经被修复了,下面使用类似的方法更改安装软件过程中遇到的障碍,例如我的服务器报文件权限错误的是 /usr/bin/strings
那么则使用chattr 更改它的不可操作属性
sudo chattr -ia /usr/bin/strings