令人困惑的目录权限

令人困惑的目录权限

环境

  • Ubuntu 14.04 LTS 桌面

权限

/media/gal_db$ ls -al
drwxrwx--- 6 admin     shared_disk  4096 Aug 15 13:31 .
drwxr-xr-x 6 root      root         4096 Aug 13 12:54 ..
drwx------ 3 postgres  shared_disk  4096 Aug 15 14:28 database

/media/gal_db$ members shared_disk
gal  admin  postgres

从shared_disk中删除postgres以限制对文件系统的访问

sudo deluser postgres shared_disk

尝试以 gal 用户身份登录数据库

psql -U gal
    Password for user gal:
    psql: FATAL:  could not access directory "pg_tblspc/16399/PG_9.3_201306121/16401": Permission denied

将 postgres 用户重新添加到共享磁盘

sudo adduser postgres shared_disk

尝试再次以 gal 用户身份登录数据库

psql -U gal
    Password for user gal:
    psql (9.3.5)
    Type "help" for help.
    gal=>

成功。和混乱。

问题

  1. 为什么postgres需要成为shared_disk的成员才能访问数据库目录?
  2. postgres 是数据库目录的所有者还不够吗?

答案1

只有“admin”用户和“shared_disk”组的成员可以访问该/media/gal_db目录。因此,如果您将“postgres”从“shared_disk”组中取出,它甚至无法到达目录database

相关内容