[Gelistirici] sudoers dosyasi ve x2goserver paket kurulumu

Emre Erenoglu erenoglu at gmail.com
25 Haz 2010 Cum 19:17:16 EEST


Merhaba,

Uzaktan erisim icin kullanacagimizi dusundugum (bagimliligi olan NX paketi
review'da bekliyor) ve playground'umda network/remoteshell altinda bekleyen
x2goserver paketinde, programin duzgun calismasi icin kurulumdan sonra
/etc/sudoers dosyasina asagidaki satirin eklenmesi gerekiyor:

%users ALL=(ALL) NOPASSWD: /usr/bin/x2gopgwrapper

Bu sayede tum kullanicilar x2goclient kullanarak sisteme uzaktan
baglanabiliyorlar (SSH portu kullaniliyor). Istenirse x2goaccess gibi bir
grup yaratilip %users yerine bu da kullanilabilir sadece belli kullanicilara
izin vermek icin.

Bu satiri, diger dagitimlar, paket kurulumundan sonra kullaniciya bir mesaj
vererek kulaniciya birakiyorlar. "Kurulumdan sonra calistirmak icin sunu
bunu suraya ekleyin" seklinde.

Bizim pisi'de bu tip bir ozellik var mi bilmedigimden ve son kullanici dostu
bulmadigimdan, bu degisikligi paket kurulumunda otomatik olarak yapip,
kaldirildiginda geri alinacak sekilde bir package.py yazdim. Kod asagidaki
gibi:

http://svn.pardus.org.tr/pardus/playground/erenoglu/network/remoteshell/x2goserver/comar/package.py

#!/usr/bin/python

import os
import fileinput
import sys

x2goSudoersLine=r"%users ALL=(ALL) NOPASSWD: /usr/bin/x2gopgwrapper"

def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
                line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

def postInstall(fromVersion, fromRelease, toVersion, toRelease):

    # add database directory and create the session database
    if not os.path.exists("/var/db/x2go/x2go_sessions"):
        os.mkdir("/var/db/x2go")
        os.environ["PATH"] = "/usr/sbin:/usr/bin:/sbin:/bin"
        os.system("/usr/lib/x2go/script/x2gosqlite.sh")

    # add the necessary sudoers line. This is necessary to make users
be able to login through x2go
    f = open("/etc/sudoers", "a")
    f.write("# x2goserver needs this line to work correctly\n")
    f.write(x2goSudoersLine+"\n")
    f.close()

def postRemove():

    # remote the sudoers addition that we made
    replaceAll("/etc/sudoers", "# x2goserver needs this line to work
correctly\n", "")
    replaceAll("/etc/sudoers", x2goSudoersLine+"\n", "")


Bu metoduma ne dersiniz? Yanlis midir?  Onereceginiz baska bir yol var mi?

Tesekkurler,

-- 
Emre
-------------- sonraki bölüm --------------
Bir HTML eklentisi temizlendi...
URL: <http://liste.pardus.org.tr/gelistirici/attachments/20100625/e92397a5/attachment-0002.htm>


Gelistirici mesaj listesiyle ilgili daha fazla bilgi