os.setuid无法正常工作

时间:2016-10-11 16:38:03

标签: python linux permissions user-permissions

我在名为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运行此脚本时,我没有收到此错误,并且每个标记都正常工作。

0 个答案:

没有答案