对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

配置非根用户权限

为了维护数据库安全,您可以限制授权的非 root 用户的权限,允许他们执行管理操作,而无需授予他们完全的 root 权限。

本页演示如何允许非 root 用户在Linux系统上启动、停止和重新启动 mongod 进程,而又不允许其访问权限所有 root 用户权限。此过程适用于属于非 root Linux群组的用户,该群组不同于运行 mongod进程的群组。

安装MongoDB CommunityMongoDB Enterprise。

重要

以下过程需要 root访问权限才能设置。不正确的设置可能会导致系统无响应,因此在生产中实施之前,请务必在开发环境中进行测试。确保您有数据的最新备份。

  • 我们建议您在设置新系统时执行此过程。如果不可行,请在维护窗口期间执行该过程。

  • 此过程仅影响一个本地系统的设置。如果您使用的是副本集或分片集群,请滚动执行此过程。请勿一次更新所有节点。

  • 此过程适用于所有Linux发行版,但仅在CentOS 6/7、RHEL 6/7、 Ubuntu 18.04 和Amazon Linux 2 上进行了测试。

在下方选择您的系统提供商对应的标签页。

此过程适用于CentOS 7 和 RHEL 7。

1
adduser <user-name>
groupadd <group-name>
2

使用以下命令更新配置文件(位于 /etc/mongod.conf)中的权限:

sudo chown mongod:mongod /etc/mongod.conf
sudo chmod 600 /etc/mongod.conf
ls -l /etc/mongod.conf
-rw-------. 1 mongod mongod 330 Feb 27 18:43 /etc/mongod.conf

此配置可确保只有 mongod 用户和 root 有权访问权限和编辑 mongod.conf文件。

3

使用 visudo 将以下配置行添加到 sudoers文件:

%mongod ALL =(ALL) NOPASSWD: /bin/systemctl start mongod.service, /bin/systemctl stop mongod.service, /bin/systemctl restart mongod.service
%testuser ALL =(ALL) NOPASSWD: /bin/systemctl start mongod.service, /bin/systemctl stop mongod.service, /bin/systemctl restart mongod.service

注意

sudoers文件中的语法错误可能会影响 root 用户帐户的功能。

4

您的新用户现在可以启动和停止 mongod 服务,但无法读取 /etc/mongod.conf文件。

让新用户运行以下命令来启动 mongod 并确认他们没有收到 [Permission Denied] 消息:

sudo /bin/systemctl start mongod.service

他们可以使用 sudo /bin/systemctl stop mongod.service运行类似的测试,以确保可以正确停止 mongod 服务。

现在,让他们运行以下命令以尝试访问权限/etc/mongod.conf文件:

sudo vi /etc/mongod.conf

此命令应返回 [Permission Denied] 消息。

此过程适用于CentOS 6、RHEL 6、 Amazon Linux 2 和Ubuntu 18.04。

1
adduser <user-name>
groupadd <group-name>
2

使用以下命令更新配置文件(位于 /etc/mongod.conf)中的权限:

sudo chown mongod:mongod /etc/mongod.conf
sudo chmod 600 /etc/mongod.conf
ls -l /etc/mongod.conf
-rw-------. 1 mongod mongod 330 Feb 27 18:43 /etc/mongod.conf

此配置可确保只有 mongod 用户和 root 有权访问权限和编辑 mongod.conf文件。

3

使用 visudo 将以下配置行添加到 sudoers 文件中。

对于CentOS 6、RHEL 6 和Amazon Linux 2:

%mongod ALL =(ALL) NOPASSWD: /sbin/service mongod start, /sbin/service mongod stop, /sbin/service mongod restart
%testuser ALL =(ALL) NOPASSWD: /sbin/service mongod start, /sbin/service mongod stop, /sbin/service mongod restart

For Ubuntu 18.04:

%mongod ALL =(ALL) NOPASSWD: /usr/sbin/service mongod start, /usr/sbin/service mongod stop, /usr/sbin/service mongod restart
%testuser ALL =(ALL) NOPASSWD: /usr/sbin/service mongod start, /usr/sbin/service mongod stop, /usr/sbin/service mongod restart

注意

sudoers文件中的语法错误可能会影响 root 用户帐户的功能。

4

您的新用户现在可以启动和停止 mongod 服务,但无法读取 /etc/mongod.conf文件。

让新用户运行以下命令来启动 mongod

sudo service mongod start

确保他们在Shell中收到以下确认:

Starting mongod: [ OK ]

他们可以使用 sudo service mongod stop运行类似的测试,以确保可以正确停止 mongod 服务。

现在,让他们运行以下命令以尝试访问权限/etc/mongod.conf文件:

sudo vi /etc/mongod.conf

此命令应返回 [Permission Denied] 消息。