权限被拒绝读取用户拥有的文件

时间:2015-01-31 12:23:00

标签: linux mongodb ubuntu

我试图在Ubuntu 14.04上重启(它正在运行)MongoDB,但在日志error getting file /srv/mongodb/keyfile: Permission denied

中继续使用此行失败

此处的目录结构

drwxr-xr-x  3 root    root     4096 Jan 31 05:54 srv/
drw-------  2 mongodb mongodb  4096 Jan 31 07:07 mongodb/
-rw-------  1 mongodb mongodb  876  Jan 31 07:07 keyfile

运行mongod的用户是" mongodb",group" mongodb"所以应该可以阅读。

如果我将mongodb/keyfile的权限更改为-rw-r--r--,那么它就变得可读了,但mongo声称它过于宽容了

已经用这个东西去煮饭了。有什么建议这里有什么问题吗?

4 个答案:

答案 0 :(得分:8)

之前我遇到过同样的问题,我发现并且未记录的解决方案与上下文有关。如果您在Linux中尝试:

select * from v$option where parameter='Partitioning';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Partitioning
FALSE

这将显示在列表中,所有文件,人类可读的大小和上下文的Z,我注意到keyFile必须有" system_u:object_r:mongod_var_lib_t:s0"上下文,所以它得到修复:

ls -lahZ

希望有所帮助!!

答案 1 :(得分:1)

除了对目录的读写权限外,通常还必须具有执行权限(http://en.wikipedia.org/wiki/File_system_permissions#Permissions处的更多信息)。因此,您必须设置以下权限:

chmod 700 /srv/mongodb/
chmod 600 /srv/mongodb/keyfile

答案 2 :(得分:0)

由于这里的答案都没有解决我的问题,而且我确实遇到了同样的问题,我会尝试发布对我有用的内容。

我的解决方案:

  1. 停止Mongo
  2. 修改mongod.conf并临时注释掉属性keyFile: /path/to/key
  3. 启动Mongo
  4. sudo chown mongod </path/to/key>
  5. sudo chmod 400 </path/to/key>
  6. KeyFile
  7. 中的mongod.conf属性中删除评论
  8. 重启Mongo
  9. 希望这有帮助

答案 3 :(得分:0)

我通过将密钥文件的所有者更改为mongod来使mongod服务正常工作

sudo chown mongod:mongod mongodb.key

mongod进程的所有者是尝试访问文件的mongod