关于Windows下子系统WSL的思考

今天在一个论坛里看到了WSL的消息。

什么是 WSL
引用百度百科的一段话:

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

介于实体机Linu系统与虚拟机之间

其实就是Windows下的一个Linux子系统环境,根据我的测试,如果不关闭很多Windows服务的话,使用体验比虚拟机还要差(可能是我电脑太垃圾)。。。方便倒是挺方便的。

不知道能否在虚拟机中的win10上安装WSL(到底是虚拟内核的复制还是只是虚拟了内核接口,这是一个问题,看来有必要研究一下VMware的原理了,还好代码开源了),值得一试。

安装

  1. 启用或关闭Windows功能

首先在搜索栏中搜索并打开“启用或关闭Windows功能”,勾选“适用于Linux的Windows子系统”项。只有开启这项设置才能正常安装WSL。重启即可,注意保存状态

  1. 安装 WSL

在微软应用商店搜索 Linux,可以看到一系列 Linux 发行版,根据自己需要选择适合自己的发行版,这里我选用 Ubuntu 18.04 LTS,下载完成后启动,等待安装完成,输入账户和密码即可

查看文件
1.如果想在 Linux 查看其他分区,WSL可以 将其它盘符挂载在 /mnt 下。

2.如果想在 Windows 下查看 WSL 文件位置,文件绝对路径:C:Users用户名AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfs

其他设置,例如更新软件源,语言,更新内核,包,等操作,与实体机Linux系统运行指令基本一致。

Windows10的linux subsystem不是虚拟机,而是子系统,是Windows的一部分,并不像虚拟机一样与宿主系统隔离,windows下的所有文件在Linux subsystem里都有映射的,所以在Linux subsystem里运行一些危险指令也会影响到Windows。

ps1

有些时候Windows下存在无法删除的文件

出现下述问题:
Windows 下无法删除某个文件,提示找不到该项目。

原因
文件的 Windows 索引丢失。
解决方案:
利用WSL子系统可以删除。
问题解决

由此可见WSL并不是通过调用NT接口来达到目的,可能是为了性能POSIX 系统调用直接调用文件系统层 API,也可以想象得到,如果还要调用顶层接口,那性能势必下降。

Windows NT,API 是 WINDOWS 操作系统为开发人员编写程序提供的操作系统底层应用(如窗口前置,自动关机等)所预留的函数接口。可以看出这些接口是由多个操作组成的,还是不够底层,直接调用对性能是存在一定的影响。

ps2

由ps1联想到提升管理员权限
windows下删除关键系统文件命令如下

rd /D /S

不过一般来说Windows管理员也没有足够的权限删除关键系统文件。
提供一个思路,可以将Windows系统盘挂载在WSL上,然后利用Linux命令rm -rf/*,删除Windows关键系统文件。因为它不是虚拟机,它是活生生的系统。哈哈哈。

PS
WSL切换到root用户(我装的linux kali,根据情况而定)
kali config --default-user root

这样的话,有几个问题还是没明白,Windows系统的权限划分到底是怎样的,与WSl的权限有什么区别,为什么低权限方式运行WSL可以删除Windows管理员用户都无法做的事,难道WSL的root权限比Windows下管理员权限要高。

个人理解:这个最高权限也可以理解为系统本身,由于Windows不是自由开源系统,因此封闭了部分操作,而大部分Linux系统的刚好是自由度很高的开源系列操作系统。因此操作全部留给用户,用户十分清楚自己需要干什么,不需要突然弹出一个对话框来引导用户。这样看起来就符合逻辑了,但是还没有查看WSL的官方文档,改天有时间查看一下。。。

1.商业操作系统引入部分开源操作系统后,那原来开源的操作系统会不会成为付费的一部分。这对于开源操作系统的发展是不利的。

2.针对Windows操作系统的病毒种类与数量是非常多的,如果WSL广泛应用的话,可以借助Windows来间接攻击Linux,这对于攻击Linux系统来说,比较危险。不知道微软后续会采用何种方法来保证WSL不受Windows来的攻击。个人思路:由于WSL与Windows就像两条水管插入内核这个大水池(并不是虚拟内核)中,或许可以通过添加4个单向过滤器的方式来解决。

以上问题说不定在官方文档里已经解决了,抽空真的需要看下官方文档了。

头有点大。。。

原文地址:https://www.cnblogs.com/AmosAlbert/p/12832218.html