exec()을 다른 사용자로 실행할 수 있습니까? (내 상자에서는 www- 데이터로 실행 됨). www-data 소유가 아닌 파일에 대한 액세스가 필요한 스크립트를 실행하고 싶습니다.exec를 다른 사용자로 실행
답변
필자는 몇 년 전에 직렬 포트와 통신하기 위해 몇 가지 PHP 스크립트가 필요한 비슷한 요구 사항을 가졌습니다. 첫 번째 직렬 포트는 일반적으로/dev/ttyS0이며 루트 및 그룹 다이얼 아웃에 있습니다.
제 초기 설정을 위해 아파치 사용자를 그룹 다이얼 아웃에 추가했습니다. PHP 스크립트는 문제없이 시리얼 포트와 직접 대화 할 수있었습니다. 그러나 한 번에 하나의 스크립트 인스턴스 만 직렬 포트를 열 수 있으므로이 솔루션은 작동하지 않습니다.
그런 다음 직렬 포트와 PHP 스크립트 사이에 레이어를 제공하는 데몬을 만들었습니다. PHP 스크립트는 명명 된 파이프를 통해 데몬과 대화를하고, 데몬은 요청을 포맷하고 직렬 포트로 전달합니다. 따라서 약간의 캐싱이 필요합니다.
그래서 www-data 또는 아파치 사용자가 무엇이든 그 파일을 소유 한 그룹에 그룹 실행 권한을 부여하거나 내가 가진 것처럼 프록시를 사용하십시오. 보안 문제가 있다면, 나는 후자와 함께 갈 것입니다.
서버를 실행하는 사용자를 변경할 수 있습니다. 이것은 Windows 버전의 apache (서비스로 실행되는 apache와 apache가 실행되는 사용자를 쉽게 구성 할 수 있음)를 사용하여 쉽게 수행 할 수 있습니다.
어떤 서버 플랫폼을 사용하십니까?
아니오, 직접적으로. 당신이 리눅스 머신에 있고 권한을 가지고 있다면, 파일에 setuid 비트를 설정할 수 있습니다.
웹 서버는 이유로 다른 사용자로 실행됩니다. 매우 중요한 보안 메커니즘이며이를 해결하기 위해 보안 취약점이 발생할 수 있습니다.
서버 구성에 액세스 할 수있는 경우 (Apache라고 가정) suPHP을 사용해보십시오. 에서 가상 호스트의 configuration 명시 적으로 PHP 스크립트가 실행되는 사용자 및 그룹을 설정할 수 있습니다
<VirtualHost 192.168.1.1:80>
...
suPHP_UserGroup user group
...
</VirtualHost>
이 설정은 --with-setid-mode=paranoid
옵션으로 내장 suPHP 구성에 사용할 수 있습니다.
사용자 ID를 변경하는 또 다른 방법은 적절한 특권이 요구되는 posix_setuid()
입니다. 즉, PHP 스크립트를 루트으로 실행하는 것입니다. 이것은 serios 보안 문제입니다.
- 1. 다른 사용자로 Services.msc 실행
- 2. FreeBSD에서 다른 사용자로 실행
- 3. 파이썬 스크립트를 다른 사용자로 실행
- 4. Windows에서 shell_exec를 다른 사용자로 실행
- 5. UNIX 명령을 Java에서 다른 사용자로 실행
- 6. 다른 사용자로 시작시 응용 프로그램 실행
- 7. Visual Studio에서 다른 사용자로 테스트 실행
- 8. IIS를 현재 사용자로 실행
- 9. 다른 사용자로 프로세스 열기
- 10. 다른 사용자로 로그인이 거부되었습니다.
- 11. p4 다른 사용자로 동기화
- 12. 특정 Magento 사용자로 외부 스크립트 실행
- 13. Ruby 블록을 특정 OS 사용자로 실행 하시겠습니까?
- 14. ASP.NET에서 다른 사용자로 프로세스 시작
- 15. Windows에서 다른 사용자로 SVN 체크인
- 16. 다른 사용자로 cron 작업 하시겠습니까?
- 17. 공유 지점에 다른 사용자로 로그인
- 18. hudson 작업 빌드에서 다른 사용자로 어떻게 변경합니까?
- 19. 루트 사용자로 C 프로그램을 프로그램 적으로 실행
- 20. R을 다른 사용자로 실행할 때의 그래픽 지원
- 21. EXEC를 사용한 EXEC
- 22. 가변 수의 인수로 exec를 호출합니까?
- 23. Windows에서의 조언 가장이지만 다른 사용자로 변경
- 24. CakePHP Facebook 플러그인이 다른 사용자로 로그인 했습니까?
- 25. PHP 액세스를 위해 다른 사용자로 afp 설치하기
- 26. Android에서 서비스를 다른 사용자로 실행하는 방법은 무엇입니까?
- 27. 로그인 사용자가 PHP 세션에서 다른 사용자로 전환
- 28. 루트 cronjob에서 다른 사용자로 명령을 실행하려면 어떻게해야합니까?
- 29. 스크립트 내에서 다른 사용자로 sudo하는 방법은 무엇입니까?
- 30. 다른 사용자로 변경할 때 환경 설정
우분투 루시드를 사용하고 있습니다. 보안 위험이 있기 때문에 아파치가 실행되는 사용자를 변경하고 싶지 않지만 www-data가 소유하지 않은 파일에 대한 액세스가 필요한 백엔드 앱을 만들었습니다. www 데이터와 파일의 소유자를 포함하는 그룹을 만드는 과정을 밟아가는 것은 어떨까요? – mrwooster
이 옵션은 작동 할 수있는 다른 옵션입니다. 아파치 사용자를 변경하는 것은 yozu가 루트와 같은 높은 수준의 권한을 가진 사용자를 지정하면 보안 상 위험 할 수 있습니다. – Thariama