
root_and_user.py
またはを使用して実行されるpythonというPythonスクリプトから管理者ユーザーアカウントにどのように切り替えますか?doas
sudo
#!/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_user
。sudo
または、doas
ファイルを使用してスクリプトを実行すると、そのファイルが作成されますが、グループに属しているにもかかわらず1.owned-by-admin-user
まだグループ2.owned-by-admin-user
に属します。私の目標はこれを達成し、私だけでなくチームにも属することです。どうすればいいですか?root
admin_user
1.owned-by-admin-user
2.owned-by-admin-user
admin_user
admin_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