我在名为user1
的Ubunutu计算机上有一个用户需要设置为从代码中运行名为myScript.py
的脚本。
当我设置此用户时,
# At the top of myScript.py
uid = pwd.getpwnam('user1')[2]
os.setuid(uid)
我收到有关权限的投诉:
Failed to open configuration file: Permission denied
通常我会认为用户没有权限,但是当我运行以下内容时,用户可以正常运行脚本:
su user1
user1> python myScript.py
为什么用户在运行su
时具有权限,而不是在代码中设置时?还需要设置其他东西吗?
编辑: 这是相当多的代码,但我会尝试向您展示myScript.py正在做什么
uid = pwd.getpwnam('pirate_capture_2')[2]
os.setuid(uid)
# running ffmpeg command with pulse audio
cmd = '/usr/local/bin/ffmpeg -y -f pulse -ac 2 -i "default" -f x11grab -s "1024x768" -i "{0}" -r 30 -c:v libx264 -crf 10 -preset ultrafast -threads 3 /opt/steamy_rat/frames/{1}.mkv'.format(
x_display_name, str(job.get('id')))
# runs a subprocess using cmd
发生错误
W: [pulseaudio] core-util.c: Failed to open configuration file '/root/.config/pulse//daemon.conf': Permission denied
虽然当我使用su user1运行此脚本时,我没有收到此错误,并且每个标记都正常工作。