Answers:
一个文件 -rwx-wx-wx
权限对所有者具有读/写/执行权限,对其他所有人具有写/执行(但不读)权限。
如果是脚本(通常是#!
第一行的文本文件),则其他人将无法执行它,因为执行脚本实际上会执行解释器,该解释器必须能够读取脚本。(解释器必须是二进制文件,而不是其他脚本。)(实际上,并非所有系统都如此;具有3.2.0 Linux内核的Ubuntu允许解释器本身成为解释器脚本。似乎存在限制。大约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