我在 Linux 机器上以 root 身份登录。现在尝试执行test
C++ 的二进制文件,但会产生错误“权限被拒绝”。虽然我已经使用chmod +x test
.
谢谢
如果文件 test 位于单独的挂载点,并且该挂载点使用 noexec 标志挂载,则您将无法在其上执行任何二进制文件。
从安装手册页:
noexec Do not allow direct execution of any binaries on the mounted filesystem.
您可以使用以下命令查看挂载点的标志:
mount -l
试试ls -l /path/to/your/file
后面的命令chmod +x /path/to/your/file
。
之后,检查可执行位x是否存在,即查看将打印的第一个字符串,它应该类似于-rwxrwxr-x
.
如果您没有这三个,则chmodx
有问题。可能你不是root。
如果您有x
但无法执行程序,则问题出在您对程序的调用上。您应该尝试cd
进入程序所在的文件夹,然后像
./program_name
.
在你的代码之前有一个名为“test”的命令可能在你的路径中,这就是为什么你要输入“./test”而不是“test”,这可能会在/usr/bin/test中找到. (“哪个测试”可以在您的系统上找到)
我不知道为什么 /usr/bin/test 会因该错误而失败,除非您的测试软件采用参数并且您(在我的系统上)/usr/bin/test 给出了它无法执行的命令。
如果它不称为测试,也不是路径问题,你能发布一些代码和构建细节吗?
如果二进制文件test
位于目录 /dir1/dir2 中,请执行以下任一操作(使用绝对路径):
/dir1/dir2/test
或导航到包含程序的目录并使用./
前缀(又名相对路径)
cd /dir1/dir2
./test