PHP로 작성된 웹 스크립트를 사용하여 장치와 통신합니다. 장치에는 루트 액세스가 필요합니다. 안전하고 최선의 방법으로 이를 수행하는 방법은 무엇입니까?
웹 애플리케이션에는 두 가지 모드가 있습니다. 하나는 사용자 모드이고 다른 하나는 관리자 모드입니다. 사용자 모드에서는 백그라운드 스크립트를 시스템으로 실행하고 대기열을 확인하여 이 문제를 해결할 수 있습니다. 그러나 관리 모드에서는 더 많은 권한을 가질 수 있습니다.대화형 대화디버깅 목적으로 장치와 함께 사용됩니다. 이 모드로 업데이트직접 연결더 좋아질 것입니다.
파일 시스템 ext3.
답변1
이를 위해 PHP를 사용하지 마십시오(또는 적어도 PHP만 사용). 아마도 가장 취약하고 손상된 웹 스크립팅 언어 구현일 것입니다.
질문을 세 부분으로 나눕니다.
프런트엔드 - 웹 페이지를 생성하는 PHP(Python, Ruby, Perl...) 코드입니다.
백엔드 - 쉘, Perl 스크립트, 장치 액세스를 위한 컴파일된 바이너리. 에서 실행하지 마십시오
root
. 이 작업에만 별도의 계정을 설정하고 필요한 경우 액세스를 허용하세요.chmod
또는setfacl
로 충분하지 않고 Linux를 사용하는 경우capabilities(7)
또는로 설정된 Linux 기능을 사용하십시오(맨 페이지 참조).setcap
capsh
프론트엔드와 백엔드 사이에 사용되는 통신 프로토콜 및 수단. 이상적으로는 프런트엔드가 백엔드에 쿼리할 수 있도록 최대한 제한해야 합니다. 필요에 따라 Unix 소켓이나 명명된 파이프를 통해 "장치에서 최대 1KB 읽기" 및 "이 7812B를 장치에 쓰기" 유형 메시지를 보내는 것만큼 간단할 수 있습니다(참고자료 참조
mkfifo
).