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
네, 아이디입니다 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