MongoDB & /data/db 目录权限



我正在尝试使用默认值运行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

如果 i

   chmod 666 /data -R

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

我将我的用户添加到MongoDB组

sudo usermod -g mongodb myuser

然后我尝试了

chmod 770 /data -R

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

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

所以问题是:

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

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

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

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

这将首先授予/data 执行权限下的所有内容,然后将所有正常文件返回到仅具有读取和写入,但不执行。

相关内容

最新更新