技术解析

wsl 下使用 ln -s 文件夹为什么会生成一个空文件
0
2021-06-22 08:37:54
idczone

example:

ln -s /path /temp/path

会在 temp 下生成一个空白文件

怎么才能正常链接文件夹呢?


ln -s /path /temp/path/

然后就出现一个名为 path 的空白文件

你少了一个 /

执行时最后一个 /会被自动忽略,依然是一个白文件
PS,用了无数次,今天刚重装了 win10,新的 wsl 就这样了

权限不足的情况下就是空文件,比如在桌面创建软链~

为什么创建一个符号连接还需要管理员权限呢,linux 就不这样。 windows 这样搞出于什么考虑呢

Win10 Creators Update 开始,开启了开发者模式后不需要管理员权限了。
https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/
至于最初为什么这么设计,我不知道。

win7 能做到创建符号链接不需要管理员权限么

path is a file

可以做到 https://superuser.com/questions/104845/permission-to-make-symbolic-links-in-windows-7

win7 还是不行

https://superuser.com/a/125981

wsl 端是 root

就是这个办法, 不管用

那我也不知道了。

我搞明白了
如果原来是 Administrators 组的用户, 不管是否这么设置都不能创建符号链接
但如果是 Users 组的用户, 这么设置一下就可以创建符号链接了

试了一下我机器正常
```
ln -s /source/path/file /path/ .
ln -s /source/path/file /path/rename
```
[![snipaste_20181001_193910.png]( https://i.loli.net/2018/10/01/5bb2094d76f53.png)]( https://i.loli.net/2018/10/01/5bb2094d76f53.png)
[![snipaste_20181001_194113.png]( https://i.loli.net/2018/10/01/5bb2094d7afc4.png)]( https://i.loli.net/2018/10/01/5bb2094d7afc4.png)

那聪明人自己解决咯~

有可能是需要在代码中开启这个权限的。参见 SeManageVolume 以及 SetFileValidData。

以前是这样的,今天重装了 win10 就做不到了,不知是什么设置原因? win 侧 admin 和 user,wsl 侧 root 和 user 都试过了

今天新装的 rs5 才出现的,恢复以前的 1803 ghost 一切正常了

退 wsl 保平安,你永远不知道下一个坑在哪儿。


From Microsoft TechNet: Security Policy Settings New for Windows Vista:
Symbolic links (symlinks) can expose security vulnerabilities in applications that aren't designed to handle symbolic links.
Windows 7 才有的符号链接(其实是 Vista ),所以为以前操作系统设计的程序在遇到符号连接的时候可能会出现行为异常(例如将敏感数据写入原本不会写入的区域中)。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服