Ответы:
Файл с -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.
С этими разрешениями только владелец файла может выполнить его.
Другие пользователи могут писать в него, но не выполнять его (так как выполнение в этом случае подразумевает возможность его чтения), но они могут писать в него как своего рода черный ящик:
user1:~$ cd /tmp
user1:/tmp$ echo "hostname" > testfile.sh
user1:/tmp$ chmod +x testfile.sh
user1:/tmp$ ./testfile.sh
server.example.com
user1:/tmp$ chmod 733 testfile.sh
user1:/tmp$ ls -l testfile.sh
-rwx-wx-wx 1 user1 user1 9 Jan 19 21:09 testfile.sh
user1:/tmp$ sudo su - user2
user2:~$ cd /tmp
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ cat testfile.sh
cat: testfile.sh: Permission denied
user2:/tmp$ echo 'echo hello' >> testfile.sh
user2:/tmp$ ./testfile.sh
./testfile.sh: Permission denied
user2:/tmp$ logout
user1:/tmp$ ./testfile.sh
server.example.com
hello
Конечно, любой файл может быть прочитан пользователем root.
Кроме того, системный загрузчик, управление памятью, swapper и т. Д .... будут читать файл с разрешением «x», иначе он не сможет быть выполнен.
Возможные дыры в раскрытии исполняемого содержимого могут быть файлом / proc для процесса, основными файлами или с помощью отладчика.
chmod
| chown
было выполнено