【问题标题】:SQL database and permisions (via PHP)SQL 数据库和权限(通过 PHP)
【发布时间】:2011-11-10 06:42:20
【问题描述】:

我正在创建一个网站,其中包括图片数据库。为简单起见,假设每张图片都可以有一个描述和一个文件路径,并将其存储在一个表中,就像这样

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。或更改图片的权限(见下文)

现在我意识到如果用户决定删除图片或移动它们会导致问题,但我想有办法解决这个问题(数据库不保证图片会在那里,写保护图片,重新实现mv/ rm...)

我的数据库经验很少。我想知道这是否可取。具体来说,使用Linux file permisions作为数据库权限是否好。例如,用户Manderly 可以创建组MJ12 并向其中添加用户WSimonsBPageANavarre,然后在网站上这些用户将可以访问这些图片(不是自动我知道,但通过 PHP 编写脚本)并且他们也可以 sftp/ftp/scp 它们。

【问题讨论】:

    标签: php sql database permissions


    【解决方案1】:

    从社区获得其他问题的答案后,我现在可以回答自己的问题了。

    显然可以通过使用/etc/passwd 在PHP 中实现这一点,通过int fileperms ( string $filename ) 获取文件权限,并使用这些更新数据库,或者在允许访问文件之前使用它们作为检查。然而,这太过分了。简单地使用suPHP 更容易。

    suPHP 是一个执行 PHP 脚本的工具,具有以下权限 他们的主人。它由一个 Apache 模块 (mod_suphp) 和一个 setuid Apache 模块调用的根二进制文件 (suphp) 以更改 执行 PHP 解释器的进程的 uid。

    至于这是否可取,SO 的普遍共识似乎是,只有在有目的的情况下才应该实施这样的服务器。这可以理解为“通常不建议这样做”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多