With sharing Keyword enforces sharing rules that apply to the current user. If absent, code is run under the default system context. Use the with sharing keywords when declaring a class to enforce the sharing rules that apply to the current user.
Without sharing keyword ensures that the sharing rules of the current user are not enforced. Use the without sharing keywords when declaring a class to ensure that the sharing rules for the current user are not enforced. For example, you may want to explicitly turn off sharing rule enforcement when a class acquires sharing rules when it is called from another class that is declared using with sharing.