Nếu bạn chỉ muốn kiểm tra xem bạn có thể kết nối với máy chủ MongoDB mà không cần xác thực thông qua bash
hay không , bạn có thể sử dụng một tập lệnh tương tự như sau:
#!/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
Đầu ra mẫu:
$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED
$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled
Tham số duy nhất cho tập lệnh này là một địa chỉ MongoDB tùy chọn để kết nối với (máy chủ:cổng / dbname); mongo
shell mặc định sử dụng localhost:27017/test
.
Tập lệnh thực hiện một kiểm tra đơn giản về việc liệu người dùng có thể được liệt kê mà không được phép hay không.
Nếu xác thực được bật đúng cách, db.getUsers()
lệnh sẽ trả về một lỗi như:
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
Lưu ý:Ngoại lệ Localhost
Theo mặc định (như ở MongoDB 3.0) có localhost exception
cho phép bạn tạo quản trị viên người dùng
đầu tiên để triển khai bằng cách kết nối qua localhost
. Khi ít nhất một người dùng đã được thêm vào, ngoại lệ localhost sẽ tự động bị vô hiệu hóa.
Nếu bạn muốn kiểm tra toàn bộ tính bảo mật của việc triển khai của mình, bạn chắc chắn nên xem lại MongoDB Danh sách kiểm tra bảo mật .