Maintenance mode is for preventing any users other than administrators from using the site while maintenance is taking place, though it's not designed to prevent user access during version upgrades.
When users attempt to access a course when your site is in maintenance mode, they obtain a message informing them that the site is in maintenance mode. If you wish, you can create a customized maintenance mode message, perhaps stating when the site will be available again or giving the reason for doing maintenance.
Note: The front page of your site will appear as normal when your site is in maintenance mode. Users will only see the maintenance mode message when they attempt to access a course.
Setting maintenance mode
An administrator can put the site into maintenance mode in Administration > Site administration > Server > Maintenance mode.
When a site is in maintenance mode, the link "In Maintenance Mode" is displayed near the top right of each page (except the front page) for admins.
If your session finished while still in Mainenance mode, you can re-login by typing the login URL directly (http://yoursitename/login/)
CLI maintenance mode
Admins can enable CLI maintenance mode by adding a file $CFG->dataroot/climaintenance.html. If it exists, this file will be sent to the navigator instead of the standard Moodle home page. The difference from the standard maintenance mode is that all web access is prevented, CLI scripts continue to work (with the exception of admin/cli/cron.php). This CLI maintenance mode is often used during CLI version upgrades.
It is possible to use the admin/cli/maintenance.php to schedule the CLI maintenance mode and then to display a message to users warning them when the site will become unavailable. In the scheduled maintenance mode, the maintenance message is taken from admin setting, template file $CFG->dataroot/climaintenance.template.html and the language pack, in this order. See MDL-37596 for details.
See also the section on maintenance mode in Administration via command line.