Start with implementing "give each user that will register 1 node" (as in your question): simply change the node author to the user you want to give a specific node to.
Combine this with the Rules module by using Rules Event System > Drupal is initializing, and with a Rules Condition related to the URL for the edit operation. The rule you'd need is a variation of the rule I included (in export format) in my answer to the question about How to restrict access to a node via node/12 and allow access via a path like content/sometitle?
These are the changes to that rule to make it work this case also:
- The paths containing
node should be extended by adding
/edit at the end.
- Add a (1ste) Rules Condition like "If NOT (
Author id matches the
uid of the currently logged in user)".
- Add a (2nd) Rules Condition to check if the content type to be edited matches the content type you want to use for this.
- If you also want to continue to allow special roles to edit such nods (eg an administrator), add a (3rd) Rules Condition to check if the currently logged in user does NOT have that role.
- Change the "Message" in the Rules Action to something that fits your case.
- Modify the Rules Action to fit your own requirements, e.g. to issue a redirect to some 'help page' with more details about this.
Should you also want to impose similar validations to 'delete' such nodes (which is not what your question currently says however ...), then create another rule in which you use a similar approach as for 'edit' (as described above), just replace all 'edit' by 'delete'.
If you're not familiar (enough/yet) with Rules, checkout the 32 (!!!) great, and free, video tutorials Learn the Rules framework.