如果执行权限并不自动意味着具有读取功能,那么Linux权限的目的是什么(例如111或333)(即用户可以执行,但无法读取文件)?
如果执行权限并不自动意味着具有读取功能,那么Linux权限的目的是什么(例如111或333)(即用户可以执行,但无法读取文件)?
Answers:
我玩过它,显然,执行权限并不意味着具有读取权限。二进制文件可以是可执行的,而不是可读的:
$ echo 'int main(){ puts("hello world"); }' > hw.c
$ make hw
$ ./hw
hello world
$ chmod 111 hw
$ ./hw
hello world
$ cat hw
/bin/cat: hw: Permission denied
我不能执行脚本,除非它们在以下位置都具有读取和执行权限位:
$ cat > hw.sh
#!/bin/bash
echo hello world from bash
^D
$ chmod +x ./hw.sh
$ ./hw.sh
hello world from bash
$ chmod 111 ./hw.sh
$ ./hw.sh
/bin/bash: ./hw.sh: Permission denied
/bin/bash hw.sh
,然后bash尝试打开hw.sh
以进行读取(并失败)。
显然,并非所有组合都是有用的,但是要采用您特别提到的组合……实际上,您不需要read
执行文件的execute
权限(只有权限),除非所涉及的文件是脚本(例如,shell脚本) (.sh
),perl脚本(.pl
)等)。普通的二进制文件只能在execute
获得许可的情况下执行。在* BSD-systmes上,多个可执行文件在execute
没有许可的情况下给出了许可read
,尤其是在“安全性重要”命令上-例如su
。
那么,为什么不给予用户read
-permission(仅execute
授予-permiton)呢?因为文件不能被用户读取,也不能被该用户复制!删除read
权限会阻止用户制作自己的可执行文件“个人”副本-他们以后可能会滥用(例如get SUID=root on
)。
并且没有write
-permission,可以防止文件被意外删除。
提醒你,不给也不read
-nor write
-permission车主是有点少见,但有时也可能是一个好主意,以防止甚至owner
从刚删除的文件。当然owner
-更不用说root
-可能总是会规避此类措施,如果不是采用其他方式,则只需通过chmod
文件许可即可。
owner
只是删除文件也是一个好主意。” —删除文件不需要任何类型的权限(读取,写入或执行)。
/proc/${PID}/maps
然后从中读取内存的相关部分,这样的方法难道不容易发生内存转储/proc/${PID}/mem
吗?还是在执行期间限制可执行文件的权限还限制了其在内存中相关部分的读取权限?(IMO似乎不太可能。)