Erro de permissões do Mongodb após alterar o diretório de dados

2

Acabei de instalar o mongodb versão 3.0.3 no Ubuntu. Eu editei o arquivo conf para alterar o diretório de dados padrão para "/ home / user / mongodb" e dei as seguintes permissões:

drwxr-xr-x  4 mongodb mongodb  4096 May 29 23:26 mongodb

Eu não mudei mais nada no arquivo conf. Quando tento iniciar o serviço mongod como

sudo service mongod start

e se conectar ao shell através do comando mongo, eu recebo o seguinte erro

MongoDB shell version: 3.0.3
connecting to: test
2015-05-29T23:58:49.450+0200 W NETWORK  Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-05-29T23:58:49.452+0200 E QUERY    Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    at connect (src/mongo/shell/mongo.js:179:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed

O arquivo de log diz isso toda vez que tento iniciar o servidor:

2015-05-30T00:01:02.552+0200 I CONTROL  ***** SERVER RESTARTED *****
2015-05-30T00:01:02.581+0200 I STORAGE  [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/home/user/mongodb/storage.bson", terminating
2015-05-30T00:01:02.581+0200 I CONTROL  [initandlisten] dbexit:  rc: 100

Tanto quanto eu posso dizer, as permissões estão corretas. Qual poderia ser o problema?

    
por Jayanth 30.05.2015 / 00:14

1 resposta

3

o diretório inicial do usuário como padrão pode ser lido, gravado e listado apenas por seu proprietário para que outros usuários (outro usuário root) não possam listar o conteúdo da pasta inicial de outros usuários. Então você precisa garantir que o usuário mongodb tenha acesso ao novo diretório fornecido. você pode verificar isso usando o comando like

namei -m /home/user/mongodb

exemplo de saída

f: /home/scantlight/mongodb
  dr-xr-xr-x /
  drwxr-xr-x home
  drwx------ scantlight
  drwxr-xr-x mongodb

como você pode ver minha pasta home tem permissão rwx para mim, proprietário ... outro usuário não tem permissão para que o conteúdo da minha pasta home não possa ser listado por outro usuário (exceto root )

É claro que você não deseja conceder permissão de gravação ou leitura a outros usuários em seu diretório pessoal, mas deseja que eles possam alcançar a pasta de destino. Aqui está a bandeira x pode ser usada. quando o sinalizador x é definido no arquivo, significa que esse arquivo pode ser executado, por esse motivo ele é chamado de sinalizador de execução ... mas quando este sinalizador é definido na pasta e nenhum dos sinalizadores r (read) ou w (write) é definido. Isso significa que outros usuários de usuários do mesmo grupo podem passar por essa pasta para alcançar uma pasta situada mais profundamente.

Portanto, para garantir que o usuário mongodb possa acessar, ler e escrever na pasta / home / user / mongodb ... sua pasta inicial deve ter o sinalizador de executável (x flag) definido para todos outros usuários.

chmod -R o+x /home/user/mongodb

depois disso, o exemplo de saída anterior deve se parecer com

f: /home/scantlight/mongodb
 dr-xr-xr-x /
 drwxr-xr-x home
 drwx-----x scantlight
 drwxr-xr-x mongodb

Observe a permissão x para todos os outros usuários ... se isso não ajudar :) ... apenas verifique as permissões de arquivo dentro da pasta / home / user / mongodb talvez haja algum problema com permissões de arquivos incluídos?

    
por 30.05.2015 / 01:34