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

时间:2016-11-04 17:18:04

标签: python linux glade

我有一个用林间空地做的gui,我被困在一件事上。

我有一个更改所有权和权限的按钮;除了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)

1 个答案:

答案 0 :(得分:0)

该奖项授予@intepidhero以获得一些有用的链接;第一个就行了!

您所需要做的就是确保您的用户/组处于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