本文记录我在龙芯旧世界的麒麟教育版系统上,使用 docker 对 dotnet 进行构建和打包过程中,因为安全中心拦截而出现奇怪的问题
以下是我打包构建过程中遇到的文件没权限或被占用或 Mutex 失败等信息
使用 GitLab Runner 拉取项目时,遇到的报错信息如下
或者是如下报错信息
使用 dotnet 构建 Avalonia 过程遇到的问题:
或者是构建过程中碰到 Mutex 锁需要写入 /tmp/.dotnet/shm
都会失败
或者是一些更加看不懂的失败
感谢 lsj 帮忙找到是麒麟教育版安全中心在进行拦截。如下图所示,可以看到很多文件路径都被拦截了
其中写入到 /tmp/.dotnet/shm
路径的,大部分都是和 Mutex 有关
这个拦截不仅拦截 dotnet 系的应用,也拦截 GitLab Runner 应用
按照 lsj 给的教程,这里遇到的是 kid protect : disable_privacy
拦截。通过上图的 KYSEC_KID 类型即可了解到。这里的 KYSEC 是麒麟系统安全机制,详细请参阅 kylinos-kysec介绍 - gpysir - 博客园
在物理机终端输入 $ sudo getstatus
即可看到如下输出内容
如上面输出内容 KySec status: enabled
可以看到是开启状态。且通过 kid protect : disable_privacy
可以看到开启了 kid protect 功能,也就是 KYSEC_KID 类型
尝试单独关闭 kid 功能,如下面命令
禁用之后输入 $ sudo getstatus
即可看到如下输出内容
如此可以看到没有完全关闭麒麟系统安全机制,只是关闭了 kid protect 功能
详细请参阅 银河麒麟系统安全机制-KYSEC - 多弗朗强哥 - 博客园
重新尝试构建,此时所有的构建都符合预期。无论是 dotnet 还是 GitLab Runner 都能跑起来
这个问题坑了我一天多的时间,太感谢 lsj 的帮助了
吐槽点是这里的拦截没有什么界面可以看到关闭选项,拦截的过程中也没有给出通知,遇到这些问题我猜不到是被拦截
以下是我拿到的龙芯麒麟教育版系统的信息
其他拦截问题请看: 记 Kylin 麒麟系统安全中心拦截导致 dotnet sdk 找不到 OpenSsl 构建失败
原文链接: http://blog.lindexi.com/post/dotnet-%E8%AE%B0%E9%BE%99%E8%8A%AF%E9%BA%92%E9%BA%9F%E6%95%99%E8%82%B2%E7%89%88%E5%AE%89%E5%85%A8%E4%B8%AD%E5%BF%83%E6%8B%A6%E6%88%AA%E6%96%87%E4%BB%B6-%E5%AF%BC%E8%87%B4-docker-%E5%86%85-CI-CD-%E6%9E%84%E5%BB%BA%E5%A4%B1%E8%B4%A5
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。