(1) Always show all the options to not confuse the users. If a user is aware of the read only permission group he or she might think that the group has been removed by the programmers. If the users are not aware of the option they get a wrong picture of the (usually) available options. Worst case is that the dropdown shows only one value (Full admin in your example), which results in an useless filter then and the user won't use it in the future anymore.
(2a) Disable the selection of the dropdown option and explain it. This has several benefits, such as showing the actual state of the application, keeping the consistency, not confusing the users as described above and saving time and bandwidth. Make sure that the user understands why this option is disabled (see mockup below).

download bmml source – Wireframes created with Balsamiq Mockups
(2b) Only show a hint that the selection of the dropdown value does return no results. If the selection of filter values modifies an URL you probably would not want to disable any options as the users might want to share or bookmark their selection. In this case it is even worse to not show all values as it confuses a visitor following such an URL with the filter values selected that (currently) return no results.
When to remove such options
After having a look at how some of my daily used applications handle this, I came across an example where the list of options should definitely be filtered from options that return no search results: GitHub language filter (not implemented as dropdown but still suitable as example).
This probably is always an option if it is obvious to the user that some filtering on the dropdown options took place and if the user knows that the filter options depend on the current search.