当自定义 Python 脚本作为服务检查运行时,我遇到了文件权限错误,但当我从 bash shell 运行该脚本时,它运行正常。以下是有关如何设置此脚本的更多信息。
- 该脚本旨在将数据从 nagios 导出到另一个应用程序
- 我已将远程 smb 共享挂载到具有正确权限的用户,并将 uid 和 gid 设置为该用户
- 我使用 python 2.7.3 命令 txt = open(os.path.join("path/to/file","filename-to-open.txt"), "w") 这是引发错误的行。
- 我使用的是 nagios 版本 4.0.8
- nagios 在 Linux 系统上运行,并且目标目录也在 Linux 系统上
任何建议都很好。
答案1
只是为了如果有人在搜索类似问题时偶然发现了这个帖子。结果发现问题出在我的 samba.conf 上。这是我开始用的。
force user = anadminuser
force group = users
inherit permissions = yes
这是一个每个人都可以读写的共享,但我必须更改它。共享的父文件夹设置为管理员用户为所有者,用户为组所有者。我以为继承权限指令会处理在此共享上创建的所有子文件夹等。但是,我开始怀疑 samba.conf 的全局部分中的一个或多个设置决定了应用哪些权限(我不知道具体是哪些)。通常,Windows 用户访问此共享,权限工作正常,但当 Linux 用户连接时,我得到了不同的行为。所以我添加了两行。
force user = anadminuser
force group = users
force create mask = 0666
force directory mask = 0777
inherit permissions = yes
显然,如果您要强制用户和组,那么您可能也想强制创建和目录掩码,这总是一个好主意。否则,您最终会在创建的项目上获得正确的所有者和组,但权限并不总是您所期望的。