즉, "가상" 쉘입니다. (SSH) 로그인 후 사용자 감옥 처리 중

즉, "가상" 쉘입니다. (SSH) 로그인 후 사용자 감옥 처리 중

SSH를 통해 bash 쉘에 시스템에 로그인할 수 있는 임시 사용자가 있다고 가정해 보겠습니다. 또한 다양한 명령과 기타 사용자 입력을 받아들이고 이를 기반으로 작업을 수행하는 프로세스 역할을 하는 PHP(여기서 해당 언어는 관련이 없지만) 스크립트(본질적으로 "쉘과 유사한" 스크립트)가 있습니다.

이제 내가 하고 싶은 것은 위의 PHP 스크립트에서 사용자를 잠그는 것입니다. 사용자가 로그인하자마자 실행하십시오(이 부분은 .bashrc를 통해 쉽습니다). 또한 스크립트 실행이 끝나면 사용자가 자동으로 ssh 세션에서 bash를 "쫓아내"므로 bash가 더 이상 작업을 수행할 수 없도록 해야 합니다. bash 자체를 통해 무엇이든 할 수 있으며 PHP 스크립트에서 제공하는 기능으로 제한됩니다.

가능합니까? 그렇다면 어떻게 해야 할까요?

고쳐 쓰다:지금까지의 답변에 따르면 내 스크립트와 SSH를 통해 로그인한 사용자 간에 bash를 사용하기 위한 요구 사항은 없습니다. 처음에는 이것이 필요한 것 같았습니다. SSH 로그인 후 사용자가 내 스크립트로 직접 이동하도록 강제하는 방법은 환영받는 답변입니다.

답변1

.ssh/authorized_keys업데이트된 정보를 기반으로 개인/공개 키 쌍을 만들고 이를 파일 내부에 설정하여 script.php 파일만 실행하도록 해야 합니다 . .bashrc특히 초기화 환경에 필요하므로 보호를 위해 이에 의존해서는 안 됩니다 .

답변2

관련 사용자의 쉘을 해당 줄의 마지막 필드에서 원하는 대로 변경할 수 있습니다 /etc/passwd. 예를 들면 다음과 같습니다.

specialuser:x:12345:123::/home/specialuser:/usr/bin/restricted_script.php

적절한 해시 폭발을 포함하면(예: #!/usr/bin/php스크립트의 첫 번째 줄에) 즉시 작동합니다. 보안상의 이유로 사용자가 쓸 수 있는 디렉터리에 스크립트를 넣지 않는 것이 좋습니다.

답변3

가장 쉬운 방법은 이와 같은 것을 .bashrc에 넣는 것입니다.

php script.php
exit

script.php를 실행한 후 쉘은 세션을 종료합니다.

그러나 수행해야 할 작업과 필요한 보안 수준을 정확히 말하기는 어렵습니다.

관련 정보