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

Eug*_*kov 1 linux ubuntu mongodb

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

运行的用户mongod是"mongodb",组"mongodb"因此它应该可供阅读.

如果我改变的权限mongodb/,并keyfile-rw-r--r--成为可读,但蒙戈声称它太宽容,当然

用这个东西去煮饭了.有什么建议在这里有什么问题吗?

jmd*_*ego 9

我以前遇到过同样的问题,我找到的解决方案和未记录的解决方案与上下文有关.如果您在Linux中尝试:

ls -lahZ
Run Code Online (Sandbox Code Playgroud)

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

chcon system_u:object_r:mongod_var_lib_t:s0 mongodb-keyfile
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!!


ris*_*r0y 6

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

sudo chown mongod:mongod mongodb.key

mongod 进程所有者是 mongod,它试图访问该文件


Vol*_*enD 4

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

chmod 700 /srv/mongodb/
chmod 600 /srv/mongodb/keyfile
Run Code Online (Sandbox Code Playgroud)