【问题标题】:mongodb & /data/db directory permissionsmongodb & /data/db 目录权限
【发布时间】:2017-09-07 06:16:44
【问题描述】:

我正在尝试使用默认值运行 mongod,因此它使用 /data/db 目录。我更改了数据目录的所有者

sudo chown mongodb:mongodb /data -R

和许多其他人一样,我在第一次运行 mongod 时遇到以下错误:

2017-04-11T12:32:25.932-0500 I STORAGE  [initandlisten] exception in initAndListen: 28596 Unable to determine status of lock file in the data directory /data/db: boost::filesystem::status: Permission denied: "/data/db/mongod.lock", terminating

这是有道理的,但没有意义的是我可以实际运行它的唯一方法mongod 是如果我:

chmod 777 /data -R

如果我

   chmod 666 /data -R

我得到同样的错误。既然这应该是数据目录,为什么它需要执行权限。

我将我的用户添加到 mongodb 组

sudo usermod -g mongodb myuser

然后我尝试了

chmod 770 /data -R

即使我是mongodb 组的成员,它仍然失败。

我为什么要搞砸这一切?因为我想适当地保护数据目录并且不想运行 777 安全。

所以问题是:

  1. 为什么需要执行权限
  2. 为什么我是 mongodb 组的成员时无法运行它?

【问题讨论】:

  • 什么操作系统?你用什么命令来启动 mongod?
  • 这个sudo chown mongodb:mongodb /data -R 有效??为什么-R标志在路径后传递?
  • @helmy ubuntu 14.04
  • @franklinsijo 没有理由,但它似乎奏效了。

标签: linux mongodb file-permissions chmod


【解决方案1】:

目录需要有执行权限,但目录内的文件不需要执行权限。此外,正如@franklinsijo 所述,-R 应该是 chmod 的第一个参数。

要解决问题,我会执行以下操作:

$ sudo chmod -R 770 /data
$ sudo find /data -type f -exec chmod 660 {} \;

这会先给/data下的所有东西执行权限,然后把所有正常的文件都恢复为只能读写,不能执行。

【讨论】:

  • 我在查找命令“查找:路径必须先于表达式:chmod”时收到以下错误
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
相关资源
最近更新 更多