11

我正在运行一个 mongodb 实例,它在我的服务器机器上运行身份验证模式。目前我正在使用 shell scipt 来获取是否有 mongodb 实例正在运行。如何检查 mongodb 是在 auth mode 还是 non auth mode 下运行。

4

1 回答 1

11

如果你只是想测试是否可以通过 认证连接到 MongoDB 服务器bash,你可以使用类似下面的脚本:

#!/bin/bash

# Connect to MongoDB address (host:port/dbname) specified as first parameter
# If no address specified, `mongo` default will be localhost:27017/test
isAuth=`mongo --eval "db.getUsers()" $1 | grep "not auth"`

if [ -z "$isAuth" ] ;
then
   echo "mongod auth is NOT enabled"
   exit 1
else
   echo "mongod auth is ENABLED"
   exit 0
fi

示例输出:

$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED

$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled

此脚本的唯一参数是一个可选的 MongoDB 地址以连接到 (host:port/dbname);mongoshell 默认使用localhost:27017/test.

该脚本对是否可以在未经许可的情况下列出用户进行简单检查。

如果正确启用了身份验证,该db.getUsers()命令应返回如下错误:

  "Error: not authorized on test to execute command { usersInfo: 1.0 }"

注意:本地主机异常

默认情况下(如 MongoDB 3.0),有一个localhost exception允许您通过连接为部署创建第一个用户管理员localhost。一旦添加了至少一个用户,localhost 异常就会自动禁用。

如果您想检查部署的完整安全性,绝对值得查看MongoDB Security checklist

于 2015-08-17T03:44:44.623 回答