本帖最后由 骑猪逛天山 于 2023-12-25 12:59 编辑
---记一次排查思路 (截图水印为测试水印均未涉密) 问题背景:某客户有信创过渡需求,需要测试在国产操作系统(麒麟,统信等)通过桌面云SBC远程应用发布使用一些国产操作系统无法使用的软件。 桌面云版本:X86 5.9.1 远程应用发布服务器版本:win2012R2
问题现象:其中有一款软件在远程应用发布服务器安装后,通过VDC资源发布出来并且关联给用户后,用户在前端点击后提示--目录名称无效 远程应用发布服务器原理理解:
首先要理解远程应用发布服务器的原理,桌面云的sbc类似于堡垒机的应用发布服务器,通过部署一台服务器用来对外提供应用的发布,而且用到了windows服务器多用户多会话的功能,即发布出去应用后,多个用户通过不同的windows账户来访问提供的应用。类似于linux可以有很多用户同时使用linux工作但相互是不可见,不冲突的。
排查思路: 1.首先基于上面讲解的原理,看到找不到目录这种报错提示产生的排错思路是 1.检查软件安装的路径和VDC上发布资源的路径是否一致 2.检查软件是否安装在了用户个人目录(因为安装软件时是使用administrator来安装的如果安装到个人目录,这样其他人访问时路径是不可见的)
基于上面思路进行问题推动排查: 1.检查了软件安装路径和vdc的发布路径是一致的没有问题 2.检查软件是否安装在个人目录,发现其实软件是安装在了用户个人目录,同时vdc访问应用发布服务器调用应用时使用的是自动创建的“_VDI_×××”的windows账户导致找不到软件的目录。
把软件卸载重新安装到C:\Program Files\目录下进行重新尝试。此时报了其他的错误“拒绝访问” 问题分析:看到这个新的问题第一时间想到的就是没有权限, 验证分析:为了验证猜想,临时创建一个 “zhang”的windows账户,登录上后手动找到文件目录打开发布的软件,可以看到如下图软件安装的路径可以访问到,但是打开时提示没有权限 下一步思路: 1.看到没有权限,首先想到的就是赋权,尝试找到软件的,给软件以及对应的文件夹赋予完全控制权限给到“everyone”同时把所有者改成“system”原来是“administrator”做了以上调整重新打开依然是没有权限。
因为客户给了我三个定制的安装包其他两个安装时都会提示 “为所有用户安装”,还是为“当前用户安装”,只有这一个软件安装的时候没有一下提示,而且默认自动安装的个人目录下,出现了此问题。
在安装软件时,选择为所有用户安装和当前用户安装之间存在一些区别。 访问权限:当选择为所有用户安装时,软件将被安装到公共目录,所有用户都可以访问和使用该软件。而当前用户安装则将软件安装到当前用户的个人目录,只有当前用户可以访问和使用该软件。 系统稳定性:为所有用户安装软件可能需要管理员权限,因此安装到公共目录的软件通常经过系统管理员的审核和控制,以确保软件的稳定性和安全性。而当前用户安装的软件只对当前用户可见,不会对其他用户或系统造成影响。 隔离机制:操作系统通常会使用隔离机制来保护不同用户之间的软件和数据。当为所有用户安装软件时,操作系统会使用权限控制和隔离机制来确保不同用户之间的软件和数据相互隔离,以防止潜在的冲突和安全问题。而当前用户安装的软件则只在当前用户的环境中运行,不会与其他用户的软件和数据发生冲突。
为所有用户安装软件可以实现多用户共享和统一管理,但需要管理员权限和系统的支持。而当前用户安装软件则更加私密和独立,适用于个人使用或测试目的。
此时问题根因明确:
1.软件安装包的原因导致安装时是为“当前用户”安装的,而不是为“所有用户”安装,以至于其他用户没有权限访问相互隔离不可见,即使手动安装到C盘其他路径并且赋予权限依然无法解决。(部分软件安装包特性)
解决方案: 1.经过查阅windows系统相关资料后,尝试给远程应用发布服务器win2012R2 新添加一块磁盘,并且挂载,把软件安装到非系统盘后,可以正常访问。(软件安装到非系统盘不受一些注册表系统的一些限制)
|