Apache Guacamole(guacd)会话录制文件权限异常排查求助
问题原因及解决方案
根本原因:guacd服务进程的umask设置过严
你手动用sudo -u guacd创建文件时,用的是guacd用户登录shell的默认umask,这个umask会配合父目录的2750权限,生成符合预期的权限(比如文件夹750、文件640)。但guacd作为后台服务启动时,它的umask被设置成了更严格的值(大概率是0077),直接导致:
- 生成的会话文件夹:父目录的SGID属性确实让子文件夹继承了
tomcat组,但umask 0077会把组权限的执行位抹掉,最终权限变成drwxr-S---(大写S表示SGID生效但组无执行权限) - 录制文件:直接被限制为
rw-------,完全关闭了组的读权限,Tomcat自然读不到
验证步骤
先确认guacd进程的umask是不是0077:
# 获取guacd的进程ID PID=$(pgrep guacd) # 查看进程的umask值 cat /proc/$PID/status | grep Umask
如果输出是Umask: 0077,就坐实了这个问题。
再对比手动登录guacd用户的umask:
sudo -u guacd bash -c 'umask'
正常应该是0022或0002,这也是手动创建权限正常的原因。
修复方法
修改guacd的服务配置,调整umask:
- 找到guacd的systemd服务文件,一般在
/lib/systemd/system/guacd.service或者/etc/systemd/system/guacd.service - 打开文件,在
[Service]区块里添加一行:UMask=0002 - 重新加载配置并重启服务:
systemctl daemon-reload systemctl restart guacd
之后新创建的会话文件夹会变成drwxr-s---(小写s表示SGID和组执行权限都生效),录制文件权限会是rw-r-----,Tomcat就能正常读取录制文件,在网页端显示历史记录了。
内容的提问来源于stack exchange,提问作者MortenVinding
相关产品推荐
相关产品推荐

