aar*_*nsw 145 upstart ubuntu setuid
让新贵工作更改其用户 ID 并以非特权用户身份运行脚本的规范方法是什么?
显然可以使用suor sudo,但这似乎很麻烦(并且会生成不必要的日志行)。
小智 110
使用 upstart v1.4,在配置文件中原生支持setuid和setgid。
小智 88
在 freenode 的#upstart 频道上询问,官方对此事的看法是:
Upstart 的未来版本将对此提供本机支持,但现在,您可以使用以下内容:
Run Code Online (Sandbox Code Playgroud)exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]
Jas*_*mbs 17
使用 start-stop-daemon 怎么样?
exec start-stop-daemon --start --chuid daemonuser --exec /bin/server_cmd
Run Code Online (Sandbox Code Playgroud)
从新贵食谱:
Debian 和 Ubuntu 系统的推荐方法是使用 helper 实用程序
start-stop-daemon。[…]start-stop-daemon不会对其启动的进程施加 PAM(“可插拔身份验证模块”)限制。
注意:start-stop-daemon在 RHEL 中不受支持。
小智 13
有几种方法可以做到这一点,所有的语义都略有不同,特别是与组成员资格有关:
setuidgid 会将您放入您指定的组中。
setuidgid会把你只在该组中,这样你就不能到属于你的成员,其他组的访问文件。setuidgid从daemontools的,安可和setuidgid从NOSH工具集都有一个-s(又名--supplementary)选项,这将让你在该组中,也把你所有的补充组为您指定的用户。使用newgrp一旦你成为少特权用户将添加一个组到您的groupset,而且还创建了一个新的子shell,使其成为棘手的脚本内使用。
start-stop-daemon 保留您的组成员资格,并且不仅是 setuid/setgid 还可以做很多事情。
chpst -u username:group1:group2:group3... commandname将让您准确指定要采用的组成员身份,但(在Ubuntu 中)它仅随runit包提供,这是upstart.
su -c commandname username获取用户名的所有组成员身份,就像 一样sudo -u username commandname,因此它们可能是最不令人惊讶的途径。
setuidgid从包中使用daemontools。
此处的文档:http : //cr.yp.to/daemontools/setuidgid.html
| 归档时间: |
|
| 查看次数: |
73829 次 |
| 最近记录: |