Linux에서 누구나 종료할 수 있는 프로세스를 생성하는 방법이 있습니까?

Linux에서 누구나 종료할 수 있는 프로세스를 생성하는 방법이 있습니까?

예를 들어, Ubuntu 서버에서 비밀리에 백그라운드에서 프로세스를 실행하고 싶지만 나를 제외한 다른 사람이 서버에 로그인할 때마다 해당 사용자가 프로세스를 종료해야 합니다. 이런 프로세스를 만드는 것이 가능합니까? (계정이 있고 sudo수정할 수 있습니다 /etc/bash.bashrc.)

감사해요!

답변1

다음 내용은 다양한 방식으로 시스템 보안을 손상시킬 수 있습니다.

해당 프로세스를 종료하는 스크립트를 작성하십시오(프로세스 P라고 부르겠습니다). 그런 다음 모든 사용자에게 sudoers에서 이 스크립트를 실행할 수 있는 권한을 부여하십시오. 마지막으로 sudo into 를 사용하여 이 스크립트에 적합한 호출을 추가합니다 /etc/bashrc.

예를 들어 프로세스가 시작되었음을 알고 있고 /usr/local/sbin/myproc누군가 로그인하는 즉시 모든 프로세스를 종료하려고 한다고 가정합니다. 따라서 간단한 grep 및 kill 전략을 사용하여 종료할 것입니다.

따라서 먼저 다음을 입력하십시오 /usr/local/sbin/killmyprocs.

#!/bin/sh

ps auxw|grep [m]yproc|awk '{ print $2 }'|xargs kill -TERM > /dev/null 2>&1

# end of file.

실제로 이것을 진행하고 구현한다면 약간 더 정교한 것을 원할 것입니다. 따라서 적절한 신호를 포착하고 일반적으로 안전한 방식으로 작업을 수행하는 스크립트를 작성하십시오.

/etc/sudoers두 번째로 다음 을 추가하여 모든 사용자에게 이 스크립트를 실행할 수 있는 권한을 부여하십시오 .

ALL ALL = (root) NOPASSWD: /usr/local/sbin/killmyprocs

세 번째이자 마지막 단계는 다음에서 스크립트에 sudo 호출을 추가하는 것입니다 /etc/bashrc.

[ "`id -n -u`" != "<my_username>" ] && sudo /usr/local/sbin/killmyprocs

직접 로그인할 때 "비밀" 프로세스가 종료되는 것을 방지하려면 자신의 계정으로 바꾸십시오.

요약하자면: 1) 출력은 생성하지 않지만 종료하려는 프로세스를 종료하는 스크립트를 생성합니다. 2) /etc/sudoers시스템의 모든 사용자가 해당 스크립트를 루트로 실행할 수 있도록 적절한 항목을 추가합니다. 3) 다음에 대한 호출을 추가합니다. sudo를 통해 /etc/bashrc(또는 /etc/profile) 스크립트를 실행하세요.

주의 사항: /etc/bashrc(또는 /etc/profile그 문제에 대해서는) 대화형 쉘에 대해서만 소스를 얻으십시오. 이는 사용자가 ssh yourhost 'ps auxw'를 수행하고 프로세스 테이블에서 프로세스를 찾는 것이 다소 쉽다는 것을 의미합니다. 쉘 초기화 파일을 참조하지 않기 때문에 위에 소개된 메커니즘으로 프로세스가 종료되지 않습니다. 'sshd_config'를 사용하여 이를 해결할 수 있는 방법이 있지만 ForceCommand이는 독자의 연습용으로 남겨 둡니다.

결론적으로 나는 이것이 보안에 명백한 영향을 미친다는 점을 다시 한 번 상기시키고 싶습니다. 이것은 또한 완전한 액세스 권한이 없는 시스템을 백도어하려는 것처럼 들리지만 여기서는 실제로 그것이 내 관심사가 아닙니다(수퍼유저에게 이러한 질문을 해야 한다면 어쨌든 곧 잡힐 것입니다). .

답변2

"해당 사용자가 프로세스를 종료해야 합니다"는 무슨 뜻인가요?

A) 사용자가 자신이 소유하지 않은 프로세스를 종료하기를 원하십니까?

프로세스를 종료하는 스크립트를 만든 다음 setuid를 설정합니다 chmod u+s(무엇을 하고 있는지 알지 못한다면 이는 큰 보안 허점이 될 수 있습니다).

또는

B) 프로세스가 사용자 로그인을 알리고 스스로 종료되기를 원하십니까?

글쎄, 그게 당신이 할 일입니다.

관련 정보