[ckan-dev] datastore: permission denied Schema public

User66 user66 at arcor.de
Wed Mar 27 08:46:12 UTC 2013


Hi,

unfortunately the error has not gone. It now complains that the readonlyuser has write permissions.

What I did:
- Switched postgresql locale to "en_US.UTF-8"
- Re-Initialized the complete postgresql databases
- Installed CKAN databases "ckandb" and "datastore"
- Did a "git pull" to update to latest master branch
- Set permissions regarding "Option 1: Paster command" - all commands succeed

I am using both DBs on the same server and "ckanuser" as write user for both.

The users in set_permissions.sql are:
#######################
-- name of the main CKAN database
\set maindb 'ckandb'
-- the name of the datastore database
\set datastoredb 'datastore'
-- username of the ckan postgres user
\set ckanuser "ckanuser"
-- username of the datastore user that can write
\set wuser "ckanuser"
-- username of the datastore user who has only read permissions
\set rouser "readonlyuser"
#######################

The error is:
#######################
(pyenv)ckan at www :~/pyenv/src/ckan> paster --plugin=ckan db init
2013-03-27 09:12:25,893 INFO [ckanext.datastore.plugin] Connection url postgresql://readonlyuser:xxx@localhost /datastore
Traceback (most recent call last):
 File "/opt/ckan/pyenv/bin/paster", line 8, in <module>
 load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
 File "/opt/ckan/pyenv/lib/python2.7/site-packages/paste/script/command.py", line 104, in run
 invoke(command, command_name, options, args[1:])
 File "/opt/ckan/pyenv/lib/python2.7/site-packages/paste/script/command.py", line 143, in invoke
 exit_code = runner.run(args)
 File "/opt/ckan/pyenv/lib/python2.7/site-packages/paste/script/command.py", line 238, in run
 result = self.command()
 File "/opt/ckan/pyenv/src/ckan/ckan/lib/cli.py", line 124, in command
 self._load_config()
 File "/opt/ckan/pyenv/src/ckan/ckan/lib/cli.py", line 86, in _load_config
 load_environment(conf.global_conf, conf.local_conf)
 File "/opt/ckan/pyenv/src/ckan/ckan/config/environment.py", line 349, in load_environment
 plugin.configure(config)
 File "/opt/ckan/pyenv/src/ckan/ckanext/datastore/plugin.py", line 66, in configure
 self._check_read_permissions()
 File "/opt/ckan/pyenv/src/ckan/ckanext/datastore/plugin.py", line 175, in _check_read_permissions
 raise Exception("We have write permissions on the read-only database.")
Exception: We have write permissions on the read-only database.
#######################

Output from "psql -l":
#######################
postgres at www :~> psql -l
 List of databases
 Name | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+----------+----------+-------------+-------------+-------------------------
 ckandb | ckanuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/ckanuser +
 | | | | | ckanuser=CTc/ckanuser
 datastore | ckanuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/ckanuser +
 | | | | | ckanuser=CTc/ckanuser +
 | | | | | readonlyuser=c/ckanuser
 postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
 | | | | | postgres=CTc/postgres
 template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
 | | | | | postgres=CTc/postgres
(5 rows)
#######################

It seems that the readonlyuser really still has write permissions, because I am also able to execute the "create table" command within a psql shell.
I am not really familiar with postgresql, but could it be that basic permission settings have changed in postgresql 9.2.3?

Any other hints?

Cheers
Ralf


----------------ursprüngliche Nachricht-----------------
Von: "User66" user66 at arcor.de 
An: ckan-dev at lists.okfn.org 
Datum: Tue, 26 Mar 2013 15:13:16 +0100
-------------------------------------------------
 
 
> Hi Dominik,
> 
> thanks for the tip.
> 
> After looking into the code your explanation sounds reasonable. I will
> switch the postgresql language to English. If you don't hear from me
> again, this issue is fixed (I can test it not before this evening).
> 
> Cheers
> Ralf
> 
> 
> Am 26.03.2013 11:06, schrieb Dominik Moritz:
>> Hallo Ralf,
>>
>> We expect a permission error because there should be a connection that is not 
>> allowed to write. However, the check only works if the error message is in 
>> english, otherwise an exception is raised. 
>>
>> There is an issue and a pull request at 
>> https://github.com/okfn/ckan/pull/642.
>>
>> Until this fix is in the release branch, you could set the language of your 
>> postgres installation to english. 
>>
>> Best wishes,
>> Dominik






More information about the ckan-dev mailing list