Python3 ile root yetkisi almak

Kendi çapımda bir “dosya bulma”

programı yazmaya çalışıyorum.Sistemim

Linux Mint. Find komutu kullanabiliyorum ama zaman alıcı. Bunun yerine Locate komutunu kullanmak istiyorum ama, öncesinde
“sudo updatedb” ile dosya veritabanını güncellemek gerek, yani root olmak gerek. Net’de bazı öneriler var ama hepsi terminal kullanıyor, ben terminal olmadan, mesela “gparted” açılışta nasıl root parolası soruyorsa öyle yapmak istiyorum. Yardımcı olabilir misiniz?

:one: subprocess + pkexec Kullanmak

pkexec, GUI tabanlı root yetkisi isteme aracıdır. Python’dan şu şekilde kullanılabilir:

import subprocess

# Örnek: root olarak dosya yöneticisi açmak
try:
    subprocess.run(["pkexec", "nemo"])
except Exception as e:
    print("Hata:", e)

  • Bu komutu çalıştırınca Linux Mint bir parola penceresi açar. Kullanıcı kendi şifresini girer ve uygulama root yetkisiyle açılır.

  • Terminal açmanıza gerek yok; GUI şifre penceresi gelir.


:two: GUI Button ile Çalıştırmak

Python’da bir GUI uygulama yapıp butona tıklayınca root yetkisiyle işlem başlatmak mümkün. Örnek PyQt6 ile:

from PyQt6.QtWidgets import QApplication, QPushButton, QWidget
import subprocess
import sys

def run_as_root():
    subprocess.run(["pkexec", "gedit"])  # Root ile bir dosya düzenleyici aç

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Root Yetkisi Örneği")

button = QPushButton("Root ile Aç", window)
button.clicked.connect(run_as_root)
button.resize(150, 50)
window.resize(200, 100)
window.show()

sys.exit(app.exec())

  • Bu küçük program bir pencere açar ve “Root ile Aç” butonuna basınca şifre penceresi çıkar.

  • Terminal açmadan root yetkisi verilmiş olur.


:three: Önemli Notlar

  • Root yetkisi almak için kullanıcı sudo veya admin grubunda olmalı.

  • Terminal açmadan çalıştırmak için mutlaka pkexec veya gksudo (Mint’te eski) kullanılmalı.

  • Python script’in kendisi root olarak çalışmaz, sadece root yetkisi isteyen uygulamayı başlatır.

Kaynak: chatGPT.

Denemedim. Mint yüklü makine kullanmıyorum.

İki blok da çalışıyor. Yetki isteyen şifre paneli çıkıyor. (Fedora 43, XFCE4)

Eksik modülleri kurmak gerekebilir.(subprocess, PyQt6, vs.)

Denediğiniz için teşekkürler. Umarım soru sahibinin yada ihtiyaç duyan birinin işine yarar. İlk blok varsayılan sistem arayüzünü kullandığından sorun çıkarmayacağını düşünüyordum. İkincisinde ise Qt6 kullanımı olduğundan kütüphane ihtiyacı olacağını tahmin ettim. Farklı python guileri için örnekler çeşitlendirilebilir.

1 Beğeni

Çok, ama çok teşekkür ederim.
“gksudo” bende çalışmıyor ama "pkexec"çalıştı. Ellerinize sağlık.

1 Beğeni