tro*_*813 17 permissions chmod
Linux权限如111或333(即用户可以执行,但不能读取文件)的目的是什么,如果执行能力不自动意味着具有读取能力?
PSk*_*cik 25
我玩过它,显然,exec 权限并不意味着读取权限。二进制文件可以在不可读的情况下执行:
$ 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
Run Code Online (Sandbox Code Playgroud)
我无法执行脚本,除非它们同时具有 read 和 exec 权限位:
$ 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
Run Code Online (Sandbox Code Playgroud)
小智 16
这对于目录是有意义的,例如,如果您将(秘密)可执行文件保存在特定目录中,然后允许用户在无法看到目录内容的情况下调用这些文件(但在您通知他们后知道特定文件在那里!)。与 111 相比,333 允许向/从这些目录写入/删除文件,而无法看到目录的内容。
显然,并非所有组合都那么有用,但以您特别提到的组合为例……您实际上不需要read
执行文件的execute
权限——只需要权限——除非有问题的文件是脚本(例如 shell-script) ( .sh
)、perl-script ( .pl
) 等)。普通的二进制文件只需要execute
许可就可以执行。在 *BSD-systmes 上,几个可执行文件在execute
未经许可的情况下给予许可read
,尤其是在“安全重要”命令上——例如su
.
那么为什么不给用户read
-permission (和只是execute
-permisson)?因为一个用户无法读取的文件,该用户也无法复制!删除read
权限,可以防止用户制作他们自己的可执行文件的“个人”副本——他们以后可能会滥用(例如 get SUID=root on
)。
并且没有write
权限,可以防止文件被意外删除。
提醒你,不给也不read
-nor write
-permission车主是有点少见,但有时也可能是一个好主意,以防止甚至owner
从刚删除的文件。当然owner
——更不用说root
——可能总是绕过这些措施,如果不是以其他方式,那么只需通过chmod
对文件的许可。
归档时间: |
|
查看次数: |
5992 次 |
最近记录: |