Pythonでユーザーとそのグループを切り替えるには?

Pythonでユーザーとそのグループを切り替えるには?

root_and_user.py またはを使用して実行されるpythonというPythonスクリプトから管理者ユーザーアカウントにどのように切り替えますか?doassudo

#!/usr/bin/env python3
from os import geteuid, seteuid
from subprocess import run
from sys import argv, exit

def touch(fname):
    with open(fname, 'a') as f:
        pass

#run this doas ./root_and_user.py 

if geteuid() == 0:
    touch("1.owned-by-root")
    touch("2.owned-by-root")
    seteuid(1000) 
    touch("1.owned-by-admin-user")
    touch("2.owned-by-admin-user")

touch()私は空のファイルを生成する独自のカスタム関数を作成しました。1000はい、IDですadmin_usersudoまたは、doasファイルを使用してスクリプトを実行すると、そのファイルが作成されますが、グループに属しているにもかかわらず1.owned-by-admin-userまだグループ2.owned-by-admin-userに属します。私の目標はこれを達成し、私だけでなくチームにも属することです。どうすればいいですか?rootadmin_user1.owned-by-admin-user2.owned-by-admin-useradmin_useradmin_user

ベストアンサー1

このos.chown()方法は、Pythonスクリプトで生成されたファイルのグループ所有権を変更するために使用できます。この試み:

#!/usr/bin/env python3
import os
from os import geteuid, seteuid
from subprocess import run
from sys import argv, exit

def touch(fname):
    with open(fname, 'a'):
        os.utime(fname, None)

#run this doas ./root_and_user.py 

if geteuid() == 0:
    touch("1.owned-by-root")
    touch("2.owned-by-root")
    seteuid(1000) 
    os.chown("1.owned-by-root", 1000, 1000) # change owner and group to admin_user
    os.chown("2.owned-by-root", 1000, 1000) # change owner and group to admin_user
    touch("1.owned-by-admin-user")
    touch("2.owned-by-admin-user")
    seteuid(0)
    os.chown("1.owned-by-admin-user", 1000, 1000) # change owner and group to admin_user
    os.chown("2.owned-by-dmin-user", 1000, 1000) # change owner and group to admin_user

おすすめ記事