-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Description
Steps to reproduce
- Use last version of Nextcloud with
user_ldapandactivity, have an LDAP with pure numeric uids - Configure user_ldap/expert/internal_username attribute to LDAP uid (oc_appconfig.ldap_expert_username_attr=uid)
- 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'
- Use one of these user, create a file => activity table with inconsistent entry (affecteduser=0 instead of user id)
- 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:
- 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. »)
- 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