gpt4 book ai didi

python - python 中的 "Permission Denied"从 jenkins 复制文件,而不是从 shell

转载 作者:行者123 更新时间:2023-11-28 22:20:21 30 4
gpt4 key购买 nike

我在 python 中有一个脚本,它使用 OptionParser 获取一个路径,并使用 shutil.copy 将该路径中的文件复制到另一个具有时间戳+名称的路径。

当我从 shell 启动脚本时,一切正常。但是当 Jenkins 启动脚本时,出现以下异常:

Traceback (most recent call last):
File "/home/helper/add_file.py", line 101, in <module>
uploader.run()
File "/home/helper/add_file.py", line 80, in run
shutil.copy(self.filename,destination_path+disk_filename)
File "/usr/lib/python2.7/shutil.py", line 119, in copy
copyfile(src, dst)
File "/usr/lib/python2.7/shutil.py", line 83, in copyfile
with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: u'/home/blabla/destinationfolder/1399362213.01file.apk'

使用 whoami 和 pwd,我使用相同的用户(tomcat7)和相同的位置(jenkins 项目工作区)在 shell 中重新创建执行,并且没有权限被拒绝的问题,用户 tomcat7 在目标目录和源目录中具有完全写入权限目录...

那么,为什么对于相同的用户并使用相同的目标和源路径,从 shell 一切正常并从 Jenkins 执行我得到这个“权限被拒绝”异常?

已更新

我用 getpass.getuser() 测试了用户,结果在 jenkins 和 shell (tomcat7) 中是一样的。

我将权限从 775 更改为 777,然后我可以在目录中写入...但这不是解决方案,因为我不想向所有人授予写入权限。用户 tomcat7 在有权写入文件夹的组中,所以...就像 Jenkins 忽略了用户 tomcat7 的组(我检查了/etc/group 文件并且 tomcat7 在具有权限的组中)

最佳答案

最后,我发现了这个: https://unix.stackexchange.com/questions/45184/why-this-error-cannot-create-directory-foo-permission-denied

我的问题是一样的...我从 tomcat7 用户更改了组,但我的 tomcat 自上次启动以来一直在执行,使用的是旧用户。重启tomcat服务后,tomcat用户获取到正确组,在jenkins中脚本执行正常。

关于python - python 中的 "Permission Denied"从 jenkins 复制文件,而不是从 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489601/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com