无需终端即可更改所有权和权限 - Python

Change ownership and permission without terminal - Python

我有一个在 glade 中制作的图形用户界面,但被困在一件事上。

我有一个更改所有权和权限的按钮;它工作正常,除了 root 拥有的文件夹和文件。

是否可以调用 root 权限来执行此命令 运行 而无需在终端中输入 root 密码?即要么在脚本中预定义它,要么激活密码的弹出提示并实现它。

以下代码示例:

def on_button_clicked(self, widget):
    path = {defined from combobox}
    os.chdir(path)

    uid = os.getuid()
    gid = os.getgid()

    for root, dirs, files in os.walk(path):
        for d in dirs:
            os.chown(os.path.join(root, d), uid, gid)
            os.chmod(os.path.join(root, d), 0o755)
        for f in files:
            os.chown(os.path.join(root, f), uid, gid)
            os.chmod(os.path.join(root, f), 0o755)

@intepidhero 因提供了一些有用的链接而获奖;第一个成功了!

您所要做的就是确保您的 user/group 在 sudoers 中,并将以下代码放在脚本的头部,然后嘿 presto ...您就是 运行 您的应用程序提升为 sudo!

import os
import sys

euid = os.geteuid()
if euid != 0:
    print "Script not started as root. Running sudo.."
    args = ['sudo', sys.executable] + sys.argv + [os.environ]
    # the next line replaces the currently-running process with the sudo
    os.execlpe('sudo', *args)

print 'Running. Your euid is', euid