답변:
pedantic하기 위해서는 ctrl + c가 아니지만 SIGHUP
(ctrl + d에 더 가까운) 앱을 죽입니다.
본질적으로 사용자 쉘에 원하는 것을 넣을 수 있습니다 /etc/passwd
. 사용자 passwd 행의 기본값 (아마도 /bin/bash
)을 다른 프로그램 으로 바꾸십시오 . 해당 프로그램은 /usr/bin/tail_log_file
다음 과 같은 스크립트가 될 수 있습니다 (예 : umode 0755의 root : root 소유).
#!/bin/rbash
tail -f /path/to/logfile
rbash 이외의 일부 인터프리터를 사용할 수 있지만 이러한 경우 제한된 쉘을 사용하는 것이 좋습니다.
그것에 대해 매우 놀랍도록 스크립트 경로를에 추가해야 /etc/shells
하지만 일반적으로 어쨌든 작동합니다.
또한 사용자는 스크립트를 백그라운드에 넣거나 일부 옵션 ( ssh username@host bash
)을 사용 하여 쉘을 얻을 수 있음을 명심하십시오 . 이러한 방식으로 사용자를 제한하려면 올바른 파일 시스템 권한이 유일한 해결책입니다.
/etc/shells
쉘에 다른 것을 가진 사용자가 쉘을 이것으로 설정할 수 있도록 하기 위해 무언가를 추가하고 싶은 유일한 이유 는; 수퍼 유저 ( root
)는 항상 누군가의 셸을 원하는 것으로 변경할 수 있습니다.
/etc/shells
사용자가 자신의 쉘을 변경할 수 있도록 스크립트를 추가하는 것은 보안 누출입니다 ( /usr/bin/tail_log_file
따라서 "제한되지 않은 쉘"로 간주 되기 때문에 )!
공개 키 인증을 사용하여 로그인 할 때 선택한 명령을 실행하도록 ssh를 구성 할 수 있습니다. 이렇게하려면 키 쌍을 생성하십시오.
djs@sardinia:~$ ssh-keygen -f restricted-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in restricted-key.
Your public key has been saved in restricted-key.pub.
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia
[...]
restricted-key.pub
사용자 ~/.ssh/authorized_keys
파일 에 넣는 데 적합한 행을 포함 합니다.
ssh-rsa AAAA...UDz47Nl djs@sardinia
그러나 이것에 명령을 추가 할 수 있으며 ssh는 키로 로그인 할 때 해당 명령을 실행합니다.
command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia
그런 다음 사용자는를 사용하여 머신에 ssh 할 수 있습니다 ssh -i restricted-key
.