问题
我需要授予已格式化为 ext4 的 USB 密钥上名为“mongodb”的系统组读/写权限。该命令似乎有效,但当我尝试让系统用户写入此文件夹时,我收到权限错误:
2014-11-11T10:41:19.326-0500 [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/media/me/mongotest/mongodb", terminating
这是我用来检查该组是否具有访问权限的命令:
me@medev:~$ getfacl /media/me/mongotest/mongodb/
getfacl: Removing leading '/' from absolute path names
# file: media/me/mongotest/mongodb/
# owner: root
# group: root
user::rwx
group::r-x
group:mongodb:rwx
mask::rwx
other::r-x
附加测试
为了证明它有效,我做了以下事情:
- 在 ubuntu 中创建一个名为“test”的新用户。
- 创建了一个名为 testers 的新组
- 向测试人员添加了测试。
- 将测试人员添加到 USB 上 /media/me/mongotest/mongodb 文件夹的 ACL 列表中:
me@medev:~$ getfacl /media/me/mongotest/mongodb/ getfacl: Removing leading '/' from absolute path names # file: media/me/mongotest/mongodb/ # owner: root # group: root user::rwx group::r-x group:mongodb:rwx group:testers:rwx mask::rwx other::r-x
- 然后我将用户改为“测试”:
me@medev:~$ su test Password:
- 尝试将目录更改为 USB 密钥,如下所示:
test@medev:/home/me$ cd /media/me/mongotest bash: cd: /media/me/mongotest: Permission denied test@medev:/home/me$ cd /media/me/mongotest/mongodb bash: cd: /media/me/mongotest/mongodb: Permission denied test@medev:/home/me$
因此,看起来我在创建/添加这些权限的方式上做错了什么……因为它对于用户/组来说都失败了。
答案1
我必须授予 /media/me 文件夹的 ACL 权限。“me”是我的个人资料/用户名的名称,我猜 ubuntu 默认以我的名字安装。所以这就是我所做的:
setfacl -mg:mondodb:rwx /media/me
并且它有效。
答案2
始终使用非用户挂载点。这意味着用户(mongodb)不能写入(我)其他用户文件或链接。如果您删除“我”用户,则会导致相关用户和服务错误。当您为文件夹提供超过 1 个用户时,您会创建交叉链接。切勿使用交叉链接提供服务。
***抱歉,我的语言不好。