【问题标题】:Run executable file from a different user从不同的用户运行可执行文件
【发布时间】:2016-01-10 00:57:18
【问题描述】:

在创建 rpm 规范文件时,我在 %pre 部分创建了一个新用户和组。但是,出于安全目的,此新用户无权从 shell 登录。现在,当我安装 rpm 时,此新用户已成功创建。但是,我希望使用新创建的用户启动已安装的 rpm 服务。目前我只是写; 'filePath/file.exe file.cfg' 执行 file.exe 及其配置文件,即我的 'init.d' 文件中的 file.cfg 以启动服务。如何修改此命令以启动相同的服务,但使用我在安装 rpm 时创建的用户?基本上我想在我的 init.d 文件中执行程序,但是通过不同的用户执行,就像我需要的用户是超级用户时使用 sudo 一样。任何反馈都将受到高度赞赏。

【问题讨论】:

    标签: linux centos executable rpm init.d


    【解决方案1】:

    您安装 rpm 和运行服务的初始起点特权。例如,在我的 CentOS 6 机器上,我看到 /etc/passwd

    games:x:12:100:games:/usr/games:/sbin/nologin
    

    但以 root 身份运行,我可以这样做:

    $ sudo -u games /bin/sh
    sh-4.1$ echo $PATH
    /sbin:/bin:/usr/sbin:/usr/bin
    sh-4.1$ id
    uid=12(games) gid=100(users) groups=100(users) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    sh-4.1$ cd
    sh-4.1$ pwd
    /usr/games
    

    在您的服务脚本中,您可以使用sudo 以另一个用户身份运行给定进程(尽管快速检查同一台机器并不会显示此操作已完成)。

    @msuchy 指出runuser 可能更可取。我看到这是相对较新的(根据Ubuntu runuser command?,出现在util-linux 2.23 - lacking a date 使得发行说明不太有用......)。其文档about PAM 中的倾斜 cmets 听起来好像绕过了一些安全检查。也许有人对那个有更好的评论。

    【讨论】:

    • 从脚本中你不应该调用 sudo,而应该调用“runuser [options] [-] [user [argument...]]”
    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 2013-03-12
    • 2019-11-23
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多