Ubuntu 无法在安装新的版本前,为 ./usr/bin/strings 做一个符号链接备份..Operation not permitted

当Ubuntu服务器开机卡在登录界面且无法进入时,可能是因为ubuntu-desktop问题导致。在重装过程中遇到binutils依赖安装的Operationnotpermitted错误。解决方法涉及检查并修复lsattr和chattr,这两个工具用于管理文件属性。通过下载源代码,编译新的chattr,然后用其去除系统中原有文件的不可更改和删除属性,从而解决权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

有一天ubuntu服务器开机一直卡在登录界面,密码输入正确但是反复出现登录界面就是进不去,推测可能是ubuntu-desktop软件出了问题,于是在重装ubuntu-desktop过程中提示要安装binutils依赖,但是在安装binutils一直提示标题展示的错误,即做符号链接备份时提示Operation not permitted

一般遇上这种Operation not permitted** 的问题,多半是电脑上 lsattrchattr 出了问题。我这里提示的 /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
`sshd.service:failed at step EXEC spawning /usr/sbin/sshd:permission denied` 这个错误提示表明,在尝试启动`sshd`守护进程时,遇到了权限不足的问题。具体来说,系统无法执行 `/usr/sbin/sshd`(通常SSH服务的二进制文件位置)。 原因可能是: 1. **权限不足**:可能是当用户(通常是`root`)或该服务账户(如`sshd`)没有足够的权限访问`/usr/sbin/sshd`。确保`sshd`用户有执行权限。 2. **文件权限问题**:`sshd`服务的执行文件(/usr/sbin/sshd)可能被设置为只有特定用户或组才能执行。确认文件的所有者和权限设置。 3. **SELinux或AppArmor策略**:如果系统启用SELinux或类似的安全增强机制,可能存在策略阻止了对`sshd`的执行。检查相关策略配置。 解决办法: 1. **更改文件权限**: ```bash sudo chmod +x /usr/sbin/sshd ``` 2. **更新服务账户的权限**: ```bash sudo usermod -aG wheel sshd // 添加sshd到wheel组,以便拥有更多权限 sudo service sshd restart ``` 3. **检查并修改SELinux或AppArmor规则**: - 对于SELinux: ```bash semanage fcontext -a -t sshd_t "/usr/sbin/sshd(/.*)?" restorecon /usr/sbin/sshd ``` - 对于AppArmor(假设名为`sshd`的Profile存在权限问题): ```bash aa-enforce disable apparmor_parser -r /etc/apparmor.d/usr.sbin.sshd aa-enforce enable ``` 重启`sshd`服务后,检查错误是否仍然存在。如果问题持续,请检查日志文件(通常是/var/log/auth.log 或 /var/log/secure)获取更详细的错误信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daimashiren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值