특정 작업을 다른 사용자가 소유 한 다른 특정 bash 스크립트에 위임하는 root (cron)로 실행되는 bash 백업 스크립트가 있습니다. 루트로 수행 할 (간체 예를 들어, 원칙이며, 몇 가지가있다, 다른 작업은 적절한 환경과 사용자 (오라클에 위임 아마존, ...)다른 사용자로 변경할 때 환경 설정
mkdir -p /tmp/backup$NAME
su - oracle -c "~/.backups/export-test.sh"
tar cf /tmp/backup/$NOW.tar /tmp/backup$NAME
su - amazon upload_to_amazon.sh /tmp/backup/$NOW.tar
자체로 다음 몇 가지 작업을 수행이 스크립트 oracle 사용자 : 내가 파이썬에서이 동작을 모방 할 때
이mkdir -p $TMP_LOCATION
cd ~/.backups
exp $TMP_LOCATION/$NAME-$NOW
나는 다음과 같은 SU를 사용하는 경우 배쉬에서
name = "oracle"
# part run as root
os.makedirs(tmp_backup + name)
os.setegid(pwd.getpwnam(name)[3])
os.seteuid(pwd.getpwnam(name)[2])
# part run as oracle
os.makedirs(tmp_location)
os.chdir(os.path.expanduser("~{user}/.backups".format(user=name)))
subprocess.check_call(["exp",
"os.path.join(tmp_location, name+'-'+now)"
])
(루트로서 크론에서 시작)를 내놓았다 -하는 실제 새 쉘이 호출되고 해당 사용자의 모든 환경 변수가 설정됩니다. 파이썬 스크립트에서 어떻게 향상시킬 수 있습니까? 내가 따를 수있는 표준 요리법이 있습니까? 환경 변수, umask를 생각 중입니다 ...
환경이 중요 할 수있는 경우 Solaris 환경입니다. 해당 사용자의
(1), 당신은 하루 종일 서브 프로세스로의 .profile 실행 할 수 있으며 부모의 환경을 수정하지 않습니다 - 이것은 실제로 선택 사항이 아닙니다. (3)이 더 좋지만, 오라클의 환경 변수가 아마존에 의해 덮어 쓰여질 수있는 잠재적 인 문제가 있습니다. – bstpierre
(3) 사용자 환경의 분리를 제공하지 않습니다. 오라클 부분을 실행할 때 아마존 키도 환경에 있습니다. – Joram
@ 조램 : 그래서? 그게 무슨 문제 야? –