$ 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
$ 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
With shell=True, you must use a string, not a list of arguments. This is likely causing your problems (which may not be permission problems — in fact, you only know that lessc exits with 1 and not the reason for it).
Also, in Python, you run the command. In Bash, you run the command and redirect stdout to a file named NULL (did you mean /dev/null?).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With