Если файл имеет разрешения, -rwx-wx-wx
может ли он быть прочитан другими и групповыми пользователями, или он может быть только выполнен и записан? Есть ли способ прочитать исполняемый файл, выполнив его?
9
Если файл имеет разрешения, -rwx-wx-wx
может ли он быть прочитан другими и групповыми пользователями, или он может быть только выполнен и записан? Есть ли способ прочитать исполняемый файл, выполнив его?
Ответы:
Файл с
-rwx-wx-wx
разрешениями имеет права на чтение / запись / выполнение для владельца и права на запись / выполнение (но не чтение) для всех остальных.Если это скрипт (обычно текстовый файл с символом
#!
в первой строке), то он не может быть выполнен другими, потому что выполнение скрипта действительно выполняет интерпретатор, который должен уметь читать скрипт. (Интерпретатор должен быть двоичным, а не другим скриптом.) (На самом деле, это не так для всех систем; Ubuntu с ядром Linux версии 3.2.0 позволяет самому интерпретатору быть интерпретируемым скриптом. Кажется, существует ограничение около 4 уровней. Это вряд ли будет иметь отношение к этому вопросу.)Если это исполняемый двоичный файл, он может быть выполнен напрямую, но его содержимое не может быть прочитано. Это означает, например, что кто-то, кроме владельца, может запустить его как команду, но не может получить копию исполняемого файла.
Конечно, выполнение требует чтения, но оно читается ядром, а не пользователем. Возможно, вы сможете получить некоторую информацию о содержимом исполняемого файла, изучив память процесса во время его выполнения, но я сомневаюсь, что вы могли бы восстановить двоичный исполняемый файл. И если исполняемый файл имеет setuid, вы не можете проверить память процесса (если у вас нет доступа к учетной записи, под которой он выполняется).
Между прочим,
-rwx-wx-wx
это очень странный набор разрешений; он защищает файл от прочтения кем-либо, кроме владельца, но позволяет любому изменять его. Я не могу вспомнить случай, когда это имело бы смысл.источник
chmod 111 hello ; gdb ./hello
говорит./hello: Permission denied.
;r
говоритNo executable file specified.
С этими разрешениями только владелец файла может выполнить его.
Другие пользователи могут писать в него, но не выполнять его (так как выполнение в этом случае подразумевает возможность его чтения), но они могут писать в него как своего рода черный ящик:
источник
Простой ответ - нет : только
exec
системный вызов может читать файл, не требуя доступа для чтения (хотя он и требует выполнения ).open
СO_RDONLY
илиO_RDWR
ослабеет.источник
Конечно, любой файл может быть прочитан пользователем root.
Кроме того, системный загрузчик, управление памятью, swapper и т. Д .... будут читать файл с разрешением «x», иначе он не сможет быть выполнен.
Возможные дыры в раскрытии исполняемого содержимого могут быть файлом / proc для процесса, основными файлами или с помощью отладчика.
источник
chmod
|chown
было выполнено