Można przełączać się między uid Korzystanie os.seteuid()
. Różni się to od os.setuid()
tym, że możesz wrócić do uzyskania uprawnień roota, kiedy ich potrzebujesz.
Na przykład, uruchom następujące jako root:
import os
open('file1', 'wc')
# switch to userid 501
os.seteuid(501)
open('file2', 'wc')
# switch back to root
os.seteuid(0)
open('file3', 'wc')
Stwarza file1
i file3
jako root, ale file2
jako użytkownik z UID 501.
Jeśli chcesz określić, które użytkownik dzwoni skrypt, sudo
ustawia dwie zmienne środowiskowe:
SUDO_USER
SUDO_UID
odpowiednio użytkownikowi name i identyfikator użytkownika, który zadzwonił pod numer sudo
. Więc możesz użyć int(os.environ['SUDO_UID'])
do użycia z os.seteuid()
.
Jeśli korzystasz z 'sudo', można zawsze' chown' do właściciela '__FILE__' po ciebie Zrobione – slezica
@ uʍopǝpısdn Tak ... ale robienie takich rzeczy szybko staje się zbyt ostre, jeśli nie jesteś bardzo ostrożny. – thejh
Nie dostałem tego, przepraszam. To root, który tworzy wszystkie pliki (konsekwencja 'sudo'). Jak mogę pobrać identyfikator użytkownika, który uruchamia mój skrypt? –