百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

Centos8中恢复根目录为默认权限

xsobi 2025-01-13 18:49 1 浏览

本文中介绍如何从意外运行# chmod -R 777 /命令,在Centos8操作系统上恢复默认权限。

本文中我们将故意在一个测试服务器上运行chmod 777命令,并尝试通过运行两个命令进行恢复。就是如下两条命令:

# rpm --setugids -a
# rpm --setperms -a

当在测试机上面执行下面命令之后,所有文件权限都会变成777。

[root@localhost ~]# chmod -R 777 /

列出根目录下面的内容:

[root@localhost ~]# ls -al /


下面是SSH相关的重要文件,需要有正确的权限和所有权。但是,由于运行chmod 777,以下所有文件都具有错误的权限。

[root@localhost ~]# ll /etc/ssh/
total 588
-rwxrwxrwx. 1 root root     563386 May 11  2019 moduli
-rwxrwxrwx. 1 root root       1727 May 11  2019 ssh_config
drwxrwxrwx. 2 root root         28 Dec 29  2019 ssh_config.d
-rwxrwxrwx. 1 root root       4444 May 11  2019 sshd_config
-rwxrwxrwx. 1 root ssh_keys    480 Dec 29  2019 ssh_host_ecdsa_key
-rwxrwxrwx. 1 root root        162 Dec 29  2019 ssh_host_ecdsa_key.pub
-rwxrwxrwx. 1 root ssh_keys    387 Dec 29  2019 ssh_host_ed25519_key
-rwxrwxrwx. 1 root root         82 Dec 29  2019 ssh_host_ed25519_key.pub
-rwxrwxrwx. 1 root ssh_keys   1799 Dec 29  2019 ssh_host_rsa_key
-rwxrwxrwx. 1 root root        382 Dec 29  2019 ssh_host_rsa_key.pub

带有chmod 777权限的SSH

下面尝试通过SSH远程登录服务器。由于主机密钥文件权限都变成了777了,所以登录会被拒绝。

下面再终端中ssh登录本机出现下面问题:


下面使用Xshell登录服务器,同样不能登录成功:

[C:\~]$ ssh root@192.168.43.131


Connecting to 192.168.43.131:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(192.168.43.131:22) at 10:28:06.

Type `help' to learn how to use Xshell prompt.

恢复权限

需要恢复权限,我们需要加载Centos8的系统镜像,开机启动光盘镜像:

在VMware Workstation中,加载光盘,并开机器用。开机按F2,进入BIOS,切换到Boot选项卡。将CD-ROM Drive移动到Hard Drive上面。按F10保存并重启。


选择Troubleshooting,然后选择进入救援模式。



当进入下面界面时,选择1,直接进入shell界面。


使用
chroot命令将/mnt/sysroot切换为根目录:

sh-4.4#  chroot /mnt/sysroot


使用以下两个命令运行,以恢复所有文件,目录和配置的权限。运行此命令时,它将引发权限被拒绝错误,并且无法访问错误。只是忽略错误。

# rpm --setugids -a
# rpm --setperms -a


参数说明:

  • --setugids - 设置RPM包文件的用户/组所有权。
  • --setperms - 设置RPM包文件的权限。
  • -a - 适用于所有已安装的RPM软件包。

完成操作之后,退出,并重启:

# exit
# reboot

查看权限、SSH连接服务器测试

下面登录系统之后,看一下根目录的权限是否恢复正常:

# ls -l /


运行ssh登录,发现不能登录。使用
netstat -tlunp发现ssh端口没有监听中,使用systemctl status sshd发现服务没有启动,启动sshd服务时发现不能启动,下面查找原因:

发现密钥文件的权限还是777,没有还原:


下面设置密钥文件权限:

# chmod 644 /etc/ssh/ssh_config
# chmod 600 /etc/ssh/sshd_config
# chmod 640 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
# chmod 644 /etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ed25519_key.pub


下面再次启动sshd试一下:

# systemctl enable sshd --now
# netstat -tlunp


可以看到启动成功了。ssh远程登录试一下,看到登录成功了。

总结

就这样,我们已经成功还原了已安装的RPM软件包的权限并恢复了服务器。切勿在任何文件系统或配置上使用chmod 777。

本文原创地址:https://www.linuxprobe.com/centos8-restore-default-perm.html

相关推荐

IWSC施行新一轮性能平衡变动 保时捷动力得到提升

在下周末IWSC美洲赛道(COTA)站的比赛开始前,IMSA又对赛事内多个组别的赛车进行了性能平衡(BoP)调整,其中GTD组别的保时捷911GT3R获得了动力上的提升。IMSA在本周四确定了最新...

22个超详细的 JS 数组方法

作者:Yushiahttps://juejin.cn/post/6907109642917117965...

碎片时间学编程「134]:JS 承诺中的 then 和 finally 有什么区别?

...

10 个常问的 JS 面试题

作者:JoanneLee-(Vivi)译者:前端小智来源:medium1.如何理解JS中的`this`关键字?JS初学者总是对this关键字感到困惑,因为与其他现代编程语言相比,JS中...

一文理解js原型和原型链是什么以及作用

js三座大山,这是第二座山,今天来和大家一起翻山越岭。阅读前请记住这句话js里万物皆对象。js原型、原型链一镜到底开始:1、知道什么是原型和原型链首先请想下你平常写代码数组的常用方法有哪几个,答:ma...

JS 类型检测:谈 typeof 和 instanceof 的缺陷与优化

在javascript中,typeof和instanceof是用来判断数据类型比较通用的两个方法,但这两种方式并不能完全解决实际中遇到的问题。因此,这篇文章的目的是通过对这两个方法介绍来分析其存...

Js中的new操作符起到什么作用?

Js是当今时代最常用的代码操作语言,其中new操作符尤为常见。对于很多代码小白来说,并不清楚new在Js中扮演着怎样的角色,具体是做什么用,干了什么。本文从new操作符的作用着手,简单介绍new操作符...

深入理解 JS 原型链

JS中的原型链在面试中可以说是“必考题”日常开发不常遇到,而且在ES6之后,原型链就更少见了...

一篇文章读懂JS原型和原型链

前言你好!欢迎阅读本篇文章,今天我将要用一篇文章带你深入理解JavaScript中的原型和原型链,让我们一起揭开原型神秘的面试,一起窥探其中的奥妙。一切皆是对象看到这个标题你可能就有你可能就有疑问了...

图文解说 javascript中 原型和原型链 构造函数 组合使用方法

原型和原型链原型和原型链...

JS原型、原型链深入理解

原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性。...

Linux export命令用法

export命令是Linux/Unix中常用的命令之一,用于设置环境变量和将变量导出到子进程中。使用格式:export[-fnp][name[=value]]参数说明:-f:表示将函数名也一并传递...

Windows Unix Linux Android壁纸

复仇者联盟壁纸

在 Linux/Unix/Mac 下清除 DNS 查询缓存

在MS-Windows下,你可以使用ipconfig命令来清除dns缓存。然而,Linux和Unix提供了不同的方法来清除缓存。Linux可以运行nscd或者BIND或者dnsmasq作为...

如何在Linux系统安装中文输入法以及使用

在安装Linux系统时如果设置默认语言是英文,那么该如何输入中文呢?首先,无论是中文的还是英文的Linux系统,输入法基本都是内置的ibus输入法,如果你不想下载别的输入法,你可以就用ibus的中文输...