从python运行代码具有不同于bash的权限?

第一步

$ sudo adduser foo_user $ mkdir /tmp/foo-user && chown foo_user:foo_user $_ $ sudo npm install -g less # Install Node.js and NPM for this $ echo ".box {color: red}" | sudo -u foo_user tee /tmp/foo-user/main.less 

python

 $ sudo -u foo_user python -c "from subprocess import check_output, STDOUT; print check_output(['/usr/local/bin/lessc', '/var/lib/nginx/body/main.less'], stderr=STDOUT, shell=True);" 
 Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python2.7/subprocess.py", line 573, in check_output raise CalledProcessError(retcode, cmd, output=output) subprocess.CalledProcessError: Command '['/usr/local/bin/lessc', '/tmp/foo-user/main.less']' returned non-zero exit status 1 

巴什

 $ sudo -u foo_user /usr/local/bin/lessc /tmp/foo-user/main.less >NULL && echo $? 
 0 

shell=True ,您必须使用字符串,而不是参数列表。 这可能会导致你的问题(这可能不是许可问题 – 事实上,你只知道lessc退出1而不是原因 )。

另外,在Python中,您运行该命令。 在Bash中,运行命令并将stdout重定向到一个名为NULL文件 (你的意思是/dev/null ?)。