我有一个Web应用程序,我正在从Ubuntu Lucid迁移到Trusty。该应用程序通过unix域套接字(带有000
的umask创建)与w/Nginx通信。在Lucid上,我对这个设置没有任何问题。然而,在忠实的,使用相同的权限设置,Nginx的给了我以下错误:Ubuntu Lucid和Trusty之间的Unix域套接字权限
*51 connect() to unix:/opt/run/skyhook/skyhook.socket failed (13: Permission denied) while connecting to upstream, client
检查两台服务器上的权限,我看到:
在明晰:
$ sudo ls -lh /opt/run/skyhook/skyhook.socket
srwxrwxrwx 1 skyhook skyhook 0 2014-08-21 17:09 /opt/run/skyhook/skyhook.socket
$ sudo sudo -u www-data ls -lh /opt/run/skyhook/skyhook.socket
srwxrwxrwx 1 skyhook skyhook 0 2014-08-21 17:09 /opt/run/skyhook/skyhook.socket
值得信赖:
$ sudo ls -lh /opt/run/skyhook/skyhook.socket
srwxrwxrwx 1 skyhook skyhook 0 Nov 4 15:36 /opt/run/skyhook/skyhook.socket
$ sudo sudo -u www-data ls -lh /opt/run/skyhook/skyhook.socket
ls: cannot access /opt/run/skyhook/skyhook.socket: Permission denied
两台服务器的权限相同,结果不同。 Nginx作为Ubuntu上的www数据运行。使用777
权限,我希望www-data能够与套接字进行交互,但不能。到底是怎么回事?
UPDATE:
的/opt/run/skyhook
权限是在两个清晰和可信任相同:
$ sudo ls -lhd /opt/run/skyhook
drwxrwx--- 2 skyhook skyhook 4.0K Nov 4 15:36 /opt/run/skyhook
对于/opt/run
的差异是次要的。在明晰:
$ sudo ls -lhd /opt/run/
drwxrwxr-x 4 www-data www-data 4.0K 2014-01-27 18:11 /opt/run/
在可信赖:
$ sudo ls -lhd /opt/run/
drwxr-xr-x 4 root root 4.0K Nov 4 09:33 /opt/run/
对于/opt
两者是相同的:
$ sudo ls -lhd /opt/
drwxr-xr-x 7 root root 4.0K 2013-06-07 17:15 /opt/
不过,我看不出如何超越父目录的任何祖先会影响这个?
'/ opt/run/skyhook /'上的权限是什么? 'www-data'是否有执行权限? – Kevin 2014-11-05 18:32:45
同样,在'/ opt/run'和'/ opt'本身。 – twalberg 2014-11-05 18:38:53
我已更新问题以反映父目录权限。 – 2014-11-05 18:58:50