¿Cómo plantea WSL[2] limitaciones en un sistema Linux invitado?

¿Cómo plantea WSL[2] limitaciones en un sistema Linux invitado?

Tan pronto como obtuve WSL2 en mi PC con Windows, instalé unCentOS 8.2 adaptadoversión. Mientras lo exploraba, descubrí que podía leer y escribir en el sistema de archivos NTFS del host desde el primer momento. También estaba conectado a Internet pero no pude encontrar una manera de administrar la conexión; Podría instalar Network Manager pero obtendría un comando Could not create NMClient objectcada vez que ejecuto nmcli. No encontré SELinux ( getenforce). Instalé firewalld pero luego firewall-cmdlo arrojé Failed to connect to socket /run/dbus/system_bus_socket. systemctlda un error, System has not been booted with systemd...luego supe que un"Fedora Remix para WSL"se ofrecía por $9,99 en la tienda de aplicaciones de Windows con la nota:

Los siguientes paquetes se han eliminado de la instalación predeterminada de Fedora Remix para WSL: grub, plymouth, kernel, sssd, linux-firmware, dracut, parted, e2fsprogs, iprutils, ppc64-utils, selinux-policy, Policycoreutils, sendmail, firewalld, fedora-release, fedora-logos y fedora-release-notes.

Entonces, la pregunta principal: ¿Cómo limita WSL la funcionalidad de Linux?

Entonces, lo que nos interesa obviamente es cómo sortearlos: Primera preocupación que tengo: ¿Es segura la conexión a Internet? Me parece que no hay ningún firewall que impida que las personas accedan a mi PC host si pueden conectarse a mi WSL Linux a través de algún servicio. Con respecto a lo que escribí anteriormente: ¿Por qué recibo ese error nmcli? ¿Es posible de alguna manera ejecutar SELinux? ¿Es posible de alguna manera gestionar unidades como se hace con systemctl?

Respuesta1

WSL2 es esencialmente una máquina virtual Linux que utiliza un kernel Linux real y un sistema de inicio personalizado. Este kernel personalizado sabe cómo acceder al sistema de archivos de Windows mediante controladores especiales y recibe acceso a Internet a través de un adaptador de red virtual.

Dado que no está utilizando el sistema de inicio estándar del sistema (que es sysvinito systemd), no está iniciando todos los servicios que el sistema normalmente iniciaría, como dbus. Por lo tanto, la ejecución systemctlno funcionará para iniciar o detener servicios y los programas que requieran dbusejecutarse necesitarán que lo inicie manualmente o con un script de estilo sysvinit adecuado. Este último debería funcionar en prácticamente cualquier sistema de inicio.

WSL2 utiliza este sistema de inicio personalizado porque hace que el arranque sea casi instantáneo; de lo contrario, tendría que esperar a que el sistema Linux se inicie por completo para que todo funcione. En consecuencia, los paquetes que configuran un sistema Linux completo o que solo se requieren para el arranque no serán necesarios.

El firewall que utilice, si corresponde, debe configurarse en su sistema Windows, no en su sistema Linux. Probablemente puedas usar nftableso iptablesdirectamente si lo deseas, pero cualquier cosa que dependa de ello systemdestá descartada. Por razones similares, no usaría Network Manager, ya que su acceso a la red está controlado por Windows y reflejará todo lo que haga la pila de red de Windows.

No me queda claro por qué SELinux no funciona en WSL. Puede deberse a que el kernel de Microsoft Linux no lo integra ni lo habilita, o puede deberse a que otros sistemas operativos no quieran SELinux (por ejemplo, Debian y Ubuntu preferirían AppArmor) y no quieren tratar con múltiples módulos, o podría ser que drvfs (el sistema de archivos WSL) no admita las funciones requeridas.

Si desea una experiencia de Linux completamente funcional, debe instalar una distribución de Linux real. WSL2 es excelente si desea usar un sistema Windows y desarrollar o ejecutar aplicaciones para Linux sin necesidad de arranque dual, o si tiene que usar Windows pero prefiere Linux, pero no reemplaza un sistema Linux completo.

información relacionada