2013-02-20 46 views
0

这里的权限问题是该方案:与Gearman的工人

我有一个Web应用程序(PHP,MySQL的),它写入PDF文件到指定目录:/无功/网络/ MyApp的/ tmp目录。然后我使用Gearman(从终端运行的worker php脚本)从这些pdf文件生成预览图像。 worker脚本可以访问/ etc/mount/tmp中的tmp目录,该目录或者符号链接到/ var/www/myapp/tmp目录(如果worker脚本与myapp在同一服务器上运行),或者使用NFS如果worker脚本在不同的服务器上运行)。

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

问题

当我运行的一切本地(客户端,jobserver,工人),所以用符号链接TMP文件夹,我有这样的问题:

子目录不可写,所以我不能写结果并且工人失败。

现在PDF文件是由网络应用程序/ gearman客户端编写的,并且归用户_www所有。 worker脚本不通过apache运行,并在不同的所有者(我在终端上登录)下运行,这给我这些权限问题,我想。

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

在任何情况下,我不知道如何充分解决这个问题,让客户和员工可以在同一文件夹内工作,而无需权限问题。谁能帮忙?


UPDATE

第一个问题似乎是umask的,如果我设置为0的文件夹是可写的,但仍强迫我的权限设置为0777。我怎样才能接近这更安全?

回答

1

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

[email protected] ~ $ -> id apache 
uid=48(apache) gid=48(apache) groups=48(apache),507(filer),509(logger) 

[email protected] ~ $ -> id mpurcell 
uid=500(mpurcell) gid=502(mpurcell) groups=502(mpurcell),10(wheel),501(webdev),507(filer),509(logger) 

[email protected] ~ $ -> 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玩弄周围还,但在特定的情况下,无论用户工人运行作为还有Gearman的服务,也需要被添加到文件管理器组。

+0

谢谢!我会跟这个建议去的! – Asciiom 2013-02-20 18:54:52