我正在尝试使用默认值运行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安全性运行。
所以问题是:
答案 0 :(得分:1)
目录需要具有执行权限,但目录中的文件不需要执行权限。另外,如@franklinsijo所述,-R应该是chmod的第一个参数。
要解决问题,我会执行以下操作:
$ sudo chmod -R 770 /data
$ sudo find /data -type f -exec chmod 660 {} \;
这将首先提供/ data execute权限下的所有内容,然后将所有普通文件返回到只读和写,但不执行。