우리 회사에는 모니터가 연결되지 않고 다른 방화벽 뒤에 Ubuntu 12.04를 실행하는 회사가 있습니다.
Teamviewer
이 서버의 로컬 웹사이트 방문자는 나(또는 다른 지원 관리자)에게 그래픽 액세스 권한을 제공하는 것과 같은 GUI 프로그램을 실행할 수 있어야 합니다 .
.gksu
sudoers
이를 달성하려면 어떻게 구성해야 합니까 ?
이 서버에서 실행되는 PHP 스크립트에서 어떻게 호출합니까?
물론 쉽게 ssh를 사용하거나 X 세션을 내 컴퓨터에 연결할 수 있지만 이와 같은 Teamviewer 로그인이 필요합니다. 이것이 모든 서버의 다양한 방화벽을 통과하는 가장 쉬운 방법이기 때문입니다.
답변1
면책조항: 저는 Teamviewer 제품에 대해 아무것도 모르지만 실행하려는 기존 x-windows 응용 프로그램처럼 취급하겠습니다.
GUI 응용 프로그램을 시작하려면 .xinitrc
또는 (일부 데스크탑 환경에서는) 사용을 고려하십시오.~/.config/autostart/
그런데... 프로그램을 대화형으로 실행하고 싶은 것 같나요? 즉, 요청 시 실행되기를 원하며 데스크탑 환경에서 실행되어야 합니다.
우선, www-data 사용자에게 sudoer를 통해 특별한 권한을 실제로 부여하지 않는 것이 좋습니다. 특히 공개 서비스가 있는 웹 서버에 이 사용자를 사용하는 경우에는 더욱 그렇습니다.
"sysadmin" 또는 이와 유사한 사용자를 생성하고 적절한 권한을 부여하는 것이 좋습니다.
그런 다음 PHP 스크립트가 /tmp/에 플래그 파일을 배치하고 다른 사용자가 해당 파일에 대해 작업하도록 하는 등 영향이 적은 작업을 수행하도록 합니다.
그래서 저는 다음과 같은 PHP 스크립트를 가지고 있습니다:
<?php
// Trigger for the team view launcher.
file_put_contents("/tmp/teamviewflag","1");
?>
그러면 다음과 같은 크론 작업을 갖게 됩니다.
* * * * * /home/sysadmin/.jobs/teamstarter.sh
(경고: 이 스크립트는 1분에 한 번만 실행됩니다. 따라서 최대 1분까지 기다려야 합니다. 이 스크립트를 반복해서 실행할 수 있습니다.)
그럼 나는/home/sysadmin/.jobs/teamstarter.sh
#!/bin/bash
if [ -f /tmp/teamviewflag ]
then
env DISPLAY=:1 XAUTHORITY=/home/sysadmin/.Xauthority /path/to/teamviewer
rm /tmp/teamviewflag
fi
이렇게 하면 PHP 스크립트에서 요청 시 실행됩니다. 거친 가장자리를 사포질해야 할 수도 있습니다.
- Teamviewer는 PHP 스크립트가 실행될 때마다 실행됩니다.
- Bash 스크립트의 4행에서는 사용자가
DISPLAY
번호를 알고 있다고 가정합니다. - "Hey Team Viewer가 실행 중입니다"라는 "잠금 파일"을 갖고 해당 파일의 존재 여부에 따라 스크립트를 실행할 수도 있습니다. 그리고 팀뷰어 종료 후 잠금파일을 후속조치하고 정리하는 작업이 있습니다.
다음은 루프에서 실행되는 위 스크립트의 예입니다.
#!/bin/bash
while :
do
if [ -f /tmp/teamviewflag ]
then
env DISPLAY=:1 XAUTHORITY=/home/sysadmin/.Xauthority /path/to/teamviewer
rm /tmp/teamviewflag
fi
# Sleep for a half second.
usleep 500000
done
다음과 같이 "적절하게" 실행할 수 있습니다(그래서 일정 우선순위가 낮음).
nice -n 19 /home/sysadmin/.jobs/teamstarter.sh
부팅 시 시작하려면 다음과 같이 cron 탭에 넣을 수 있습니다.
@reboot /home/sysadmin/.jobs/teamstarter.sh