【问题标题】:Permission problems with Gearman workerGearman 工作人员的权限问题
【发布时间】:2013-02-05 20:45:03
【问题描述】:

这里是场景:

我有一个将 pdf 文件写入给定目录的 Web 应用程序(php、mysql):/var/www/myapp/tmp。然后我使用 Gearman(从终端运行的工作 php 脚本)从这些 pdf 文件生成预览图像。工作脚本可以访问 /etc/mount/tmp 中的 tmp 目录,该目录可以符号链接到 /var/www/myapp/tmp 目录(如果工作脚本与 myapp 在同一台服务器上运行)或使用 NFS 挂载在那里(如果工作脚本在不同的服务器上运行)。

应用程序在 tmp 中使用 chmod 0777 创建子文件夹,在这些子文件夹中放置 pdf 文件。工作人员从共享的 tmp 目录中抓取文件(那里没有问题),生成预览图像,然后应该将预览图像写入共享 tmp 目录。

问题

当我在本地运行所有内容(客户端、作业服务器、工作者)时,我遇到了这个问题,所以使用符号链接的 tmp 文件夹:

子目录不可写所以写不出来结果worker失败了。

现在 pdf 文件由 web 应用程序/gearman 客户端编写并归用户 _www 拥有。工作脚本不通过 apache 运行,而是在不同的所有者(我,在终端登录)下运行,这给了我这些权限问题,我想。

我真的不明白为什么该文件夹不可写,因为我使用 0777 权限创建了它。符号链接可以与此有关吗?

无论如何,我不知道如何充分解决此问题,以便客户端和工作人员可以在同一个文件夹中工作而不会出现权限问题。有人可以帮忙吗?


更新

第一个问题似乎是 umask,如果我将其设置为 0,则文件夹是可写的,但这仍然迫使我将权限设置为 0777。如何更安全地处理这个问题?

【问题讨论】:

    标签: php permissions file-permissions gearman


    【解决方案1】:

    我遇到了类似的情况,我需要 apache 和其他服务来写入同一个文件夹。所以我选择将所有必要的用户添加到“文件管理器”组,然后将 rwx 权限授予需要它们的文件夹上的文件管理器组。

    mpurcell@service1 ~ $ -> id apache
    uid=48(apache) gid=48(apache) groups=48(apache),507(filer),509(logger)
    
    mpurcell@service1 ~ $ -> id mpurcell
    uid=500(mpurcell) gid=502(mpurcell) groups=502(mpurcell),10(wheel),501(webdev),507(filer),509(logger)
    
    mpurcell@service1 ~ $ -> ls /home/db/permfile/
    total 12
    drwxrwsr-x. 3 filer filer 4096 Feb 13  2012 .
    drwxrwxr-x. 4 filer filer 4096 May  5  2012 .. 
    drwxrwsr-x. 6 filer filer 4096 Dec 24 00:41 app
    

    我还没有玩过 Gearman,但在您的特定情况下,无论 worker 运行的用户以及 gearman 服务都需要添加到文件管理器组中。

    【讨论】:

    • 谢谢!我会接受这个建议!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多