shell_exec을 사용하여 루트로 명령을 실행하고 싶습니다. 이제는 위험하다는 것을 알고 있지만 믿어주세요. MOD_AUTH로 로그인하고이 페이지에 올 권한이 있어야합니다. 안전합니다. 어떻게해야합니까?shell_exec의 PHP sudo
답변
당신은이 작업을 수행하기 위해, phpseclib, a pure PHP SSH implementation의 최신 SVN 버전을 사용할 수에 저장 통과하지 않고 실행할 수 있습니다. 예.
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
$ssh->login('username', 'password');
$ssh->read('[prompt]');
$ssh->write("sudo command\n");
$ssh->read('Password:');
$ssh->write("Password\n");
echo $ssh->read('[prompt]');
?>
이 솔루션처럼 :), 나는 그것을 사용할 것입니다. –
Definitley는 권장하지 않습니다. 그러나 sudoers
파일을 편집하고 실행해야하는 명령에 대해 NOPASSWD
으로 실행중인 사용자 php를 추가 할 수 있습니다. 이 경우에만 sudo
에게 암호를 입력하지 않고 한 명령 만 허용합니다.
더 많은 명령이 필요한 경우 더 추가하십시오. Sudoers Configuration 포럼/게시물은 데비안 기반이지만 sudo는 엄격히 데비안이 아니며 sudo 설정 값을 넣으면 도움이 될 것입니다.
문제는 당신의 페이지 또는 안전하지 않은 것이 아니라, 문제는 PHP 페이지를 일부 sudo는 명령이 어떤 포함한 모든 페이지를 줄 것이다 실행할 수있는 기능을 제공하는 것은 어떤에 코드를 주입한다는 것입니다 서버의 모든 사이트에서 비보안 페이지. 그것은 일 필요가 단지 하나의 작업을하는 래퍼 스크립트를 만들기 위해 최선의 수 있습니다 말했다
, 다음
http ALL=(ALL) NOPASSWD:/user/local/bin/your_wrapper_script.sh
+1 래퍼. –
인수를 사용하지 않는 래퍼를 언급하는 것을 잊어 버렸습니다! 인수를 허용하지 않는 래퍼 스크립트를 만들면 공격 대상이 줄어 듭니다. 어떤 프로그램은 특정 주장으로 실행될 경우 나쁜 일을하도록 조작 될 수 있습니다. 래퍼를 사용하면 프로그램을보다 제어 된 방식으로 시작할 수 있습니다. – Caleb
루트 액세스가 필요한 모든 파일은/var/private-www /에 있으며 루트 액세스에서만 사용할 수 있습니다. sudo를 사용하게 할 수 있습니까? 'http ALL = (ALL) NOPASSWD :/var/private-www /'를 시도했지만 작동하지 않았습니다. –
나는 단지 구글 sudo는 같은 단지 하나의 명령에 HTTP 사용자 액세스 권한을 부여 php sudo shell_exec
에 대한 d를이는 1 경기로 와서 : 2010 년 16 ~ 12 월 RU를 점 linemedia에서
http://www.php.net/manual/en/function.shell-exec.php#101440
일리아 4시 36분
sudo는이 파일
system('echo "PASS" | sudo -u root -S COMMAND');
$aux=echo "admin-pass" | your command;
echo $aux;
/******************************* ******* ***** 예제 ************ ******************************
*/
는 펄 스크립트는my_perl_script.pl
라는 이름의 실행
$aux=echo "admin-pass" | sudo -u root -S perl /path-to-the-script/my-perl-script.pl;
echo $aux;
가장 좋은 방법은 그것을 할 :
$descriptorSpec = array(
0 => STDIN,
1 => STDOUT,
2 => STDERR,
);
if (posix_getuid() === 0) {
echo "Root\n";
} else {
echo "No root\n";
$command = 'sudo ' . PHP_BINARY . ' ' . implode(' ', $_SERVER['argv']);
$pipes = [];
$process = proc_open($command, $descriptorSpec, $pipes);
if (is_resource($process)) {
proc_close($process);
}
}
sudo 접두사가 붙은 동일한 명령을 다시 실행합니다.
- 1. rvmsudo vs sudo?
- 2. "sudo"로 사용 권한이 없음
- 3. Sudo 보석 업데이트 --dry-run?
- 4. shell_exec의 실행 시간을 제한하고 어떤 출력이 생성 되든지 잡아
- 5. Eclipse에서 앤트보기에서 "sudo ant"를 수행하는 방법
- 6. Vim : 선택 사항 작성시 sudo 오류가 발생했습니다.
- 7. sudo 사용자를 통해 쉘 스크립트를 실행하는 방법
- 8. bash 스크립트에서 단일 명령에 대한 sudo
- 9. MacPorts/Terminal :`인식 할 수없는 작업 "sudo"`
- 10. sudo port install cmake 문제 (MGTwitterEngine의 경우)
- 11. sudo 명령을 루트로 실행하는 방법은 무엇입니까?
- 12. 코코아와 Objective-C에서 sudo 명령 사용하기?
- 13. $ sudo gcc에 대한 검색 디렉토리 변경
- 14. 펄에서 Gnome의 sudo 대화 상자를 사용하려면 어떻게해야합니까?
- 15. sudo gem install pg가 작동하지 않습니다.
- 16. 실행 프로세스 sudo 권한을 부여하는 방법
- 17. 우분투에서만 sudo 사용자가 실행할 수있는 쉘 스크립트를 작성하십시오.
- 18. Capistrano의 sudo 작업에서 default_environment 변수가 설정되지 않도록하려면 어떻게해야합니까?
- 19. sudo 서버 액세스로 mysql 루트 패스를 복구 할 수 있습니까?
- 20. sudo gem을 제거 할 수 없습니다 (쓰기 권한이 없습니다)
- 21. Java 호출 Python 스크립트가 sudo 암호 프롬프트에서 멈춤
- 22. Free Pascal을 사용하여 Linux 명령에 sudo \ root 암호를 전달하는 방법
- 23. 허드슨의 sudo 명령으로 '조작이 허용되지 않음'을 피하는 법
- 24. bash 스크립트 및 rake 스크립트에서 rvm 및 sudo
- 25. 다른 위치에서 sudo make install을 두 번 실행할 수 있습니까?
- 26. sudo : port : 명령을 찾을 수 없습니다. MFC가 설치된 Ruby with
- 27. ffmpeg가 PHP 확장 모듈을 설치할 수 없습니다
- 28. Macports - php5-mysql 5.3.6에는 PHP 5.3.6이 필요하지만 PHP 5.2.17이 있어야합니다.
- 29. exec (php)를 사용하여 우분투를 종료하는 방법
- 30. Ubunutu에서 .php 스크립트를 실행하면 어떻게됩니까?
당신이 무엇을 하든지 결코 안전하지 않습니다. – halfdan