Надлежащий способ дать разрешения в PostgreSQL

Одна половина решения chroot пользователям тюрьмы в их соответствующий DocumentRoots, когда они входят в систему для передачи файлов.

Это может быть достигнуто легко с SSH (SFTP/SCP) при помощи директивы ChrootDirectory.

Править:

Поскольку за вышеупомянутое defacto практика странно вниз проголосовали, я могу также обеспечить другую половину также.

Обычно единственный способ препятствовать тому, чтобы Apache писал сценарий модулей получить доступ к файлам на FS, что они не были должны, состоит в том, чтобы выполнить их через suEXEC как CGI. Который довольно ужасен, по-моему. Необходимо будет затем отдельно удостовериться, что каждый пользовательские файлы ограничивается только их собственным UID/GID т.е. umask 027. Кроме того, существуют некоторые сторонние модули, которые сделают это в поле для Вас, таком как suPHP.

1
задан 11 November 2009 в 16:43
3 ответа

Можно ли попробовать

psql dbname username < filename.sql

Таким образом, Вы использовали бы

psql demo demo < myfile.sql

Я не уверен, куда Ваш sql файл идет, потому что Вы не указываете дб в своем сценарии.

1
ответ дан 3 December 2019 в 22:44
  • 1
    Обновленный код, чтобы показать, что это входит в демонстрационную базу данных. Имеет значение, какого пользователя я использую для импорта его? –  Topher Fangio 11 November 2009 в 16:44
  • 2
    Я думаю, что пользователь важен. Попробуйте psql -f myfile.sql -d demo -u demo. Это должно выполнить команды как демонстрационного пользователя, который должен подразумевать, что созданные объекты будут принадлежать демонстрационному пользователю. –  JosephL 11 November 2009 в 21:47
  • 3
    @JoesephL - Спасибо, I' ll дают ему попытку и комментарий. –  Topher Fangio 11 November 2009 в 23:22
  • 4
    @JoesephL - Спасибо, это работало! Теперь единственная проблема состоит в том, что это требует, чтобы я ввел пароль для каждого myfile.sql, который я импортирую (который является только 3 в данный момент, но it' s все еще большое взаимодействие с пользователем). Какая-либо идея, как изменить это? –  Topher Fangio 11 November 2009 в 23:30
  • 5
    Вы могли использовать .pgpass, файл в Ваших пользователях размещает dirctory. Не уверенный, как это работало бы, поскольку Вы запускаете скрипт как корень, но соединяетесь как демонстрация с помощью ident. Я попытался бы поместить файл в демонстрационный пользовательский корневой каталог. См. postgresql.org/docs/8.1/interactive/libpq-pgpass.html –  JosephL 12 November 2009 в 03:12

Некоторые примеры могли бы быть:

в значительной степени все: предоставьте все полномочия на демонстрации базы данных к демонстрации;

предоставьте некоторым простые выборы: предоставьте выбор на нечто таблицы к демонстрации;

больше, чем выбор: предоставьте выбор, вставьте, обновите, удалите на нечто таблицы к демонстрации;

Более подробная информация: http://www.postgresql.org/docs/8.3/static/sql-grant.html

1
ответ дан 3 December 2019 в 22:44
  • 1
    Спасибо, я думаю, что попробовал это, но I' ll попробовали еще раз и возвращаются для комментирования/выбирания ответа. –  Topher Fangio 11 November 2009 в 16:42
  • 2
    Я попробовал grant all privileges on database demo to demo;, но я все еще добираюсь ERROR: permission denied for relation whatever. Я работаю 8.3. –  Topher Fangio 11 November 2009 в 17:06
  • 3
    попробуйте как пост-ГРЭС (вместо Вашего суперпользователя) в случае, если Ваш суперпользователь isn' t, что Вы думаете, что это :) –  user6373 11 November 2009 в 18:25
  • 4
    @ironchef - Да, та мысль пришла в мою голову; предпринятый это, тем не менее та же проблема. –  Topher Fangio 11 November 2009 в 21:26

Если все, что Вы хотите сделать, допустить, что пользователь 'демонстрирует' способность считать/писать/изменить базу данных 'демонстрация', Вы уже сделаны, потому что у владельца базы данных есть все необходимые полномочия по умолчанию.

При необходимости в более определенных полномочиях для больше, чем отдельный пользователь можно СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ новый пользователь и ПРЕДОСТАВИТЬ полномочия одному или нескольким объектам.

Для нелокального доступа к базе данных я настоятельно рекомендую корректировать Ваш pg_hba.conf

0
ответ дан 3 December 2019 в 22:44
  • 1
    К сожалению, поскольку мой вопрос попытался указать, что я сделал, НЕ дает разрешения на демонстрационной таблице для демонстрационного пользователя. Я can' t делают простой избранный оператор на таблице, пока я не выполнился grant all on table_name to demo. –  Topher Fangio 11 November 2009 в 16:42

Теги

Похожие вопросы