当我与 Windows 文件系统交互时,我的 Windows Bash shell 运行 是哪个用户?

What user is my Windows Bash shell running as when it interacts with Windows file system?

我已经为 Windows 下载并安装了 Bash。当我执行一个简单的 ls -al 时,我会收到很多权限被拒绝的错误。

我不太清楚用户权限是如何解决的。假设在 bash shell 中我设置了一个名为 moi 的用户,并且有主驱动器 /home/moi。如果我然后做 ls -al /mnt/c,我会得到一堆权限被拒绝的错误,例如

ls: cannot access /mnt/c/hiberfil.sys: Permission denied 
ls: cannot access /mnt/c/pagefile.sys: Permission denied 
ls: cannot access /mnt/c/swapfile.sys: Permission denied total 2388

    drwxrwxrwx 2 root root      0 Sep 26 18:09 .
    drwxr-xr-x 2 root root      0 Jan  1  1970 ..
    drwxrwxrwx 2 root root      0 Oct 22  2015 AutoDiscover
    -r-xr-xr-x 1 root root 398156 Jul 26  2012 bootmgr
    -r-xr-xr-x 1 root root      1 Oct 30  2015 BOOTNXT

我查看了 "Windows side",没有新用户 moi。因此,例如,当 ls 报告 /mnt/c/swapfile.sys 的权限被拒绝时,哪个用户被拒绝了?

后续问题是:我需要做什么才能获得 Bash 用户并将其称为我的 "normal" windows 用户以拥有相同的权限?

Windows 用户是启动 bash.exe 的用户。您可以通过在 /mnt/c 目录中从 Linux 创建一个文件来验证这一点,查看 Windows.

中文件的所有者

来自 windows 命令提示符:

C:\test>echo %USERNAME%
tim

C:\test>bash.exe
wsluser@computer:/mnt/c/test$ touch foo.txt
wsluser@computer:/mnt/c/test$ exit
exit

C:\test>dir /q C:\test\foo.txt
 Volume in drive C is OS
 Volume Serial Number is B8BA-E032

 Directory of C:\test

2017-06-26  02:06 PM                 0 tim   foo.txt
               1 File(s)              0 bytes
               0 Dir(s)  363,224,875,008 bytes free

请注意,bash.exe 是由 tim 用户启动的,并且从 WSL 创建的 C:\test\foo.txt 文件也属于 tim

您可以使用 windows 文件资源管理器访问 Linux 文件系统。它位于您的 AppData\Local 文件夹中。它是 "semi-hidden" 但可以访问:

C:\Users\[用户名]\AppData\Local\lxss\rootfs