Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception with users identified by numeric id #6580

Closed
gaetandossantos opened this issue Sep 20, 2017 · 4 comments
Closed

Exception with users identified by numeric id #6580

gaetandossantos opened this issue Sep 20, 2017 · 4 comments

Comments

@gaetandossantos
Copy link

gaetandossantos commented Sep 20, 2017

Steps to reproduce

  1. Use last version of Nextcloud with user_ldap and activity, have an LDAP with pure numeric uids
  2. Configure user_ldap/expert/internal_username attribute to LDAP uid (oc_appconfig.ldap_expert_username_attr=uid)
  3. Sync some users to obtain entries like these ones in oc_ldap_user_mapping :
    ldap_dn, owncloud_name, directory_uuid
    'uid=10147,ou=accounts,dc=example,dc=fr', '10147', '5edd7898-91f9-1036-89b3-23cc2d737e18'
    'uid=10220,ou=accounts,dc=example,dc=fr', '10220', '5f232640-91f9-1036-89d9-23cc2d737e18'
    'uid=10676,ou=accounts,dc=example,dc=fr', '10676', '5ef5793e-91f9-1036-89c0-23cc2d737e18'
    'uid=10864,ou=accounts,dc=example,dc=fr', '10864', '5f0c9cc2-91f9-1036-89cb-23cc2d737e18'
  1. Use one of these user, create a file => activity table with inconsistent entry (affecteduser=0 instead of user id)
  2. Rename the file => Exception thrown («The given affected user is invalid») in logs and no activity report (but file effectively renamed)

Seem to be same problem as https://help.nextcloud.com/t/activity-app-seems-no-longer-working/7353/3

user_ldap isn't mandatory to have the issue, same behaviour if you create a new local user with login name containing only digits

Expected behaviour

Have nextcloud work with users identified by numeric id.

Actual behaviour

Due to PHP internals:

  1. numeric string used for array keys are casted to int (http://php.net/manual/en/language.types.array.php «Additionally the following key casts will occur: Strings containing valid decimal integers, unless the number is preceded by a + sign, will be cast to the integer type. E.g. the key "8" will actually be stored under 8. On the other hand "08" will not be cast, as it isn't a valid decimal integer. »)
  2. merging arrays with numeric keys result to an array with keys renumbered (http://fr.php.net/manual/en/function.array-merge.php)

Considering function getAccessList (https://github.com/nextcloud/server/blob/v12.0.1/lib/private/Share20/Manager.php#L1227)

Line Code Result
1228 $owner = $path->getOwner()->getUID(); $owner = '10147'
1259 $al['users'][$owner] = [ .. $al['users'][10147]['node_id']=91597 , NOT $al['users']['10147'] (php internals 1)
1282 $al[$k] = array_merge($al[$k], $v); l $al['users'][0]['node_id']=91597 , NOT $al['users']['10147'] (php internals 2)

Server configuration

Operating system: Debian 9

Web server: Apache 2.4.25

Database: MariaDB 10.1.26

PHP version: PHP FPM 7.0.19

Nextcloud version: 12.0.1

Updated from an older Nextcloud/ownCloud or fresh install: Fresh install

Where did you install Nextcloud from: Git repository

Signing status:

Signing status
No errors have been found.

List of activated apps:

App list
Enabled:
  - activity: 2.5.2
  - bruteforcesettings: 1.0.2
  - dav: 1.3.0
  - federatedfilesharing: 1.2.0
  - files: 1.7.2
  - files_downloadactivity: 1.1.1
  - files_reader: 1.0.4
  - files_sharing: 1.4.0
  - files_trashbin: 1.2.0
  - files_versions: 1.5.0
  - gallery: 18.0.0
  - lookup_server_connector: 1.0.0
  - oauth2: 1.0.5
  - provisioning_api: 1.2.0
  - sharebymail: 1.2.0
  - theming: 1.3.0
  - twofactor_backupcodes: 1.1.1
  - updatenotification: 1.2.0
  - user_ldap: 1.2.1
  - user_saml: 1.3.2
  - workflowengine: 1.2.0
Disabled:
  - admin_audit
  - comments
  - encryption
  - federation
  - files_external
  - systemtags

Nextcloud configuration:

Config report
{
    "system": {
        "instanceid": "oczwixzowqqu",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "cxxxxxxxxxxxxxxxxxxx.fr"
        ],
        "datadirectory": "\/var\/www\/xxxxxxxxxxxxxxx.xxxxxxxxxxxxx.fr\/htdocs\/data",
        "overwritehost": "xxxxxxxxxxxxxxxxxxx.yyyyyyyyyyyyyyyyy.fr",
        "overwrite.cli.url": "https:\/\/xxxxxxxxxxxxxxxxxxxxxxxx.fr",
        "overwriteprotocol": "https",
        "overwritewebroot": "\/",
        "dbtype": "mysql",
        "version": "12.0.1.5",
        "dbname": "nextcloud",
        "dbhost": "xxxxxxxxxxxxxxx:3306",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "maintenance": false,
        "ldapIgnoreNamingRules": false,
        "ldapProviderFactory": "\\OCA\\User_LDAP\\LDAPProviderFactory",
        "debug": true,
        "updater.release.channel": "git",
        "loglevel": 2,
        "enable_avatars": false
    },
    "apps": {
        "activity": {
            "enabled": "yes",
            "installed_version": "2.5.2",
            "notify_email_calendar": "0",
            "notify_email_calendar_event": "0",
            "notify_email_calendar_todo": "0",
            "notify_email_favorite": "0",
            "notify_email_file_changed": "0",
            "notify_email_file_created": "0",
            "notify_email_file_deleted": "0",
            "notify_email_file_downloaded": "0",
            "notify_email_file_restored": "0",
            "notify_email_public_links": "0",
            "notify_email_remote_share": "1",
            "notify_email_shared": "1",
            "notify_setting_batchtime": "3600",
            "notify_setting_self": "1",
            "notify_setting_selfemail": "0",
            "notify_stream_calendar": "0",
            "notify_stream_calendar_event": "0",
            "notify_stream_calendar_todo": "0",
            "notify_stream_favorite": "1",
            "notify_stream_file_changed": "1",
            "notify_stream_file_created": "1",
            "notify_stream_file_deleted": "1",
            "notify_stream_file_downloaded": "1",
            "notify_stream_file_favorite": "0",
            "notify_stream_file_restored": "1",
            "notify_stream_public_links": "1",
            "notify_stream_remote_share": "1",
            "notify_stream_shared": "1",
            "types": "filesystem"
        },
        "admin_audit": {
            "enabled": "no",
            "installed_version": "1.2.0",
            "types": "logging"
        },
        "backgroundjob": {
            "lastjob": "58"
        },
        "bruteforcesettings": {
            "enabled": "yes",
            "installed_version": "1.0.2",
            "types": ""
        },
        "comments": {
            "enabled": "no",
            "installed_version": "1.2.0",
            "types": "logging"
        },
        "core": {
            "backgroundjobs_mode": "cron",
            "installed.bundles": "[\"CoreBundle\"]",
            "installedat": "1496147465.3678",
            "lastcron": "1503328462",
            "lastupdateResult": "[]",
            "lastupdatedat": "1505803152",
            "moveavatarsdone": "yes",
            "oc.integritycheck.checker": "[]",
            "previewsCleanedUp": "1",
            "public_files": "files_sharing\/public.php",
            "public_webdav": "dav\/appinfo\/v1\/publicwebdav.php",
            "scss.variables": "61c39aaaef2af6f4529f60a502fbfe9c",
            "vendor": "nextcloud"
        },
        "dav": {
            "buildCalendarSearchIndex": "yes",
            "enabled": "yes",
            "installed_version": "1.3.0",
            "types": "filesystem"
        },
        "deck": {
            "enabled": "no",
            "installed_version": "0.1.4",
            "types": ""
        },
        "federatedfilesharing": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": ""
        },
        "federation": {
            "enabled": "no",
            "installed_version": "1.2.0",
            "types": "authentication"
        },
        "files": {
            "cronjob_scan_files": "3000",
            "enabled": "yes",
            "installed_version": "1.7.2",
            "types": "filesystem"
        },
        "files_downloadactivity": {
            "enabled": "yes",
            "installed_version": "1.1.1",
            "types": "filesystem"
        },
        "files_reader": {
            "enabled": "yes",
            "installed_version": "1.0.4",
            "types": "filesystem"
        },
        "files_sharing": {
            "enabled": "yes",
            "incoming_server2server_share_enabled": "no",
            "installed_version": "1.4.0",
            "lookupServerUploadEnabled": "no",
            "outgoing_server2server_share_enabled": "no",
            "types": "filesystem"
        },
        "files_trashbin": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": "filesystem"
        },
        "files_versions": {
            "enabled": "yes",
            "installed_version": "1.5.0",
            "types": "filesystem"
        },
        "gallery": {
            "enabled": "yes",
            "installed_version": "18.0.0",
            "types": ""
        },
        "impersonate": {
            "enabled": "no",
            "installed_version": "1.0.1",
            "types": ""
        },
        "lookup_server_connector": {
            "enabled": "yes",
            "installed_version": "1.0.0",
            "types": "authentication"
        },
        "oauth2": {
            "enabled": "yes",
            "installed_version": "1.0.5",
            "types": "authentication"
        },
        "provisioning_api": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": "prevent_group_restriction"
        },
        "sharebymail": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": "filesystem"
        },
        "spreed": {
            "enabled": "no",
            "installed_version": "2.0.1",
            "types": "prevent_group_restriction"
        },
        "systemtags": {
            "enabled": "no",
            "installed_version": "1.2.0",
            "types": "logging"
        },
        "theming": {
            "cachebuster": "10",
            "color": "#9a1c69",
            "enabled": "yes",
            "installed_version": "1.3.0",
            "logoMime": "image\/png",
            "types": "logging"
        },
        "twofactor_backupcodes": {
            "enabled": "yes",
            "installed_version": "1.1.1",
            "types": ""
        },
        "updatenotification": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": ""
        },
        "user_ldap": {
            "cleanUpJobOffset": "150",
            "enabled": "yes",
            "has_memberof_filter_support": "1",
            "home_folder_naming_rule": "",
            "installed_version": "1.2.1",
            "last_jpegPhoto_lookup": "0",
            "ldap_agent_password": "***REMOVED SENSITIVE VALUE***",
            "ldap_attributes_for_group_search": "",
            "ldap_attributes_for_user_search": "displayName\nuid\ncn\nmail",
            "ldap_backup_host": "",
            "ldap_backup_port": "",
            "ldap_base": "ou=accounts,dc=xxxxxxxxxxxxxxxx,dc=fr",
            "ldap_base_groups": "ou=groups,dc=xxxxxxxxxxxxx,dc=fr",
            "ldap_base_users": "ou=accounts,dc=xxxxxxxxxxxxxx,dc=fr",
            "ldap_cache_ttl": "600",
            "ldap_configuration_active": "1",
            "ldap_default_ppolicy_dn": "",
            "ldap_display_name": "displayName",
            "ldap_dn": "uid=xxxxxxxxxxx,ou=admins,dc=xxxxxxxxxxx,dc=fr",
            "ldap_dynamic_group_member_url": "",
            "ldap_email_attr": "",
            "ldap_experienced_admin": "0",
            "ldap_expert_username_attr": "uid",
            "ldap_expert_uuid_group_attr": "",
            "ldap_expert_uuid_user_attr": "",
            "ldap_gid_number": "gidNumber",
            "ldap_group_display_name": "cn",
            "ldap_group_filter": "",
            "ldap_group_filter_mode": "0",
            "ldap_group_member_assoc_attribute": "uniqueMember",
            "ldap_groupfilter_groups": "",
            "ldap_groupfilter_objectclass": "",
            "ldap_host": "ldap.xxxxxxx.fr",
            "ldap_login_filter": "(&(&(|(objectclass=inetOrgPerson)))(|(supannAliasLogin=%uid)))",
            "ldap_login_filter_mode": "0",
            "ldap_loginfilter_attributes": "supannAliasLogin",
            "ldap_loginfilter_email": "0",
            "ldap_loginfilter_username": "0",
            "ldap_nested_groups": "0",
            "ldap_override_main_server": "",
            "ldap_paging_size": "0",
            "ldap_port": "389",
            "ldap_quota_attr": "",
            "ldap_quota_def": "",
            "ldap_tls": "0",
            "ldap_turn_off_cert_check": "0",
            "ldap_turn_on_pwd_change": "0",
            "ldap_user_display_name_2": "",
            "ldap_user_filter_mode": "0",
            "ldap_userfilter_groups": "",
            "ldap_userfilter_objectclass": "inetOrgPerson",
            "ldap_userlist_filter": "(&(|(objectclass=inetOrgPerson)))",
            "types": "authentication",
            "use_memberof_to_detect_membership": "1"
        },
        "user_saml": {
            "enabled": "yes",
            "general-require_provisioned_account": "1",
            "general-uid_mapping": "urn:oid:0.9.2342.19200300.100.1.1",
            "general-use_saml_auth_for_desktop": "0",
            "idp-entityId": "https:\/\/xxx.fr\/idp\/shibboleth",
            "idp-singleSignOnService.url": "https:\/\/xxx.fr\/idp\/profile\/SAML2\/Redirect\/SSO",
            "idp-x509cert": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----",
            "installed_version": "1.3.2",
            "saml-attribute-mapping-displayName_mapping": "urn:oid:2.16.840.1.113730.3.1.241 ",
            "saml-attribute-mapping-email_mapping": "urn:oid:0.9.2342.19200300.100.1.3 ",
            "security-signMetadata": "1",
            "security-wantAssertionsEncrypted": "0",
            "security-wantAssertionsSigned": "0",
            "security-wantXMLValidation": "1",
            "sp-privateKey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----",
            "sp-x509cert": "-----BEGIN CERTIFICATE-----\-----END CERTIFICATE-----",
            "type": "saml",
            "types": "authentication"
        },
        "workflowengine": {
            "enabled": "yes",
            "installed_version": "1.2.0",
            "types": "filesystem"
        }
    }
}

Are you using external storage, if yes which one: no, just local storage
Are you using encryption: no

Are you using an external user-backend, if yes which one: LDAP

LDAP configuration (delete this part if not used)

LDAP config
+-------------------------------+----------------------------------------------------------------+
| Configuration                 |                                                                |
+-------------------------------+----------------------------------------------------------------+
| hasMemberOfFilterSupport      | 1                                                              |
| hasPagedResultSupport         |                                                                |
| homeFolderNamingRule          |                                                                |
| lastJpegPhotoLookup           | 0                                                              |
| ldapAgentName                 | uid=xxxxxxx,ou=admins,dc=xxxxxx,dc=fr              |
| ldapAgentPassword             | ***                                                            |
| ldapAttributesForGroupSearch  |                                                                |
| ldapAttributesForUserSearch   | displayName;uid;cn;mail                                        |
| ldapBackupHost                |                                                                |
| ldapBackupPort                |                                                                |
| ldapBase                      | ou=accounts,dc=xxxxxxx,dc=fr                                |
| ldapBaseGroups                | ou=groups,dc=xxxxxxx,dc=fr                                  |
| ldapBaseUsers                 | ou=accounts,dc=xxxxxxx,dc=fr                                |
| ldapCacheTTL                  | 600                                                            |
| ldapConfigurationActive       | 1                                                              |
| ldapDefaultPPolicyDN          |                                                                |
| ldapDynamicGroupMemberURL     |                                                                |
| ldapEmailAttribute            |                                                                |
| ldapExperiencedAdmin          | 0                                                              |
| ldapExpertUUIDGroupAttr       |                                                                |
| ldapExpertUUIDUserAttr        |                                                                |
| ldapExpertUsernameAttr        | uid                                                            |
| ldapGidNumber                 | gidNumber                                                      |
| ldapGroupDisplayName          | cn                                                             |
| ldapGroupFilter               |                                                                |
| ldapGroupFilterGroups         |                                                                |
| ldapGroupFilterMode           | 0                                                              |
| ldapGroupFilterObjectclass    |                                                                |
| ldapGroupMemberAssocAttr      | uniqueMember                                                   |
| ldapHost                      | yyyyyyy.xxxxxxx.fr                                         |
| ldapIgnoreNamingRules         |                                                                |
| ldapLoginFilter               | (&(&(|(objectclass=inetOrgPerson)))(|(supannAliasLogin=%uid))) |
| ldapLoginFilterAttributes     | supannAliasLogin                                               |
| ldapLoginFilterEmail          | 0                                                              |
| ldapLoginFilterMode           | 0                                                              |
| ldapLoginFilterUsername       | 0                                                              |
| ldapNestedGroups              | 0                                                              |
| ldapOverrideMainServer        |                                                                |
| ldapPagingSize                | 0                                                              |
| ldapPort                      | 389                                                            |
| ldapQuotaAttribute            |                                                                |
| ldapQuotaDefault              |                                                                |
| ldapTLS                       | 0                                                              |
| ldapUserDisplayName           | displayName                                                    |
| ldapUserDisplayName2          |                                                                |
| ldapUserFilter                | (&(|(objectclass=inetOrgPerson)))                              |
| ldapUserFilterGroups          |                                                                |
| ldapUserFilterMode            | 0                                                              |
| ldapUserFilterObjectclass     | inetOrgPerson                                                  |
| ldapUuidGroupAttribute        | auto                                                           |
| ldapUuidUserAttribute         | auto                                                           |
| turnOffCertCheck              | 0                                                              |
| turnOnPasswordChange          | 0                                                              |
| useMemberOfToDetectMembership | 1                                                              |
+-------------------------------+----------------------------------------------------------------+

Client configuration

Browser: Firefox 45.9

Operating system: Debian 8.7

Logs

Web server error log

None

Nextcloud log (data/nextcloud.log)

Nextcloud log
{"reqId":"0Yn8GuGyPW9KpS2dKewf","level":3,"time":"2017-09-19T13:13:59+00:00","remoteAddr":"194.254.129.13","user":"7045","app":"no app in context","method":"MOVE","url":"\/remote.php\/webdav\/plop","message":"Exception: {\"Exception\":\"InvalidArgumentException\",\"Message\":\"The given affected user is invalid\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/nextcloud.xxxxx.fr\\\/htdocs\\\/apps\\\/activity\\\/lib\\\/FilesHooks.php(1066): OC\\\\Activity\\\\Event->setAffectedUser(0)\\n#1 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/apps\\\/activity\\\/lib\\\/FilesHooks.php(408): OCA\\\\Activity\\\\FilesHooks->addNotificationsForUser(0, 'renamed_by', Array, 91651, '\\\/\\\/plop4', true, true, 0, 'file_changed')\\n#2 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/apps\\\/activity\\\/lib\\\/FilesHooks.php(337): OCA\\\\Activity\\\\FilesHooks->fileRenaming('\\\/plop', '\\\/plop4')\\n#3 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/apps\\\/activity\\\/lib\\\/FilesHooksStatic.php(79): OCA\\\\Activity\\\\FilesHooks->fileMovePost('\\\/plop', '\\\/plop4')\\n#4 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/lib\\\/private\\\/legacy\\\/hook.php(106): OCA\\\\Activity\\\\FilesHooksStatic::fileMovePost(Array)\\n#5 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/lib\\\/private\\\/Files\\\/View.php(833): OC_Hook::emit('OC_Filesystem', 'post_rename', Array)\\n#6 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/apps\\\/dav\\\/lib\\\/Connector\\\/Sabre\\\/Node.php(137): OC\\\\Files\\\\View->rename('\\\/plop', '\\\/plop4')\\n#7 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Tree.php(151): OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Node->setName('plop4')\\n#8 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(642): Sabre\\\\DAV\\\\Tree->move('plop', 'plop4')\\n#9 [internal function]: Sabre\\\\DAV\\\\CorePlugin->httpMove(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#10 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#11 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(479): Sabre\\\\Event\\\\EventEmitter->emit('method:MOVE', Array)\\n#12 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(254): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#13 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(71): Sabre\\\\DAV\\\\Server->exec()\\n#14 \\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/remote.php(162): require_once('\\\/var\\\/www\\\/nextcl...')\\n#15 {main}\",\"File\":\"\\\/var\\\/www\\\/nextcloud.xxxxxxx.fr\\\/htdocs\\\/lib\\\/private\\\/Activity\\\/Event.php\",\"Line\":142}","userAgent":"Mozilla\/5.0 (X11; Linux x86_64; rv:45.0) Gecko\/20100101 Firefox\/45.0","version":"12.0.1.5"}

Browser log

None

@blizzz
Copy link
Member

blizzz commented Sep 25, 2017

According to the link to the forums it should be fixed with https://github.com/nextcloud/activity/pull/103/files

Does it solve the issue?

@gaetandossantos
Copy link
Author

We already have this patch in our instance but it didn't solve this issue.

@lchapard
Copy link

hi, I have the same error, the patch did not solve the problem NC 12.0.3

@blizzz
Copy link
Member

blizzz commented Nov 13, 2017

@nickvergessen known?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants