代码之家  ›  专栏  ›  技术社区  ›  CDR

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

  •  0
  • CDR  · 技术社区  · 1 年前

    编写了一个CMakeList.txt文件。在安装时,我将配置文件直接复制到用户家中。应用程序隐藏文件夹。

    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()
    
    
    0 回复  |  直到 1 年前