如何在 Ubuntu 中使用 python 以非 root 用户身份运行 root 用户命令

安德鲁

我正在开发一个涉及运行一些 sudo 命令的 python 项目。在项目中,我必须运行,systemctl命令来获取正在运行的服务的状态。为此,我有以下代码:

cmd = "sudo service mongodb status > " + status_logs
subprocess.call(cmd, shell=True)
cmd = "grep \'" + search_tag + "\' " + status_logs
status_string = str(subprocess.check_output(cmd, shell=True))

start = status_string.index(":") + len(":")
end = status_string.index(')', start)
status = status_string[start:end]
status = status + ")"
status = status.replace(" ", "")

如果我运行上面的代码,sudo python3 app.py那么我会得到正确的响应active(running)inactive(dead)但是我需要在没有 sudo 的情况下运行代码 ie python3 app.py

在这种情况下,它会在终端中不断询问当前用户的密码。我怎样才能删除它并继续进行。请帮忙。谢谢。

/etc/sudoers 的内容

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin: /usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

@alani 对 OP 的评论很好,特别是我会尽量限制,这样你的程序问题就不会产生灾难性的后果。例如,如果您的程序将在 mongo_checkers 组下运行,这样的事情将使其仅检查状态:

%mongo_checkers ALL= NOPASSWD: /usr/sbin/service mongodb status

这应该是相对无害的。

[编辑:根据@alani 对此答案的评论,已指定service. 嗬!]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在以root权限开头的脚本中以非root用户身份运行命令?

如何以非root用户身份运行root别名?

如何在启动时以非root用户身份运行python脚本

如何在非root用户的cronjob中使用秘密工具?

如何从 Chef 食谱中以非 root 用户身份运行 `gpg`?

如何使此deploy / init以非root用户身份运行?

如何以非root用户身份运行docker image?

如何以非root用户身份启动运行级别3?

以非root用户身份运行docker作为root用户

以非root用户身份运行monit

以非root用户身份运行openvpn

以非root用户身份运行openvpn

非root用户可以root身份运行passwd命令,为什么不能更改root密码?

如何以非root用户身份使用Docker COPY?

允许用户以root用户身份运行命令

以非root用户身份使用AWS CodeBuild

创建非root用户后如何在命令提示符下以root用户身份注销

如何在Docker中的Ubuntu下以非root用户身份执行cron作业

root是否可以以非root用户身份执行命令?

如何在官方docker php映像上以非root用户身份运行composer

如何在 Fargate 上的 Amazon ECS 中以非 root 用户身份运行 docker 容器

以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

以root用户身份运行docker映像,以非root用户身份运行服务

当Apache以非root用户身份运行时,以root用户身份运行cronjobs

对root帐户使用非root用户配置

如何从非root用户运行docker容器?

以非root用户身份执行

如何使用ubuntu的UPSTART功能重新启动python脚本而不以root用户身份启动?

非 root 用户如何在特权端口上运行