Jeśli chcesz tylko sprawdzić, czy możesz połączyć się z serwerem MongoDB bez uwierzytelniania przez bash
, możesz użyć skryptu podobnego do następującego:
#!/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
Przykładowe wyjście:
$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED
$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled
Jedynym parametrem tego skryptu jest opcjonalny adres MongoDB, z którym można się połączyć (host:port/nazwa bazy danych); mongo
powłoka domyślnie używa localhost:27017/test
.
Skrypt w prosty sposób sprawdza, czy użytkownicy mogą być umieszczani na liście bez pozwolenia.
Jeśli auth jest poprawnie włączone, db.getUsers()
polecenie powinno zwrócić błąd, taki jak:
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
Uwaga:wyjątek lokalnego hosta
Domyślnie (jak w MongoDB 3.0) istnieje localhost exception
który pozwala utworzyć pierwszego administratora użytkowników
dla wdrożenia, łącząc się przez localhost
. Po dodaniu co najmniej jednego użytkownika wyjątek localhost jest automatycznie wyłączany.
Jeśli chcesz sprawdzić pełne bezpieczeństwo swojego wdrożenia, zdecydowanie warto zapoznać się z MongoDB Lista kontrolna bezpieczeństwa .