为了维护数据库安全,您可以限制授权的非 root 用户的权限,允许他们执行管理操作,而无需授予他们完全的 root 权限。
本页演示如何允许非 root 用户在Linux系统上启动、停止和重新启动 mongod
进程,而又不允许其访问权限所有 root 用户权限。此过程适用于属于非 root Linux群组的用户,该群组不同于运行 mongod
进程的群组。
开始之前
Considerations
重要
以下过程需要 root访问权限才能设置。不正确的设置可能会导致系统无响应,因此在生产中实施之前,请务必在开发环境中进行测试。确保您有数据的最新备份。
我们建议您在设置新系统时执行此过程。如果不可行,请在维护窗口期间执行该过程。
此过程仅影响一个本地系统的设置。如果您使用的是副本集或分片集群,请滚动执行此过程。请勿一次更新所有节点。
此过程适用于所有Linux发行版,但仅在CentOS 6/7、RHEL 6/7、 Ubuntu 18.04 和Amazon Linux 2 上进行了测试。
步骤
在下方选择您的系统提供商对应的标签页。
此过程适用于CentOS 7 和 RHEL 7。
更新 sudoers
文件。
使用 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 用户帐户的功能。
确认非 root 用户的权限。
您的新用户现在可以启动和停止 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。
更新 sudoers
文件。
使用 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 用户帐户的功能。
确认非 root 用户的权限。
您的新用户现在可以启动和停止 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]
消息。