Защитите файлы приложения в от доступа тем же пользователем

Конфетка является базирующимся об/мин и полностью записана в Python.

Конфетка или об/мин поддерживают базу данных (Berkley DB) обычно в "/var/lib/rpm".

Путь к базе данных является "/var/lib/rpm/Packages".

Посмотрите ниже:

[Об/мин root@ec092] # pwd

/var/lib/rpm

[Об/мин root@ec092] # Пакеты файла

Пакеты: Беркли DB (Хеш, версия 8, собственный порядок байтов)

когда Вы используете команды как rpm -qa это запрашивает Пакеты DB, и это поддерживает все атрибуты как список пакета, список файлов, версии пакета и так далее.

Кв. Ubuntu - добирается, записан в C++ и несколько сложен.

2
04.02.2012, 23:46
5 ответов

Если Вы устанавливаете полномочия на файлах к: 0600 или набор umask 077 для пользователя, запускающего приложение, файлы только будут доступны пользователем приложения и root.

1
27.01.2020, 22:15
  • 1
    Это не имеет никакого отношения к вопросу... –  Chris Down 07.02.2012, 16:46
  • 2
    , в котором Это выполнило, это - исходная форма. –  Karlson 07.02.2012, 17:00

В минувшие дни, и в системах без proc(5) смонтированный, процесс мог создать и открыть файл, unlink(2) это, и имеет допустимый, открытый дескриптор в анонимный файл. Никакой другой процесс не мог назвать, и поэтому не мог open(2) файл, даже другой процесс, выполненный тем же пользователем (или корень)

Однако, поскольку большинство систем Linux имеет /proc смонтированные, даже неназванные файлы сохраняют имя как /proc/2757/fd/4 который доступен для других процессов, выполненных тем же пользователем.

1
27.01.2020, 22:15

Я в настоящее время не могу думать о способе достигнуть того, что Вы хотите, не включая корень. Так: Свяжитесь со своим системным администратором и получите второй счет на Ваше приложение.

0
27.01.2020, 22:15
  • 1
    я не могу. Это - проект домашней работы и должно работать на ПК учителя, и он явно сказал, что приложение никогда не должно просить корневой доступ. –  Simone 04.02.2012, 00:01
  • 2
    я подозреваю Вас или неправильно понимаю присвоение или Вашего преподавателя, не знает, что запрос невозможен удовлетворить использующие стандартные средства. (Или, а тем более вероятно, преподаватель знает нестандартного, непортативного, метод делать эту работу при ограниченном обстоятельстве и хочет видеть, можно ли разрешить прием от разреженного воздуха (я видел больше мазохистских присвоений, таким образом, это возможно, но я думаю первые два предположения намного более вероятно). –  msw 06.02.2012, 16:44

Это не возможно непосредственно; однако, Вы могли создать программу (или обертка к той программе), который проверяет информацию о ее родителе.

0
27.01.2020, 22:15

Для непривилегированного процесса невозможно создать файл, который это может считать, но другие процессы, работающие как тот пользователь, не могут.

Доказательство: предположите, что процесс (непривилегированный) имеет открытый файл, и процесс B (работающий как тот же пользователь) хочет открыть файл также. Процесс B может звонить ptrace взять под свой контроль процесс A. ptrace системный вызов позволяет процессу B, выполняются, произвольный код в обрабатывают A, включая установление сокета Unix для обработки A и передачи открытого дескриптора файла по нему (передача дескриптора файла является функцией датаграммных сокетов Unix, которая, как имя указывает, позволяет отправителю отправлять дескриптор файла на получатель, после которого получатель имеет тот же файл, открытый в том же режиме).

Возможно, что, что Ваш предназначенный преподаватель должен открыть файл затем, удаляют его. Удаленный файл — технически, несвязанный файл — не могут быть открыты стандартными средствами: Никакой процесс (даже привилегированный) не может открыть его с open системный вызов, с тех пор нет никакого имени, которое могло быть передано как аргумент. Но процесс (или процессы), который имеет открытый файл, могут продолжить работать с ним; файл будет только на самом деле удален, когда последний процесс, который имеет его открытый, умрет. Другие процессы могут все еще открыть дескриптор для файла при помощи ptrace как описано выше.

В дополнение к ptrace метод, на некоторых вариантах Unix включая Linux, может быть другими способами открыть файл, это открыто в другом процессе, через /proc.

0
27.01.2020, 22:15

Теги

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