linux - cmake 找不到 sudo

标签 linux cmake sudo

我正在尝试通过 sudo 运行一些测试,因为它们需要网络管理员权限,而且我不能使用 setcap,因为我们在无法在 setcap 可执行文件上运行的 valgrind 下运行其中的几个测试。由于某种原因,未找到 sudo。当从 bash 终端或 C 应用程序中的 system() 调用调用时,sudo 会按预期工作。

示例 CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)

enable_testing()

add_test(NAME dummy_test
    COMMAND sudo ls
)

输出:

$ make test
Running tests...
Test project /home/cmorgan/projects/test/build
    Start 1: dummy_test
Could not find executable sudo
Looked in the following places:
sudo
sudo
Release/sudo
Release/sudo
Debug/sudo
Debug/sudo
MinSizeRel/sudo
MinSizeRel/sudo
RelWithDebInfo/sudo
RelWithDebInfo/sudo
Deployment/sudo
Deployment/sudo
Development/sudo
Development/sudo
Unable to find executable: sudo
1/1 Test #1: dummy_test .......................***Not Run   0.00 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.00 sec

The following tests FAILED:
      1 - dummy_test (Not Run)
Errors while running CTest
make: *** [Makefile:73: test] Error 8

我尝试使用 sudo 的绝对路径,/usr/bin/sudo 遇到同样的问题。

这看起来可能与 sudo 是一个 setuid 应用程序有关,但我不确定具体如何进行。

最佳答案

我遇到了同样的问题,这是由于 sudo 二进制文件没有 read 权限造成的。如果你运行它,你可以,但是 cmake 试图变得聪明,因此失败了。解决方法:

sudo chmod +r /usr/bin/sudo

sudo 没有read 权限的系统示例是 Centos 6。

关于linux - cmake 找不到 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398592/

相关文章:

C++, clang : #including associated header with cpp does not compile

GNU Radio 教程的 cmake

linux - Linux/GTK 上存在哪些应用程序帮助系统(如 chm 文件)?

c++ - 如何使用ZeroMQ监听和解析特定端口上的UDP数据?

c++ - 每个文件的 seek_ptr 是唯一的吗?

c++ - 构建库 OSX 时找不到 'gflags/gflags.h'

macos - 为什么 sudo 在 macOS 终端中不起作用?

linux - 如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?

linux - 在命令链中输入 sudo 命令的密码

android - crtbegin.o 和 crtbegin_dynamic.o 是什么?