Одна половина решения chroot пользователям тюрьмы в их соответствующий DocumentRoots, когда они входят в систему для передачи файлов.
Это может быть достигнуто легко с SSH (SFTP/SCP) при помощи директивы ChrootDirectory.
Править:
Поскольку за вышеупомянутое defacto практика странно вниз проголосовали, я могу также обеспечить другую половину также.
Обычно единственный способ препятствовать тому, чтобы Apache писал сценарий модулей получить доступ к файлам на FS, что они не были должны, состоит в том, чтобы выполнить их через suEXEC как CGI. Который довольно ужасен, по-моему. Необходимо будет затем отдельно удостовериться, что каждый пользовательские файлы ограничивается только их собственным UID/GID т.е. umask 027
. Кроме того, существуют некоторые сторонние модули, которые сделают это в поле для Вас, таком как suPHP.
Некоторые примеры могли бы быть:
в значительной степени все: предоставьте все полномочия на демонстрации базы данных к демонстрации;
предоставьте некоторым простые выборы: предоставьте выбор на нечто таблицы к демонстрации;
больше, чем выбор: предоставьте выбор, вставьте, обновите, удалите на нечто таблицы к демонстрации;
Более подробная информация: http://www.postgresql.org/docs/8.3/static/sql-grant.html
grant all privileges on database demo to demo;
, но я все еще добираюсь ERROR: permission denied for relation whatever
. Я работаю 8.3.
– Topher Fangio
11 November 2009 в 17:06
Если все, что Вы хотите сделать, допустить, что пользователь 'демонстрирует' способность считать/писать/изменить базу данных 'демонстрация', Вы уже сделаны, потому что у владельца базы данных есть все необходимые полномочия по умолчанию.
При необходимости в более определенных полномочиях для больше, чем отдельный пользователь можно СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ новый пользователь и ПРЕДОСТАВИТЬ полномочия одному или нескольким объектам.
Для нелокального доступа к базе данных я настоятельно рекомендую корректировать Ваш pg_hba.conf
grant all on table_name to demo
.
– Topher Fangio
11 November 2009 в 16:42
psql -f myfile.sql -d demo -u demo
. Это должно выполнить команды как демонстрационного пользователя, который должен подразумевать, что созданные объекты будут принадлежать демонстрационному пользователю. – JosephL 11 November 2009 в 21:47.pgpass
, файл в Ваших пользователях размещает dirctory. Не уверенный, как это работало бы, поскольку Вы запускаете скрипт как корень, но соединяетесь как демонстрация с помощьюident
. Я попытался бы поместить файл в демонстрационный пользовательский корневой каталог. См. postgresql.org/docs/8.1/interactive/libpq-pgpass.html – JosephL 12 November 2009 в 03:12