chmod -R 777 / 抢救,看这篇就够了

chmod -R 777抢救全过程记录

背景

在两台Ubuntu 20.04的服务器上错误执行了chmod -R 777 /命令,结果非常酸爽,sudo权限失效,而且ssh也没有用了。在经过了10多个小时的踩坑以后最后在不重装系统的情况下解决了问题,以下记录只记录正确的步骤,照做即可。

参考资料:
https://blog.csdn.net/chrisy521/article/details/128796439

步骤1-找到服务器物理机并物理连接,进入root模式

ssh不能用了,就必须物理连接服务器了,如果无法物理连接,本教程无法解决问题。
作为Ubuntu的机器,只需要在开机过程中不断地点按ESC即可进入GRUB界面,很可能因为按得太快错过了那个界面,直接到了GRUB的命令行,不急,可以输入normal回车并马上点按ESC,即可进入以下界面:
在这里插入图片描述
选择Advanced options for Ubuntu,然后选择第一次带recovery mode字样的进入恢复模式
在这里插入图片描述
然后只需要在后续的界面选择root回车
在这里插入图片描述
就可以在界面最下方看到root登录的命令行terminal了

步骤2-手动授权修复基本权限结构

执行以下命令:

chmod -Rf 755 /
chmod -Rf 777 /tmp
chmod -Rf 700 /root
chmod -Rf 555 /sys

# 对于需要给其他用户sudo权限的还需要执行以下命令
chown root:root /usr/bin/sudo 
chmod 4755 /usr/bin/sudo

重启服务器,这时候可以测试一下sudo权限是否正常,如果报错说什么文件夹必须只能被root writable,那就把那些文件夹的权限通过chmod 755都改过来即可。

步骤3-恢复ssh权限

ssh的正常登录要求ssh一些文件不是world writable。这时候解决方案如下:
找到你的一个ssh正常的机子,通过ls -l /etc/ssh检查正确的权限结构,为了防止你没有ssh正常的机器,我提供一下我机器的权限结构,其中那两个myold尾缀的是我之前的备份,大家可以不管:
在这里插入图片描述

也就是说你需执行以下指令:

cd /etc/ssh
chmod 644 moduli ssh_config sshd_config ssh_host_dsa_key.pub ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
chmod 600 ssh_host_dsa_key ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key 

然后执行reboot命令重启,这时候应该能够ssh,也能够sudo了,服务器恢复正常使用,大功告成。

步骤4-少数情况出现网络不能正常使用了

我有一台服务器网络还需要重新配置了,发现ping www.baidu.com都配不同。网络配置的方法很简单,按照上面的教程进入恢复模式,csdn查找你对应系统版本的网络IP, DNS的配置方法,我发现不同系统版本是不一样的,之前用Ubuntu 16.04在我Ubuntu 20.04尝试,怎么也不行。现在提供Ubuntu 20.04的配置方案如下:

修改vim /etc/netplan/01-network-manager-all.yaml文件,01-network-manager-all.yaml在不同机器上可能有不同的名字,并修改内容如下:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eno2:
      dhcp4: no
      addresses: [192.168.1.100/24]
      optional: true
      gateway4: 192.168.1.1
      nameservers:
        addresses: [223.5.5.5,223.6.6.6]
~                                             

其中eno2是我的网卡的名字,可以通过ifconfig查看,可能是enoxxx其他编号,也可能是ensxxx,根据具体情况而定。addresses那配置的就是[IP/CIDR]CIDR为24对应的子网掩码是255.255.255.0,有的单位可能是255.255.254.0,这个CIDR就是23,具体可以去这个博客查:https://www.forease.net/docs/handbook/appendix-netmask.html。gateway4就是网关,nameservers下面的就是域名服务器,需要问网管要。

这个文件配置好以后执行以下命令

netplan apply # 应用配置
/etc/init.d/network-manager restart # 重启网络服务

大功告成!如果还不行,建议卸载重装openssh,教程可见(https://blog.csdn.net/zj850324/article/details/124977925)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值