<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Apr 14, 2014 at 8:01 AM, Andy Colson <span dir="ltr"><<a href="mailto:andy@squeakycode.net" target="_blank">andy@squeakycode.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On 4/14/2014 7:25 AM, Mark Volz wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hello,<br>
<br>
I would like to set up a user account in PostGIS / PostGRES with the<br>
following:<br>
<br>
·The user has read only access to all of the layers in a particular<br>
database.<br>
<br>
·The user also have read only access to any layers added or updated<br>
through the shapefile uploader.<br>
<br>
·The client software may be ArcGIS*, AutoCAD (Map), QGIS, MapServer, etc.<br>
<br>
*ArcGIS will use “query layers”, not SDE.<br>
<br>
If anyone has any cliff notes on how to properly  set up read only<br>
permissions please let me know.<br>
<br>
Thank You<br>
<br>
Sincerely,<br>
<br>
Mark Volz, GISP<br>
<br>
</blockquote>
<br>
<br></div></div>
You can think of users and groups pretty much the same.  "user" and "role" are mostly interchangeable.<br>
<br>
Doesn't really matter who the owner of the db is, that can stay as-is.<br>
<br>
We'll create a new role:<br>
<br>
create user unwashed with password 'notpassword';<br>
-- the difference between role and user is the "can login" right.  For me I was gonna grant them all login rights anyway.  You should be able to change the above to "create role" if you wanted to tighten it down.<br>

<br>
-- grant it select<br>
grant select on maintable to unwashed;<br>
<br>
-- if you use sequences, they need rights<br>
grant all on sequence maintable_id_seq to unwashed;<br>
<br>
-- func's need exec:<br>
grant execute on function update(userid integer) to unwashed;<br>
<br>
<br>
-- There might be other's I'm missing.<br>
-- Then create a new user in the unwashed group:<br>
<br>
create user bob with nocreaterole password 'notpassword' in role unwashed;<br>
<br>
Its simple to add/remove users now.  When you create new stuff, remember to grant the unwashed select rights. :-)<br clear="all"></blockquote></div><br></div><div class="gmail_extra">There is also ALTER DEFAULT PRIVILEGES at the database level and at the schema level. It is handy when you are adding stuff so that you don't have to explicitly grant privileges every time.<br>
</div><div class="gmail_extra"><br>ALTER DEFAULT PRIVILEGES IN SCHEMA some_schema<br>    GRANT SELECT ON TABLES<br>    TO unwashed;<br><br>-- <br>Richard Greenwood<br><a href="mailto:richard.greenwood@gmail.com">richard.greenwood@gmail.com</a><br>
<a href="http://www.greenwoodmap.com">www.greenwoodmap.com</a>
</div></div>