我不太确定在我的情况下最好问什么问题,所以让我们来看看“如何删除所有网络命令?”。情况是这样的:
我有一个在 VirtualBox 虚拟机上运行的 CentOS 7 极简 CLI Web 服务器。我试图学习如何使用 SELinux 为 ircd 混合聊天服务器设置适当的最小权限用户。接下来我知道,我无法通过 SSH 登录。我想我只是设法打破了扩展权限,但是,长话短说,这不是问题。
事实证明,我的系统上不再有网络命令了!我无法 ping 通谷歌。 nmcli 消失了。 ifconfig、ip、network.service NetworkManager.service,几乎所有 Google 为我提供的用于设置网络的内容都......消失了。我仍然拥有我创建的网络配置文件 ( /etc/sysconfig/network-scripts/ifcfg-enp0s3
),并且我确实拥有范围更广的命令,例如 systemctl,但没有无用的服务文件。
如果您对如何在无法使用网络的情况下恢复我的网络包有任何想法,那就太好了。但我更大的问题是:我到底是怎么做到这一点的? yum install(例如,对于 settroubleshoot,selinux 故障排除包)是否可以以某种方式卸载另一个包?
这是输出rpm -qa | grep net
(稍微缩短,因为我显然无法从虚拟机终端复制/粘贴):
nettle-2.7.1.4
libnfnetlink-1.0.1
libnetfilter_conntrack-1.0.4
glib-networking-2.40.0
使用 root 在整个系统中搜索上述命令(例如 nmcli)返回空。我可能只会重建我的服务器(我已将所有重要的配置推送到 git 存储库),但我很想知道如何不再这样做!
更新:此后我继续在新虚拟机中以相同的方式重建操作系统,并确认我有以下内容(截断为重要的 2 个):
$ systemctl --all | grep network
network.service
network.target
在旧盒子上,仅存在 network.target。还:
$ rpm -qa | grep net
nettle-2.7.1-4.el7.x86_64
libnfnetlink-1.0.1-4.el7.x86_64
libnetfilter_conntrack-1.0.4-2.el7.x86_64
glib-networking-2.40.0-1.el7.x86_64
dracut-network-033-240.el7.x86_64
并且存在 ip 和 nmcli 命令。所以确实发生了一些事情,消除了所有这些,我不仅仅是疯狂地认为它们在那里。
更新2:在设置我的新盒子时,我发现如果我这样做sudo yum remove iptables
,它实际上也会删除 NetworkManager,这就是 nmcli 命令的来源。然而,它并没有删除network.service,也没有在删除时中断我的连接。因此,要么仍然发生了其他事情,要么正在等待服务器重新启动以完全删除内容(我不会冒险)。
答案1
VirtualBox 支持两种将虚拟机返回到已知良好配置的方法,这对于问题中描述的实验非常方便:
- 快照
- 克隆
这个 SO Q&A 解释了它们之间的区别: https://stackoverflow.com/questions/23813688/virtualbox-clone-vs-snapshot-vs-backup
使用它们的确切方法可能会有所不同,具体取决于主机/客户操作系统和版本,应使用相关搜索来查找适当的详细信息。
例如,这里有一篇关于在 windows7 guest 虚拟机上使用快照的非常好的文章:http://www.howtogeek.com/150258/how-to-save-time-by-using-snapshots-in-virtualbox/