CMake,运行“sudo install”的用户,现在如何将文件所有者更改为原始用户?

问题描述 投票:0回答:1

编写了一个CMakeList.txt文件。安装时,我将配置文件直接复制到用户主目录.application 隐藏文件夹中。

install(FILES etc/config.tsv DESTINATION ${USER_HIDDEN_DIR} PERMISSIONS OWNER_READ OWNER_WRITE)

现在,即使我可以复制文件找到原始用户的主目录,文件所有者仍然是 root:root 因为他使用 sudo 安装了它。这不是我想要的。

搜索我找到了更改文件读写权限的方法,但没有找到所有者本身。我该怎么做?

基本上我想运行安装后

chown user ~/.app/thefile.conf

注意我从这个 cmake 代码片段中找出了主人和他的家。

if($ENV{SUDO_USER})
    # If installed with sudo, use the home directory of the invoking user
    execute_process(
        COMMAND sh -c "eval echo ~$ENV{SUDO_USER}"
        OUTPUT_VARIABLE USER_HOME
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
else()
    # If not installed with sudo, use the current user's home directory
    execute_process(
        COMMAND sh -c "echo $HOME"
        OUTPUT_VARIABLE USER_HOME
        OUTPUT_STRIP_TRAILING_WHITESPACE
    )
endif()

linux cmake sudo chown
1个回答
0
投票

以下内容似乎对我有用。 将其添加到您的 CMakefile 中:

install(CODE "execute_process(COMMAND sh -c \"chown ${USER} ${USER_HOME}/path-to-my-file\" )")

你只需要弄清楚 USER 和 USER_HOME 即可。

© www.soinside.com 2019 - 2024. All rights reserved.