【问题标题】:Dynamically get username in Postinst script of .deb package在 .deb 包的 Postinst 脚本中动态获取用户名
【发布时间】:2019-05-15 16:09:03
【问题描述】:

我为更改所有者和文件权限编写了 Postinst 脚本:

chown -R $(whoami)  ~/Desktop/my_file.desktop
chmod 777 ~/Desktop/my_file.desktop

但安装后它什么也不做。

我真的不明白脚本的哪一部分是错误的。请告诉如何在 Postinst 脚本中动态获取用户名?

【问题讨论】:

    标签: linux bash ubuntu deb post-install


    【解决方案1】:

    包安装无条件地以root 运行。没有调用用户的概念;实际上,包安装可能会发生,例如在盒子上存在任何用户帐户之前。

    您实际上希望实现什么非常不清楚,但看起来您的软件包可能应该简单地安装一个脚本,然后在用户运行它时执行该任务。这也将方便地创建一个已经由当前用户拥有的文件,没有任何chown 诡计。

    即使用户存在,也不能保证他们的主目录中有 Desktop 目录,或者他们当前或曾经使用 GUI 登录。

    最后,无论您尝试做什么,chmod 777 都是错误并且危险的。您绝对不应该为每个人分配写入权限,对任何事情,永远。

    (好吧,有两三个与系统管理相关的晦涩场景,这实际上是必需且有用的;否则一开始在技术上应该是不可能的。)

    【讨论】:

    • 我已经完成了root。但是 Ubuntu 没有授予运行 .desktop 文件的权限。所以我在 post_install 脚本中写了“chown”。首先我是通过命令提示符完成的。
    • 再次,您没有使用正确的工具来完成这项工作。您的问题没有显示足够的细节来让我解释正确的工具是什么,但正如这个答案中所建议的那样,将文件创建放在/usr/bin/create_my_file_desktop 中并让用户在他们想要的时候运行它可能会更接近你真正需要什么。
    • 感谢您 - “最后,无论您尝试做什么,chmod 777 都是错误且危险的。”。但这只是为了目的。我真的没有这样做。但是谢谢你再次提醒我:)
    • 我只是想要 - 安装后通过 post_install 更改文件所有者
    • 是的,这很清楚,但是.deb 包不应该并且尝试并且实际上基本上不能在系统目录之外安装任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2014-11-10
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多