文件系统所有权的安全影响

赋予文件系统的非root用户所有权是否有任何安全隐患?

例如,目录/var/lib/pgsql/9.0/data及其内容需要由postgres用户拥有。 如果我想把它的内容放在自己的文件系统上,是不是很好

  • 直接在/var/lib/pgsql/9.0/data挂载该文件系统

要么

  • 创build一个由root拥有的目录(例如/mnt/pgsql_data ),在那里安装文件系统,在该文件系统上创build一个由postgres拥有的目录(比如/mnt/pgsql_data/data )并且创build/var/lib/pgsql/9.0/data一个符号链接到该目录

前者唯一潜在的安全问题是让postgres用户能够修改lost+found目录(如果是ext2,ext3或ext4文件系统),但我认为这并不严重影响。

是什么促使我问这个问题的是,如果文件系统安装在数据目录上,则不支持创buildpostgres数据库; 看到这个pgsql-hacker的讨论 。 我以前没有考虑过这个职位的第一点。

取决于文件系统。 据我所知,ext3例如不会识别挂载所有者的uid,而只能识别挂载的分区root的uid。

在任何情况下,想象你正在使用一些跛脚的文件系统,将尊重所有权和跟着我…

根据文件系统的层次和内容,可能存在严重的安全隐患。

让我举个例子(道歉的艺术自由度,但我不会考虑可能的文件locking问题… 8D)

 #mkdir /opt/postgres #mount /dev/sdf1 /opt/postgres #chown postgres:portgres /opt/postgres #ls - /opt/postgres/8.3/ drwxr-xr-x 4 postgres postgres 1024 2011-08-11 23:14 . drwxr-xr-x 7 root root 48 2011-08-11 23:11 .. drwxr-xr-x 2 root root 1024 2011-08-11 23:14 bin drwxr-xr-x 2 root root 1024 2011-08-11 23:14 lib drwxr-xr-x 2 root root 1024 2011-08-11 23:14 doc drwxr-xr-x 2 root root 1024 2011-08-11 23:14 contrib drwx------ 2 root root 12288 2011-08-11 23:13 lost+found 

现在假设有人有postgres访问,想要后门/opt/postgres/8.3/bin/createdb

 $cd /opt/postgres $cp -R 8.3 .hackme $cd .hackme/bin $echo 'rm -rf /' > createdb $cd .. $mv 8.3 .old; mv .hackme 8.3 

这种特权升级攻击有点过时了。过去,变种过去是相当普遍的。 我必须添加这种错误的方法是标准build议的一个主要原因是具有由进程使用的用户拥有的configuration文件(例如httpd.conf)。

希望能帮助到你

我没有意识到任何真正的安全隐患。 我认为关键的一点是,linux挂载完全取代了目录中已经存在的内容(除非你正在进行联合挂载,但这是一个不同的主题)。

为了简单和约定的缘故,我只是让root所拥有的data目录,然后在那里安装。