我有一个简单的 Perl 脚本如下:
#!/usr/bin/perl
print "###################################\n";
但是当我尝试从命令行执行它时,我总是看到:
[root@testbox001 tmp]# ./def
-bash: ./def: Permission denied
脚本可执行:
-rwxr-xr-x 1 root root 88 Dec 22 01:42 def
还有 bash 和 shebang:
[root@testbox001 tmp]# ls -l /usr/bin/bash
-rwxr-xr-x. 1 root root 1150560 Jun 20 2022 /usr/bin/bash
[root@testbox001 tmp]# ls -l /usr/bin/perl
-rwxr-xr-x. 2 root root 12752 Jan 17 2023 /usr/bin/perl
[root@testbox001 tmp]#
原因是什么?
我只能显式运行它:
[root@testbox001 tmp]# /usr/bin/perl def
#########################################################
[root@testbox001 tmp]#
该程序位于
/tmp
卷上,安装该卷noexec
以帮助减少攻击。
$ 安装 | grep '在 /tmp ' /dev/sda3 on /tmp type ext4 (rw,nosuid,nodev,noexec,noatime,nodiratime,data=ordered)
这会阻止执行该卷上的程序。
ikegami@hostname:/tmp/ikegami$ ./a.pl
-bash: ./a.pl: Permission denied