2013-09-01 3 views
1

데이터를 데이터베이스에 게시하는 원격 서버에 프로그램이 있습니다. 이 프로그램은 제대로 작동하려면 루트 권한으로 실행해야합니다. 그리고 웹 페이지에서 실행을 시작해야합니다. 즉, 이벤트가 발생하면이 스크립트의 실행이 시작되어야합니다 (지금 버튼을 클릭하는 것으로 이벤트를 고려해야 함)웹 페이지에서 서버의 쉘 스크립트를 실행

나는 PHP 나 다른 서버 측 스크립팅 언어를 사용하여 수행 할 수 있지만 자바 스크립트를 사용하거나 AJAX, jquery 등의 다른 관련 기술을 사용합니다.

나는 보안에 대해 염려하여 이것이 내가 계획 한 것입니다.

키 쌍인 을 사용하여 서버로 ssh하고 루트로 제어하고 프로그램 실행을 시작하는 쉘 스크립트를 사용합니다.

내 웹 페이지에서 출력물을 구문 분석하거나 출력하고 싶지 않습니다. 스크립트를 시작하기 만하면됩니다.

사람이 제발 ..

감사합니다 좀 도와 수 있습니다!

+0

자바 스크립트 (jQuery 포함)는 클라이언트 측 기술입니다. 서버 측 시스템이 없어도 서버에서 아무 것도 할 수 없습니다. 어떤 형태의 AJAX 호출을 사용하거나 간단히 HTTP GET (또는 POST) 요청을 할 수 있습니다. Javascript –

답변

0

JavaScript는 TCP/IP 소켓을 지원하지 않으므로 은 JavaScript에서 순전히입니다. 그러나 AJAX 웹 소켓 (예 : WebShell 및 AnyTerm do)을 사용하여이 작업을 수행하고 서버가 로컬에서 세션을 처리하고 인증하도록 할 수 있습니다.

또 다른 옵션은 클라이언트 측에서 수행해야 할 모든 작업을 사용자 브라우저에서 실행하는 것입니다. 당연히이 애플릿은 터미널 쉘로 작동 할 수 있지만 필요에 따라 애플릿을 열어서 인증하고 스크립트를 실행 한 다음 스크립트가 확인을 다시 시작했는지 확인하는 작업을 매우 쉽게 수행 할 수 있습니다.

+0

ok를 사용하여 SSH에 연결할 수 없습니다. 이 단계를 단계별로 해결하려고합니다. 우선은 다음 내가 -i ~/스푸핑/id_rsa.pub 원격 호스트 하지만 나는 경우 ssh를 복사 - ID를 사용하여 원격 호스트에 내 공개 키를 복사 SSH-Keygen은을 사용하여 키 쌍을 생성 그 셸 스크립트를 사용하여 sudo su 또는 sudo -i 명령을 실행하려고하면 다음을 수행 할 수 없습니다. 저는 리눅스에서 프로그래밍을 처음 접했고 어떤 일이 벌어지는 지 모르겠습니다. 내 원격 컴퓨터는 나무 딸기 파이이며 루트 사용자는 사용할 수 없도록 설정되어 있으므로 root 권한으로 ssh를 사용할 수 없습니다. –

+0

좋아요, 문제 없습니다. 그들이 처음 시작할 때 아무도 전문가가 아니 었습니다. 그래서 기본적으로, 내가 말할 수있는 것부터, 사용자에게 수퍼 유저 권한을 부여하지 않은 것처럼 보입니다. RasPi에서 실행중인 Linux 버전은 무엇입니까? 우분투 또는 그 변형을 실행하고 있다면 'sudo add sudo'를 실행하여이를 해결할 수 있습니다. 본질적으로 사용자 USERNAME을 sudo 그룹에 추가하는 것입니다. 이렇게하면 수퍼 유저로 명령을 실행할 수있는 권한이 부여됩니다. – CRK

+0

또 다른 점은 원격 액세스가 루트에 대해 비활성화되어 있으므로 (위와 같이해야 함) SSH가 아닌 RasPi에서 직접 위의 단계를 완료해야합니다. 또한 root, sudo 및 admin 그룹의 권한을 추가로 수정하려면 visudo 명령을 사용하여 수퍼 유저 파일을 편집 할 수 있습니다. 건배! – CRK

0

root 권한으로 ssh로 로그인 할 수 없으므로 ssh로 일반 사용자로부터 호출 할 수있는 root 사용자로 실행되는 실행 가능 스크립트를 설정해야합니다. 이렇게하려면 다음을 수행

대한 Chown 루트 실행

을 chgrp 루트 실행

chmod를 4755 실행 보안상의 이유로 불행하게도

(어쨌든 리눅스에서) 쉘 스크립트를 할 수 없다 실행 그래서 당신은 필요 system() 호출을 많이 포함하는 짧은 C 프로그램을 작성하십시오. 이것을 컴파일하면 멀리 떨어져 있어야합니다. 물론 C 프로그램은

시스템 ("./ 실행 가능")처럼 간단 할 수 있습니다.

하지만 정규 서버에는 엄청난 보안 허점이 있습니다. C 프로그램이 대체를위한 매개 변수를 취하면 해당 프로그램의 유효성을 검사하거나 보안이 손상 될 수 있습니다. 적어도 매개 변수에 포함 된 ';'이 포함되어 있으면 아무 것도하지 않고 확인하고 종료하십시오.

관련 문제