Для непривилегированного процесса невозможно создать файл, который это может считать, но другие процессы, работающие как тот пользователь, не могут.
Доказательство: предположите, что процесс (непривилегированный) имеет открытый файл, и процесс B (работающий как тот же пользователь) хочет открыть файл также. Процесс B может звонить ptrace
взять под свой контроль процесс A. ptrace
системный вызов позволяет процессу B, выполняются, произвольный код в обрабатывают A, включая установление сокета Unix для обработки A и передачи открытого дескриптора файла по нему (передача дескриптора файла является функцией датаграммных сокетов Unix, которая, как имя указывает, позволяет отправителю отправлять дескриптор файла на получатель, после которого получатель имеет тот же файл, открытый в том же режиме).
Возможно, что, что Ваш предназначенный преподаватель должен открыть файл затем, удаляют его. Удаленный файл — технически, несвязанный файл — не могут быть открыты стандартными средствами: Никакой процесс (даже привилегированный) не может открыть его с open
системный вызов, с тех пор нет никакого имени, которое могло быть передано как аргумент. Но процесс (или процессы), который имеет открытый файл, могут продолжить работать с ним; файл будет только на самом деле удален, когда последний процесс, который имеет его открытый, умрет. Другие процессы могут все еще открыть дескриптор для файла при помощи ptrace
как описано выше.
В дополнение к ptrace
метод, на некоторых вариантах Unix включая Linux, может быть другими способами открыть файл, это открыто в другом процессе, через /proc
.
Вам загружали модуль цикла? Попробуйте lsmod | grep цикл и/или ls/dev/loop*
если это ничего не показывает, возможно, необходимо сделать modprobe цикл
modprobe loop
возвраты ничто,lsmod | grep loop
возвраты ничто; я пропускаю драйвер цикла? Вы могли указать на меня в направлении пакета, который мог предоставить эти вещи? – JohnLettman 17.02.2013, 04:41