Your dog is showing instinctive guarding instincts - he has something, he doesn;t want to let it go, so keep off.
As his 'pack leader' he must learn to give up what ever he has to you.
If he growls, take it, if he snaps, yell, or smack, which ever snction he understands.
Each time he has something, slowly advance, and make it clear that you are going to take it. Contibue your snaction until he gives it up without protest, then praise him lavishly, and so on, until he understands that for you, he will give up what he is holding.
If anyone else ie stupid enough to try and take something out of the mouth of a dog they don;t know, you should warn them that he may bite, and it's difficult to blame him because he is protecting what is his, and by default, yours.