![Unix:授予文件组权限](https://linux22.com/image/574641/Unix%EF%BC%9A%E6%8E%88%E4%BA%88%E6%96%87%E4%BB%B6%E7%BB%84%E6%9D%83%E9%99%90.png)
在 Ubuntu 服务器上,我在用户的主目录下有一个数据库文件,具体来说/home/pistacchio/lessico/mydatabase.db
。Apache 在组下工作www-data
。向 Apache 授予该文件访问权限的最佳方法是什么?谢谢
答案1
不确定为什么有人给你 -1.... 但这里有一些关于这个问题值得思考的东西。
如果您尝试建立一个数据库驱动的网站,Apache 不需要直接访问数据库文件。通常,Apache 依靠特定编程语言(php、perl、python、bash、cgi 等)的模块来访问数据库服务器,数据库服务器反过来访问文件并根据需要进行动态更改。不依赖专用“服务器”的基于文件的数据库确实存在,但在多线程环境中可能会遇到问题。(如果您想了解更多信息,请查找“竞争条件”)
如果您尝试直接对文件进行某种备份……那么您的做法完全是错误的。如果将数据库文件安装到活动数据库服务器,那么在任何时候,出于各种原因,这些文件都会发生变化。如果您尝试下载/复制/任何不断变化的文件……您最终可能会得到下载中断或损坏的结果。需要执行几个步骤来“锁定”数据库以防止在复制期间写入……或者您需要查看数据库备份工具(如“mysqldump”)以创建数据库转储……然后备份它。您还可以查看卷快照……您可以在其中创建文件当前状态的“快照”,然后下载快照而不是不断变化的版本。
如果您仍想尝试直接下载数据库文件,您可以在 Web 根目录中的某个位置创建指向该文件的符号链接,然后确保设置了权限(可能在组或所有人位上),以允许运行 Apache 的用户访问这些文件。您还可以使用 suphp 之类的框架(不推荐)以其他用户身份执行 php 会话。