环境
- 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=>
成功。和混乱。
问题
- 为什么postgres需要成为shared_disk的成员才能访问数据库目录?
- postgres 是数据库目录的所有者还不够吗?
答案1
只有“admin”用户和“shared_disk”组的成员可以访问该/media/gal_db
目录。因此,如果您将“postgres”从“shared_disk”组中取出,它甚至无法到达目录database
。