限制用户对单个文件夹的权限,同时也可以被apache用户访问

我在Linux目录/ var / www下有一个在Apache上运行的网站。

这个站点在/ var / www-store的web目录根目录外有一些文件,这些文件被apache用户www-data写入并读取。

我需要另一个用户对这个文件存储/ var / www-store / sync的子目录有读写访问权限,但是出于安全原因,我不希望他们能够访问(读或写)任何文件以外的任何文件目录或文件系统的其他地方。

另外,由这个用户编写的文件需要由apache用户写入,反之亦然。

有人可以帮助我需要在这个用户和这些目录设置的权限,以提供上面详细的安全。

你可以在目录上设置组的所有权,它是你想要与用户共享的文件,而不是文件系统的其他任何地方?

chown -R apache:[user-name-here] /var/www-store/sync/* 

这将在目录上recursion地设置组所有权。 apache将是所有者,您的用户将是一个组所有者,所以你需要确保目录和文件可以读取和写入:

 chmod ug+rw /var/www-store/sync/* 

上面的行将允许用户和组所有者读取和写入目录。

然后,您需要确保父目录不具有为所有用户设置的读取或写入权限。 这也可以使用chmod来完成:

 chmod o-rw /var/www-store/ 

请注意,上面的行不是recursion的,或者会影响之前的设置。 这应该是你需要的一切,如果不是这样,至less会让你开始。 免责声明:我没有真的试过这个,所以我不能确定它会工作,但如果不是chmodchown应该让你在那里的一部分。 如果你出于安全原因这样做,你可能想在另一个目录中彻底地testing它,可能最好是专门用于testing。

您可以将其他用户添加到组。 然后给这个组读写目录/var/www-store/sync

 chown -R www-data:somegroup /var/www-store/sync chmod -R 770 /var/www-store/sync 

如果用户不需要物理TTY,则可以尝试创build一个仅用于sftp的用户,并为用户组configurationOpenSSH的ChrootDirectory。