我正在创建一个网站,其中包括数据库图片。为简单起见,我们可以说每张图片都有一个描述和一个文件路径,这就存储在一个表中,就像这样
CREATE TABLE IF NOT EXISTS picture
(
ID INT NOT NULL AUTO_INCREMENT,
description VARCHAR(150),
file VARCHAR(150) NOT NULL,
PRIMARY KEY(ID)
) ENGINE=InnoDB;
我希望用户能够通过ftp将图片上传到unix帐户并创建自己的目录层次结构,而不是将所有这些图片存储在一个位置并分配任意文件路径。这样他们就可以使用ftp / sftp / scp来复制它们,或者使用ssh和其他Linux程序,比如imagemagik或zip。或者更改图片的权限(见下文)
现在我意识到如果用户决定删除图片或移动它们会导致问题,但我想有办法(数据库不保证图片会在那里,写保护图片,重新实现{{1} } / mv
...)
我的数据库体验很少。我想知道这是否可取。具体来说,它是否善于使用Linux file permisions作为数据库权限。例如,用户rm
可以创建群组Manderly
并向其添加用户MJ12
,WSimons
和BPage
,然后在网站上添加用户访问这些图片(我不知道,但通过PHP编写脚本)并且他们也可以sftp / ftp / scp。
答案 0 :(得分:0)
在从社区获得其他问题的答案后,我现在可以回答我自己的问题了。
显然可以在PHP中使用/etc/passwd
实现此功能,通过int fileperms ( string $filename )
获取文件权限,并使用这些权限更新数据库,或在允许访问文件之前将其用作检查。然而,这是过度的。简单地使用suPHP更容易。
suPHP是一个使用权限执行PHP脚本的工具 他们的主人。它由Apache模块(mod_suphp)和setuid组成 root模块(suphp)由Apache模块调用来更改 执行PHP解释器的进程的uid。
至于它是否可行,SO的普遍共识似乎是只有在服务于某个目的时才应该实现这样的服务器。这可以理解为“通常不可取”