#14786·gvisor

O_DIRECTORY|O_NOFOLLOW 遵循指向目录的符号链接

作者: dany74q创建于 2026年9月16日更新于 2026年9月16日

Should FollowSymlink 每当必须设置BeDir(resolution path.go:461)时,都会遵循最终的同位素链接,所以在与目录的同位素链接上的O DIRETORY O NOFOLLOW打开了Linux与ENOTDIR失败的目标.

Go's os. 开始吧 根和那对旗子一起走,所以是一个Os. 沙盒里面的根可以走出来.

< 细节> <摘要>再生产者 </摘要>

开始 // 作为 root 运行, 每次运行一次 : / 请检查url=值 (帮助). //去建设 -o o dirno follow odirno follow.go (英语). // sudo runc -- network=无 -- -- ignore-cgroups -- platform=systrap do $PWD/odirno follows 互联网档案馆的存檔,存档日期2013-12-02. / / / 尾声 主软件包

导入( E) "fmt" (英语). "欧" "路径/文件路径" "惊叹" (中文(简体) ).

接通电话=`openat(dirfd,"link",O RDONLY O DIRECTORY O NOFOLLOWO)'

func 主 () { root, 错误 := os.MkdirTemp ("), "odirno follow -" ) 必须( err) 推迟 Os. 删除全部( 根) 目标 := filepath.Join(根,"目标") 必须(os.) Mkdir(目标,0o755)) 必须(os.) symlink(目标,文件路径). 加入(root,"link")). dirfd, 错误 : = syscall. Open(root, syscall.O RDONLY = syscall.O Dirtroy = syscall.O ClOEXEC, 0) 互联网档案馆的存檔,存档日期2013-12-21. 必须( err) (原始内容存档于2017-03-21). var starget Syscall. 状态( T) must( syscall.Stat( 目标、 和目标Stat) )

旗帜:= syscall. O RDONLY | syscall. O Diritory | syscall. O NOFOLLOW | syscall. O CLOEXEC | (英语). fd,错误:= syscall. Openat( dirfd, "link", 旗帜, 0) 如果错误 ! = 无 { fmt.Printf ("%s": 以 %s (errno %d)\n)拒绝), call, wrongnoName (err), int (err. (syscall). 页:1 返回时 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? var st syscall. 中国植物物种信息数据库. 状态( T) 一定要(响起). FSTAT( fd, &st) (法语). 同仁地:=st.dev == objectStat.dev ========================================================================================================================================================================================================================================= 猪 fmt.Printf ("%s: 打开了 fd %d, fstat ino=%d, 是同位素链接目标目录 :%t\n", call, fd, st. Ino, same Inode) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

func 错误Name (err 错误) 字符串 { 切换出错{ {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我还不知道 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080} 返回“ENOTDIR” {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我需要你帮忙 返回“ELOOP” {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 返回错误。 错误 () {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

func must( err 错误) { 如果错误 ! = 无 { fmt. (英语). Println ("设置失败:", 错误) 出口(1) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?


</详情>