Python中文
首页
教程
问答
标签
搜索
登录
注册
如何给芹菜足够的权限来运行根文件而不影响安全性?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>作为芹菜任务的一部分,我正在运行下面的代码</p> <pre><code>class HealthCheckIKEV2: async def report(self): try: client = RedisClient() proc1 = subprocess.Popen( ["sudo", "/usr/sbin/swanctl", "--list-sas"], stdout=subprocess.PIPE ) proc2 = subprocess.Popen( ["grep", "INSTALLED"], stdin=proc1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) proc3 = subprocess.Popen( ["wc", "-l"], stdin=proc2.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, ) proc1.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits. proc2.stdout.close() # Allow proc2 to receive a SIGPIPE if proc3 exits. out, err = proc3.communicate() info = { "users": out.rstrip(), "timestamp": datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"), } client.conn.hset(settings.REDIS_VPN_SUBDOMAIN, mapping=info) </code></pre> <p>但是芹菜失败,并显示以下错误消息:</p> <pre><code>Jun 13 08:46:42 de-vpn-1 sudo[2038]: celery : user NOT in sudoers ; TTY=unknown ; PWD=/home/admin/app ; USER=root ; COMMAND=/usr/sbin/swanctl --list-sas Jun 13 08:47:42 de-vpn-1 sudo[2045]: pam_unix(sudo:auth): conversation failed </code></pre> <p>这是因为在这一行中,子流程必须作为sudo运行才能执行<code>/usr/sbin/swanctl</code></p> <pre><code>proc1 = subprocess.Popen( ["sudo", "/usr/sbin/swanctl", "--list-sas"], stdout=subprocess.PIPE ) </code></pre> <p>我的选择是什么?芹菜文档说不要给芹菜用户root访问权。我能做些什么来坚持最佳实践并成功执行此任务</p> <p>我的一个想法是创建一个新组,并向该组添加<code>root</code>和<code>celery</code>用户。并将该文件的权限更改为该组。不过听起来有点老套。谢谢</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我只需在<code>/usr/sbin/swanctl</code>上设置<a href="https://en.wikipedia.org/wiki/Setuid" rel="nofollow noreferrer">setuid</a>标志,然后从芹菜中运行它,而不需要sudo</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
尝试将单元格与pythondocx合并
1 回答
尝试将卡的5个值传递给函数,但不起作用
9 回答
尝试将卷绑定到docker容器
6 回答
尝试将原始queryset转换为queryset时出错
1 回答
尝试将原始输入与函数一起使用
10 回答
尝试将参数传递给函数时,可以通过python中的“@app.route”
8 回答
尝试将变量mid脚本返回到我的模板
7 回答
尝试将变量从一个函数调用到另一个函数
1 回答
尝试将变量传递给一个名称与参数不同的函数是否更好?
1 回答
尝试将变量传递给函数内部的函数。Python
3 回答
尝试将变量作为参数传递
7 回答
尝试将变量作为命令
3 回答
尝试将变量旁边的数据从文本复制到csv时,python获取错误:
9 回答
尝试将变量输入到sql数据库中已创建的行中
8 回答
尝试将只有两个或更多重复元音的单词打印到文本文件中
9 回答
尝试将后缀(字符串)添加到列表中每个WebElement的末尾
8 回答
尝试将命令行输出保存到fi时出错
9 回答
尝试将唯一ASCII文件导入数据帧时出现分析错误
7 回答
尝试将回归程序从stata转换为python
1 回答
尝试将图像上的点投影到二维平面时打开CV通道
8 回答