这个问题已经被问了很多次了,但是我还没有find这种权限的解决scheme。
我有一个在chroot中有多个网站的VPS,每个网站都运行一个独特的用户,没有root权限。 我试图实现一个部署脚本,这是由一个主用户(不是根)运行,谁可以访问所有网站,并修改所有文件。
一个共同的团体
我通常看到的第一条build议是创build一个包含主人和所有网站用户的组。
据我了解,我将不得不将我的文件和文件夹的权限更改为770(或类似的东西,使所有者的组权限相同)。 但是,我经常会将这些权限“重置”到700次(或者类似的,组丢失权限)。 我的大多数网站都build立在Wordpress上,这可能有一些automagic安全的东西,重置过度的权限。 另外,如果开发人员在本地更改组权限并上传这些权限,则权限将会更改。
我正在寻找更稳定的解决scheme – 任何线索?
干杯:)
如果networking服务器没有更改files.dirs的权限,则不能更改所有权。
尽pipe在这里没有足够的信息来devise一个安全模型,但总的来说,我发现基于web服务器的uid访问权限通常是最好的方法,因此目录应该是drwxrwSr-x(由包含用户需要修改访问权限,但不包括web服务器uid,注意使用setgid位)和文件-rw-rw-r–(如果需要Web服务器uid然后drwxrwxrwx可编辑文件)。
但是,对于你的情况,这不一定是最好的/完整的模型 – 当你说网站是chroot的时候,你的意思是说它们都在同一个chroot中? 或者你有多个web服务器实例,每个运行在他们自己的chroot中? 在第二种情况下,分割用户标识是多余的,上面描述的模型是合适的。
当然,你不想允许Web服务器uid权限写在文档根目录以外的任何文件。
因此,听起来也许你应该拥有部署用户拥有的所有文件/目录,并且只有2个成员(部署用户和Web服务器uid)拥有组的所有权,然后创build您的目录/文件,如drwxr-S– – / -rw – r —–(再次用指定的上传目录/文件作为drwxrwS — / -rw – rw —-)
为什么不使用像capistrano这样的部署工具来编写一个连接到所有服务器上的variables用户的任务,并使用scp或sftp上传东西,甚至是从git仓库中检出?
您可以使用shell脚本和SSH来完成一些closures操作,但是存在部署工具来解决这些问题。