Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-20235

Upsert (via PHP) on non-existsing database - results in 'permission denied' (storage: WiredTiger)

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Major - P3 Major - P3
    • None
    • 3.0.5
    • WiredTiger
    • None
    • ALL
    • Hide

      e.g.
      php test.php

      PHP mongodb driver: https://pecl.php.net/package/mongo (version. 1.6.10)

      test.php:
      ---------------------------------
      $dbName = 'test1';
      $mongoDb = new MongoClient();
      $collection = new MongoCollection($mongoDb->selectDB($dbName), 'a');
      $collection->update(array('_id' => 1), array('_id' => 1, 'v'=>2), array('w' => 0, 'upsert' => true));
      ---------------------------------
      result (php test.php):

      ls -l /var/lib/mongodb-wt/
      drw-r-xr-x 2 mongodb nogroup   4096 wrz  1 08:47 test1
      ^^^ no 'x' for owner (mongodb) !!
      

      mongodb.log:

      2015-09-01T08:47:09.380+0200 E STORAGE  [conn89324] WiredTiger (13) [1441090029:380500][21638:0x7f07958ee700], session.create: /var/lib/mongodb-wt/test1/
      collection-5--7277287853652342963.wt: Permission denied
      2015-09-01T08:47:09.387+0200 I -        [conn89324] Assertion: 8:13: Permission denied
      

      /etc/mongod.conf:

      storage:
        dbPath: /var/lib/mongodb-wt
        directoryPerDB: true
        engine: wiredTiger
        wiredTiger:
          engineConfig:
            cacheSizeGB: 4
        journal:
          enabled: true
      systemLog:
        quiet: true
        destination: file
        path: /var/log/mongodb/mongodb.log
        logAppend: true
        timeStampFormat: iso8601-local
      net:
        port: 27017
        wireObjectCheck : false
        unixDomainSocket:
          enabled : true
          filePermissions: 0777
        http:
          RESTInterfaceEnabled: true
          enabled: true
      

      Show
      e.g. php test.php PHP mongodb driver: https://pecl.php.net/package/mongo (version. 1.6.10) test.php: --------------------------------- $dbName = 'test1'; $mongoDb = new MongoClient(); $collection = new MongoCollection($mongoDb->selectDB($dbName), 'a'); $collection->update(array('_id' => 1), array('_id' => 1, 'v'=>2), array('w' => 0, 'upsert' => true)); --------------------------------- result (php test.php): ls -l /var/lib/mongodb-wt/ drw-r-xr-x 2 mongodb nogroup 4096 wrz 1 08:47 test1 ^^^ no 'x' for owner (mongodb) !! mongodb.log: 2015-09-01T08:47:09.380+0200 E STORAGE [conn89324] WiredTiger (13) [1441090029:380500][21638:0x7f07958ee700], session.create: /var/lib/mongodb-wt/test1/ collection-5--7277287853652342963.wt: Permission denied 2015-09-01T08:47:09.387+0200 I - [conn89324] Assertion: 8:13: Permission denied /etc/mongod.conf: storage: dbPath: /var/lib/mongodb-wt directoryPerDB: true engine: wiredTiger wiredTiger: engineConfig: cacheSizeGB: 4 journal: enabled: true systemLog: quiet: true destination: file path: /var/log/mongodb/mongodb.log logAppend: true timeStampFormat: iso8601-local net: port: 27017 wireObjectCheck : false unixDomainSocket: enabled : true filePermissions: 0777 http: RESTInterfaceEnabled: true enabled: true

    Description

      When upserting a document to non-existing database - mongo creates database folder with invalid permission (drw-r-xr-x mongodb nogroup), so it can not create files in this folder (sic!).

      ls -la /var/lib/mongodb-wt/test1/
      drw-r-xr-x  2 mongodb nogroup 4096 wrz  1 08:47 .
      drwxr-xr-x 51 mongodb mongodb 4096 wrz  1 08:47 ..
      

      e.g. mongodb.log: /var/lib/mongodb-wt/test1/
      collection-5--7277287853652342963.wt: Permission denied

      Attachments

        Activity

          People

            sam.kleinman Sam Kleinman (Inactive)
            radek Radek
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: