Drupal - How to restrict direct access to the nodes?
A simple solution would be to not publish the nodes you don't want to be accessible. Views can still pull the data from those nodes.
If we unpublish nodes added by user1 they wont be editable by any other user even if the user have the rights to edit the content of that content type.
Restrict Node Page View seems a better way to restrict the direct access to any nodes of specific content type.
Usage is also fairly simple you just need to enable this module and configure the permissions for the nodes which are directly accessible as normal.
http://drupal.org/project/restrict_node_page_view
From the project page:
Have you ever used a slideshow nodetype that you need to be published but don't want the node be accessible by itself using then node/XXX path? This module is for you!
With this module you can disable direct access to node pages (node/XXX) based on nodetypes and permissions.
Enable the module and don't forget to configure your permissions.