简体   繁体   中英

PHP exec sudo script not working despite having sudo rights

My php script:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


exec('sudo /path/to/script.sh');
?>

my visudo line

www-data        ALL=NOPASSWD: /path/to/script.sh

(I tripled checked every path)

If i remove the 'sudo' in the exec() it will execute (i put a touch aaa at the start, with sudo the file isn't even created so the script doesn't even begin to execute). The script has exec rights for everyone.

I can't manage to get any error output. I can't su into www-data to try to launch it manually with sudo (when I su I get "This account is currently not available. ", but I guess that's normal behavior).

  1. If your system has selinux or some other policy-based access control engine enabled, your web server process will be running under a constrained context which limits rights further. Verify whether you have selinux enabled.

  2. Provide the full path to sudo . While your shell may have it in its path, perhaps your web server does not.

1 -If you're working with RHEL/CentOS and the path is under the /root path you can't execute it.
2 - Check if the scrit have the 'x' flag (chmod +x /path/to/script.sh)
3 - Check if the user ww-data can execute the scrit with

sudo -u www-data script.sh

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM