当我与 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
我已经为 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